我正在实现一个包含语义标题(h3,h4等)的元素的设计,它们是全宽度块元素,后面跟着一个垂直居中的水平线,它扩展了标题a的全部宽度:在CSS中,如何创建一个垂直居中的线,占用块元素后剩余的水平空间?
我知道我可以照顾这通过在<div>
包裹每个头和插入后,另一个块级元素,但宁愿不污染我的HTML这样。我的第一个倾向是在头部使用::after
元素,像这样:
.line-header::after {
content:'\00a0';
display: inline-block;
float: right;
width: 55%;
margin-top: -12px;
border-bottom: 1px solid gray;
}
然而,这需要使得::after
元素固定宽度,这显然不符合不同宽度头工作:http://jsfiddle.net/nbSTf/
关于如何获得一个可变宽度的行的任何想法,它将填充头部右侧的空间,而不会在HTML中插入额外的元素?
编辑:下面(暗示绘制标题的后面线全宽并设置背景颜色擦除文本后面的线) Tyriar的回答提醒我,这是发生在一个重复的背景图像的前面 - 不幸的是没有背景技巧可能。
我对你的方法印象深刻,并不知道发生了什么。我曾经玩过它,显然它可以很容易地打破,没有围绕'.line-header'的包装http://jsfiddle.net/Tyriar/uJ5ww/仍然,很好的解决方案:) – 2013-03-15 09:32:01
这是一个有趣的解决方案 - 然而,甚至在Tyriar的小提琴中,包装div将“宽度:100%”约束到合理的数量,如果滚动到结果窗格的右侧,水平线仍然是相同的宽度,正确的 - 我有同样的问题,但相反。 :)我需要它们排列在包含元素的RH边缘。我错过了什么吗? – 2013-03-15 20:41:04
@Eric P我的小提琴展示了一个反例,而不是修复。溢出x也可能是不够的。这只会在内容不在页面中心并且不需要填充时才起作用。 – 2013-03-16 00:56:47