17

我想知道你们认为在 div 周围获得 2 种颜色的双边框的最简单方法是什么?我尝试同时使用边框和轮廓,它在 Firefox 中工作,但轮廓在 IE 中似乎不起作用,这是一个问题。有什么好的方法可以解决这个问题吗?

这就是我所拥有的,但大纲不适用于 IE:outline: 2px solid #36F; 边框:2px 实心#390;

谢谢。

4

7 回答 7

43

您可以使用伪元素添加多个边框,然后将它们放置在原始边框周围。没有额外的标记。跨浏览器兼容,自 CSS 2.1 以来就已经存在。我在 jsfiddle 上为您提供了一个演示......请注意,边框颜色之间的间距是用于示例的。您可以通过更改绝对定位中的像素数来关闭它。

.border
{
    border:2px solid #36F; 
    position:relative;
    z-index:10
}

.border:before 
{
    content:"";
    display:block;
    position:absolute;
    z-index:-1;
    top:2px;
    left:2px;
    right:2px;
    bottom:2px;
    border:2px solid #36F
}

http://jsfiddle.net/fvHJq/1/

于 2013-02-06T18:05:42.973 回答
8

使用框阴影作为第二个边框。

div.double-border {
    border: 1px solid #fff;
    -webkit-box-shadow: 0px 0px 0px 1px #000;
    -moz-box-shadow: 0px 0px 0px 1px #000;
    box-shadow: 0px 0px 0px 1px #000;
}

在这种情况下, box-shadow 不会像 outline 一样忽略border-radius 属性

于 2015-08-18T14:07:59.427 回答
2

一个非常简单的解决方案,如果没有其他方法,您可以将其用作后备方案,即使用两个 div。你的主 div,然后是一个空的,只是包装它,你可以用它来设置第二个边框。

于 2013-02-06T17:52:39.343 回答
0

这个问题迟到了,但我觉得我应该在某个地方记录一下。您可以在 Less 或 Stylus 之类的东西中创建可扩展的功能,这将创建任意数量的边框(此处为 Stylus):

abs(n)
    if n < 0
        (-1*n)
    else
        n

horizBorder(n, backgroundColor)
    $shadow = 0 0 0 0 transparent
    $sign = (n/abs(n))
    for $i in ($sign..n)
        /* offset-x | offset-y | blur-radius | spread-radius | color */
        $shadow = $shadow, 0 (2*$i - $sign)px 0 0 #000, 0 (2*$i)px 0 0 backgroundColor
    return $shadow

然后,

$background: #FFF // my background was white in this case and I wanted alternating black/white borders

.border-bottom
    box-shadow: horizBorder(5, $background)
.border-top
    box-shadow: horizBorder(-5, $background)
.border-top-and-bottom
    box-shadow: horizBorder(5, $background), horizBorder(-5, $background)
于 2016-03-06T16:26:22.640 回答
0

使用 box-shadow,您可以实现任意数量的不同颜色边框。例如:

#mydiv{
  height: 60px;
  width: 60px;
  box-shadow: inset 0 0 0 5px #00ff00, inset 0 0 0 10px #0000ff;
}

<div id="mydiv">&nbsp;</div>

https://jsfiddle.net/aruanoc/g5e5pzny

于 2017-01-25T15:42:33.197 回答
0

一个小技巧;)

box-shadow: 
0 0 0 2px #000,
0 0 0 3px #000,
0 0 0 9px #fff,
0 0 0 10px #fff,
0 0 0 16px #000,
0 0 0 18px #000;
于 2017-02-15T22:52:08.667 回答
0

.border{
  width: 200px;
  height: 200px;
  background: #f06d06;
  position: relative;
  border: 5px solid blue;  
  margin: 20px;
}
.border:after {
  content: '';
  position: absolute;
  top: -15px;
  left: -15px;
  right: -15px;
  bottom: -15px;
  background: green;
  z-index: -1;
}
<div class="border">
  
</div>

使用类名来.border给定单个边框的值。然后如果您在代码示例示例上方有第二个边框,则border:2px solid #000您想要另一个边框尝试给定值.border:after

于 2017-08-16T07:41:27.133 回答