我想要实现的是这种效果:
h3{
width: 100%;
padding-left: 100px;
position: relative;
}
h3::before{
content: "";
display: block;
height: 1px;
width: 100%;
background: rgb(200, 200, 200);
position: absolute;
left: 0;
top: 50%;
}
使用我目前拥有的代码,该行将直接通过文本。因此,我尝试在文本中应用背景来掩盖这一行:
h3::first-line{
position: relative;
z-index: 2;
display: inline;
background: white;
}
但它似乎没有起作用:http://jsfiddle.net/DerekL/3PagQ/
有什么想法吗?
一个额外的问题:如何增加文字和线条之间的间隙宽度?我试过了padding: 0 10px
但它没有用。
答案 0 :(得分:4)
将否定z-index
应用于::before
伪元素(fiddle)
h3::before {
z-index: -1;
content: "";
display: block;
height: 1px;
width: 100%;
background: rgb(200, 200, 200);
position: absolute;
left: 0;
top: 50%;
}
我认为在border和pseudo元素之间设置边距的唯一方法是使用box-shadow
:
h3::first-line {
/* .. */
box-shadow: 10px 0 white,
-10px 0 white;
}
请注意保证金和填充不适用于::first-line
。
答案 1 :(得分:1)
制作这个btn,它真的与你想做的一样吗? 尝试看看你是否喜欢它的响应性以及支持到IE7
它也是内容感知,可以居中,左或右,或者你可以添加多个框并在行上证明它们
http://nomis.dk/cool-responsive-button/ 也做了一个小提琴http://jsfiddle.net/nomisweb/GJHvD/
<强> HTML 强>
<div class="btn">
<div class="btn__horizontal-border"></div>
<div class="btn__border">
<div class="btn__text">
Here is a button
</div>
</div>
</div>
<强> CSS 强>
* {
box-sizing: border-box;
}
.btn {
width:100%;
height:31px;
text-align: center;
position:relative;
}
.btn__horizontal-border {
height: 1px;
width: 100%;
background: red;
position:absolute;
top: 50%;
z-index: 0;
}
.btn__border {
display:inline-block;
background: #fff;
height: 31px;
line-height:31px;
padding: 0 15px;
position: relative;
}
.btn__text {
border: 2px red solid;
padding: 0 15px;
display: block;
}
.btn__text:hover {
color: red;
}
答案 2 :(得分:0)
你可以有一个外部div
用于定位,然后是一个hr
标签,可以用CSS设置样式,文字分层在上面:
<强> Fiddle 强>
<强> HTML 强>
<div>
<hr><div class="heading">Title</div>
</div>
<强> CSS 强>
.heading {
position:relative;
left:80px;
margin-top:-20px;
background-color:white;
width:45px;
text-align:center;
}
答案 3 :(得分:0)
如果您可以使用CSS分配标题的名称,那么解决方案可以更简单,并且可以在旧版浏览器中使用。
HTML:
<h3></h3>
CSS:
h3 {
position: relative;
border-bottom: 1px solid #ccc;
font: 20px/1 Serif;
}
h3:before {
content: "Title";
position: absolute;
margin: -10px 0 0 100px;
background-color: #fff;
padding: 0 10px;
}
而且,这是一个小提琴:http://jsfiddle.net/sq3qv/。