我想在一堆内联元素周围添加彩色轮廓。有没有简单的方法可以在文本流程中使其看起来正确?
这是HTML:
<span>Text Before</span>
<div class="border">
<div>This</div>
<div>is</div>
<div>not</div>
<div>a</div>
<div>public</div>
<div>service</div>
<div>announcement.</div>
</div>
<span>Text After</span>
这里是CSS:
.border {
display: inline;
background-color: pink;
word-spacing: 10px;
padding: 2px 0 2px 0;
border: solid;
}
.border > div {
display: inline;
font-size: 30px;
background-color: lavender;
}
.border
display: inline
的屏幕截图:
.border
display: inline-block
的屏幕截图:
我希望它看起来像这样(通过手动线高,填充和相对定位的混合完成......呃!):
基本上,inline-block
元素可以正常运行,但它们不会像inline
元素那样在行间分开。但是inline
元素会折叠它们的高度,必须手动调整。真的没办法解决这个问题吗?
答案 0 :(得分:0)
尝试在容器div上添加行高。
.border {
display: inline;
background-color: pink;
word-spacing: 10px;
padding: 2px 0 2px 0;
border: solid;
font-size: 30px;
}
.border > div {
display: inline-block;
margin-bottom: 15px;
background-color: lavender;
}
答案 1 :(得分:0)
这是我个人的答案,但It Works™,至少在我的目的,所以我会使用它,直到出现更好的东西。
如果您愿意犯下相对轻微的罪行,即在每个内部span
的内容周围放置div
并为span
而不是div
设置文字样式div
,您可以将每个inline-block
设为div
,为每个人div
而不是父margin
提供背景和边框样式,设置每个div
的左/右div
为0,并通过padding
扩展nth-item
的边框,使其看起来像一个连续的背景矩阵。如果您想要大纲,可以使用inline-block
选择器并相应地设置边框。
这是修改后的HTML(也压缩到一行,以摆脱<span>Text Before</span>
<div class="border">
<div><span>This</span></div><div><span>is</span></div><div><span>not</span></div><div><span>a</span></div><div><span>public</span></div><div><span>service</span></div><div><span>announcement.</span></div>
</div>
<span>Text After</span>
元素之间的空格):
.border {
display: inline;
word-spacing: 0;
}
.border > div {
display: inline-block;
vertical-align: middle;
background-color: pink;
padding: 5px;
margin: 2px 0 2px 0;
border-top-style: solid;
border-bottom-style: solid;
}
.border > div:nth-child(1) {
border-left-style: solid;
}
.border > div:last-child {
border-right-style: solid;
}
.border > div > span {
background-color: lavender;
font-size: 30px;
vertical-align: middle;
}
以下是经过修改的CSS:
{{1}}
这就是它的样子:
如果你想要一些比带有边框的背景颜色更复杂的东西,这种技术就会崩溃,但就我的目的而言,好处 - 那些更简单的CSS和大多数自动布局 - 都超过了缺点。