客户希望使用两种颜色的边框来实现凸起效果。我能否在一个元素上完成?我希望避免通过叠加两个拥有各自边框的DOM元素来实现。
是的:使用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 以来就存在。 - BoltClockoutline
比 border
的用途少。特别是,W3C 表示:"注意。轮廓线在所有边上都相同。与边框不同的是,没有 'outline-top' 或 'outline-left' 属性。"(我强调。) - Bob Stein这是完全可能的。只需要一点 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
,请尝试将内部边框的半径减小一个像素,这将使两个圆角边框之间的间隙几乎不可见。 - flubottom:1px
而不是 height:100%
只为底部边框效果更佳 :) - Nick另一种方法是使用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>
这里有一个例子,请查看。
您尝试过CSS规范中提供的不同边框样式吗?已经有两种边框样式可以满足您的需求:
border-style: ridge;
或者
border-style: groove;
轮廓线很好,但只适用于想要在周围添加边框的情况。
比如说,如果你只想在底部或顶部添加边框,你可以使用
<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):
img {
padding: 1px;
background: yellow;
border: 1px solid black;
}
<img src="http://cdn3.thumbs.common.smcloud.net/common/8/6/s/863444wpPN.jpg/r-0,500-n-863444wpPN.jpg" alt="malkovich" />
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;
的东西,这意味着为一个边框定义两种不同的颜色,看起来是顺序的同时存在。 - Tarikoutline
理论上是可能的,但在 IE < 8 中效果不佳。 - Pekka<div class="border-shadow">
<div class="nav-bar">
<!-- <a href="../home-page.html">HOME</a> -->
<a class="a-no-underline" href="page4.html">Apps</a>
</div>
</div>
.border-shadow {
border-top: 3px solid white;
border-bottom: 3px solid black;
}
.nav-bar {
display: flex;
align-items: center;
justify-content: space-around;
border-top: 3px solid black;
border-bottom: 3px solid white;
}
对于那些感兴趣的人,将以下CSS属性添加到边框中将实现具有两种不同颜色和相同宽度的双重边框。
示例:
Selector {
border: 10px red;
border-block-start-style: ridge;
border-inline-start-style: ridge;
border-inline-end-style: groove;
border-block-end-style: groove;
}
。
<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>