两种颜色的边框

DrA*_*oel 92 css border

客户想要两个彩色边框来进行浮雕外观.我可以在一个元素上执行此操作吗?我希望避免使用单独的边框堆叠两个DOM元素.

Wil*_*and 137

是的:使用该outline属性; 它充当边界之外的第二个边界.当心,它可以通过边距,填充和阴影以不稳定的方式进行交互.在某些浏览器中,您可能还必须使用特定于浏览器的前缀; 为了确保它能够获得它:-webkit-outline等等(尽管WebKit特别不需要这样).

这对于你想要抛弃某些浏览器的轮廓的情况也很有用(例如,如果你想要将轮廓与阴影结合在一起;在WebKit中,轮廓在阴影内;在FireFox中它是在外面,所以-moz-outline: 0有助于确保你没有在你美丽的CSS阴影周围找到一条粗糙的线条.

.someclass {
  border: 1px solid blue;
  outline: 1px solid darkblue;
}
Run Code Online (Sandbox Code Playgroud)

编辑:有些人评论说,outlineIE <8并不是很好.虽然这是真的; 支持IE <8真的不是你应该做的事情.

  • +1不支持IE 7,而您的网站应始终工作并在IE 7中看起来相当不错,不需要全面支持.特别是如果它只是一个双色边框.我个人使用盒子阴影和其他"高级"功能.IE7看不到盒子阴影,......大不了.没有理由使用不太适合,过于复杂甚至过时的解决方案,只是为了解决IE7的怪癖. (156认同)
  • -1"支持IE <8真的不是你应该做的事情".不支持IE6可能没问题.但不支持IE7是荒谬的,没有非技术受众的网站可以负担得起 (27认同)
  • 需要注意的是,"轮廓"的功能不如"边界".特别是,[W3C说](http://www.w3.org/TR/CSS21/ui.html#propdef-outline):"注意.各方面的轮廓是相同的.与边界相反,**没有'outline-top'或'outline-left'属性**." _(强调我的.)_ (11认同)
  • `outline`自CSS2以来一直存在. (6认同)
  • 此外,出于良好的可访问性原因,请参阅此参考资料,不要出于设计目的而破解outline属性:http://www.outlinenone.com/ (2认同)
  • 现在和将来,“轮廓”与“边界半径”不兼容,请更新答案 (2认同)

rki*_*gon 65

这很有可能.它只需要一点CSS技巧!

的jsfiddle

div.border {
  border: 1px solid #000;
  position: relative;
}

div.border:before {
  position: absolute;
  display: block;
  content: '';
  border: 1px solid red;
  height: 100%;
  width: 100%;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)
<div class="border">Hi I have two border colors<br />I am also Fluid</div>
Run Code Online (Sandbox Code Playgroud)

那是你在找什么?


liv*_*ter 33

另一种方法是使用box-shadow:

#mybox {
box-shadow:
  0 0 0 1px #CCC,
  0 0 0 2px #888,
  0 0 0 3px #444,
  0 0 0 4px #000;
-moz-box-shadow:
  0 0 0 1px #CCC,
  0 0 0 2px #888,
  0 0 0 3px #444,
  0 0 0 4px #000;
-webkit-shadow:
  0 0 0 1px #CCC,
  0 0 0 2px #888,
  0 0 0 3px #444,
  0 0 0 4px #000;
}

<div id="mybox">ABC</div>
Run Code Online (Sandbox Code Playgroud)

见这里的例子.


Joe*_*ier 18

您是否尝试过CSS规范中可用的不同边框样式?已经有两种边框样式可以满足您的需求:

border-style: ridge;
Run Code Online (Sandbox Code Playgroud)

要么

border-style: groove;
Run Code Online (Sandbox Code Playgroud)


小智 14

大纲很好,但只有当你想要边界时.

让我们说如果你想只在底部或顶部制作它你可以使用

<style>

  #border-top {
  border-top: 1px solid  #ccc;
  box-shadow: inset 0 1px 0 #fff;
}
</style>

<p id="border-top">This is my content</p>
Run Code Online (Sandbox Code Playgroud)

对于底部:

<style>

      #border-bottom {
      border-top: 1px solid  #ccc;
      box-shadow: 0 1px 0 #fff;
    }
</style>

    <p id="border-bottom">This is my content</p>
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助.


小智 6

而不是使用不受支持和有问题的大纲只是使用

  • 内边框的背景颜色+填充
  • 外部的正常边界.

例:

HTML:

<img src="http://cdn3.thumbs.common.smcloud.net/common/8/6/s/863444wpPN.jpg/r-0,500-n-863444wpPN.jpg" alt="malkovich" />
Run Code Online (Sandbox Code Playgroud)

CSS:

img {
    padding: 1px;
    background: yellow;
    border:1px solid black;
}
Run Code Online (Sandbox Code Playgroud)

测试(JSFiddle): http ://jsfiddle.net/68gb7/


Pek*_*ica 5

如果“浮雕”是指用两种不同颜色相互包围的两个边框,则存在属性outline( outline-left, outline-right....) 但在 IE 系列中支持很差(即 IE6 和 7 根本不支持它) )。如果您需要两个边框,那么第二个包装元素确实是最好的。

如果您的意思是在同一边框中使用两种颜色。使用例如

border-right: 1px white solid;
border-left: 1px black solid;
border-top: 1px black solid;
border-bottom: 1px white solid;
Run Code Online (Sandbox Code Playgroud)

border-styles这也有特殊之处( ridgeoutsetinset),但根据我的经验,它们往往因浏览器而异。

  • 我相信他问的是“边界:黑白色;边界:黑白色;` 这意味着为一个边框定义两种不同的颜色,同时按顺序查看。 (3认同)
  • 请注意,只有轮廓...不幸的是,没有轮廓左、轮廓右、轮廓顶部或轮廓底部之类的东西。 (3认同)