客户需要两个彩色边框,以形成浮雕外观。我可以在一个元素上执行此操作吗?我希望避免堆叠带有单独边框的两个DOM元素。
Answers:
是的:使用outline
财产;它充当边界之外的第二个边界。请注意,它可能会以奇怪的方式与边距,填充和阴影一起交互。在某些浏览器中,您可能还必须使用特定于浏览器的前缀。为了确保它能被接受:-webkit-outline
之类的东西(尽管WebKit尤其不需要)。
在要抛弃某些浏览器的轮廓的情况下,这也很有用(例如,如果您要将轮廓与投影结合在一起;在WebKit中,轮廓在阴影内部;在FireFox中是在外部,因此-moz-outline: 0
有助于确保您的漂亮CSS阴影周围没有粗糙的线条)。
.someclass {
border: 1px solid blue;
outline: 1px solid darkblue;
}
编辑:有人指出outline
IE <8并不能很好地发挥作用。支持IE <8确实不是您应该做的事情。
outline
自CSS2以来一直存在。
这是很有可能的。只需要一点CSS技巧!
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;
}
<div class="border">Hi I have two border colors<br />I am also Fluid</div>
那是您要找的东西吗?
border-radius
,请尝试将内部边界的半径减小一个像素,这将使两个圆形边界之间的间隙几乎不明显。
bottom:1px
而不是height:100%
更好的工作对我来说只是一个底部边框:)
另一种方法是使用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>
请参阅此处的示例。
轮廓是很好的,但仅当您想要整个边框时。
假设您只想在底部或顶部放置它,则可以使用
<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>
对于底部:
<style>
#border-bottom {
border-top: 1px solid #ccc;
box-shadow: 0 1px 0 #fff;
}
</style>
<p id="border-bottom">This is my content</p>
希望这会有所帮助。
而不是使用不受支持的和有问题的轮廓,只需使用
例:
HTML:
<img src="http://cdn3.thumbs.common.smcloud.net/common/8/6/s/863444wpPN.jpg/r-0,500-n-863444wpPN.jpg" alt="malkovich" />
CSS:
img {
padding: 1px;
background: yellow;
border:1px solid black;
}
测试(JSFiddle):
如果通过“浮雕”来表示两个具有两种不同颜色的彼此相邻的边框,则存在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;
有专门border-styles
针对这个问题,以及(ridge
,outset
和inset
),但他们往往在我的经验,跨浏览器的变化。
border : black white;
意思,即为一个边框定义两种不同的颜色,同时显示顺序。
outline
但在IE <8
不可能的,但你应该检查,看看是否border-style
值一样inset
,outset
或者一些其他的,完成你想要的效果。(我怀疑这虽然..)
CSS3具有border-image属性,但是我还不了解浏览器的支持(有关更多信息,请参见http://www.css3.info/preview/border-image/)。
你可以用
<html>
<head>
<title>Two Colors</title>
<style type="text/css">
.two-colors {
background: none repeat scroll 0% 0% rgb(245, 245, 245); border-color: rgba(111,111,111,0.2) transparent;
padding: 4px; outline: 1px solid green;
}
</style>
<style type="text/css">
body {
padding-top: 20px;
padding-bottom: 40px;
background-color:yellow;
}
</style>
</head>
<body>
<a target="_blank" href="people.htm">
<img class="two-colors" src="people.jpg" alt="Klematis" width="213" height="120" />
</a>
</body>
</html>