是否可以在顶部和底部线的中心创建一个类似下面的盒子? (包括边框插页?)
答案 0 :(得分:2)
这是Working Fiddle 经过测试: Ie10,FF,Chrome,Safari
将您的内容放在.Content
div中。 (应支持任何规模的内容)
<强> HTML:强>
<div class="SpecialBox">
<div class="TopTriangle">
<div class="Gray Border">
<div class="Black Border">
<div class="White Border"></div>
</div>
</div>
</div>
<div class="Content">
Some Content
<br />
And another line of Content
</div>
<div class="BottomTriangle">
<div class="Gray Border">
<div class="Black Border">
<div class="White Border"></div>
</div>
</div>
</div>
</div>
<强> CSS:强>
*
{
margin: 0;
padding: 0;
}
.SpecialBox
{
background-color: black;
-webkit-box-shadow: inset 0 0 0 5px black, inset 0 0 0 6px gray;
box-shadow: inset 0 0 0 5px black, inset 0 0 0 6px gray;
display: inline-block;
color: white;
overflow: hidden;
position: relative;
}
.Content
{
padding: 20px;
}
.Border
{
width: 0;
border-left: 35px solid transparent;
border-right: 35px solid transparent;
position: absolute;
}
.Gray
{
position: relative;
margin: 0 auto;
}
.TopTriangle .Gray
{
border-top: 25px solid gray;
}
.BottomTriangle .Gray
{
border-bottom: 25px solid gray;
top: -1px;
}
.Black
{
left: -35px;
}
.TopTriangle .Black
{
border-top: 25px solid black;
top: -27px;
}
.BottomTriangle .Black
{
border-bottom: 25px solid black;
top: 1px;
}
.Black:before
{
content: '';
position: absolute;
left: -35px;
width: 70px;
height: 6px;
background-color: black;
}
.TopTriangle .Black:before
{
top: -24px;
}
.BottomTriangle .Black:before
{
top: 19px;
z-index: 1;
}
.White
{
left: -35px;
}
.TopTriangle .White
{
border-top: 25px solid white;
top: -30px;
}
.BottomTriangle .White
{
border-bottom: 25px solid white;
top: 6px;
z-index: 2;
}
注意:它可能在DOM中使用少量元素(使用更多伪元素)
答案 1 :(得分:1)
尝试用最少的标记来完成它,并且凹槽和插图是透明的:
CSS
.test {
position: absolute;
width: 200px;
height: 400px;
top: 40px;
left: 40px;
background-image: linear-gradient(-135deg, transparent 30px, black 30px),
linear-gradient(135deg, transparent 30px, black 30px),
linear-gradient(-45deg, transparent 30px, black 30px),
linear-gradient(45deg, transparent 30px, black 30px),
radial-gradient(200px 5px ellipse at 50% 50%, transparent 70px,
black 73px);
background-size: 50% 20%, 50% 20%, 50% 72%, 50% 72%, 100% 10%;
background-position: left top, right top, left bottom, right bottom, left 20%;
background-repeat: no-repeat;
}
而且,正如所承诺的,一个简单的HTML
<div class="test"></div>
注意:该示例使用最新的渐变语法。可以在任何支持多个背景的浏览器中工作,调整渐变语法
答案 2 :(得分:1)
此解决方案使用图像(非常宽的图像)来覆盖盒子可能采用的所有宽度。并使用border-image。 (目前IE不支持)
<强> HTML:强>
<div class="SpecialBorder">
<div class="Content">
Some Content
</div>
</div>
<强> CSS:强>
.SpecialBorder
{
border: 20px solid black; /* fallback for IE*/
-moz-border-image: url(http://i.stack.imgur.com/ZB9vk.png) 20 20 repeat;
-o-border-image: url(http://i.stack.imgur.com/ZB9vk.png) 20 20 repeat;
-webkit-border-image: url(http://i.stack.imgur.com/ZB9vk.png) 20 20 repeat;
border-image: url(http://i.stack.imgur.com/ZB9vk.png) 20 20 repeat;
}
.Content
{
background-color: #1d1d1d; /* same BG as the image*/
}