我希望将内联块元素(在本例中为<a>
内的<p>
)清除到下一行,而不必设置display:block
并定义宽度
以下是一个示例:http://jsfiddle.net/alecrust/zstKf/
以下是所需结果(使用display:block
并定义宽度):http://jsfiddle.net/alecrust/TmwhU/
答案 0 :(得分:3)
如果您想避免设置显式宽度,以便根据文本的实际长度设置背景样式,可以执行以下操作:
包裹您的链接:
<p>To stay up to date <span><a href="#">Follow Us</a></span></p>
请注意,我在链接周围添加了<span>
标记。
使用CSS设置包装器样式:
span {
display: inline-block;
width: 100%;
}
将宽度设置为100%会强制包装器占据整条线。将链接集的<a>
标记保持为内联块允许其应用填充和背景,同时不将其展开以适应容器的宽度100%。
分叉JSFiddle:http://jsfiddle.net/Cm9kZ/
答案 1 :(得分:1)
这有点像kludge,但它会起作用:
a {
display: inline-block;
padding: 5px 18px;
background-color: #8C4AD5;
text-decoration: none;
position:relative;
top:25px;
left:-30%
}
你必须捏造左侧位置,但这基本上会让你重新设置一个已知值,就像display:block
示例中的宽度问题一样。不是更好,只是一种不同的方法。
答案 2 :(得分:1)
我最接近我想要的是使用:before
在<a>
(Fiddle)之前插入新行。不幸的是,这并没有将它清除到下一行。
答案 3 :(得分:1)
这仅适用于您希望在p中的最后一个元素后换行符。
我已经尝试了很多,这对我来说很有用,在Safari 6中:
p.linebreak-after-last-element:after {
content: "";
display: inline-block;
width: 100%;
}
我没有在其他浏览器中对此进行测试,但它非常简单,应该适用于支持display: inline-block
的所有浏览器。
答案 4 :(得分:1)
inline-block元素后面的空<div/>
清除内联块。
答案 5 :(得分:0)
根据您的要求,我认为不可能。
我希望this would help,但不是因为你的链接之前没有元素。
您应该只更改HTML,例如:http://jsfiddle.net/thirtydot/zstKf/10/
答案 6 :(得分:0)
使用伪类::您可以添加clear:both
的内容后;它的财产。
未经测试,但理论上应该有效。