我有以下代码:
HTML:
<div class="wrapper">
<p>Example text</p>
<p>Example text 2</p>
<div class="markdown">
<p>Lorem ipsum dolor sit amet, <strong>consectetur</strong> adipiscing elit. Curabitur aliquam velit nec molestie pharetra. Etiam fermentum <code>ligula</code> non justo ornare mollis. Praesent vitae metus erat. Morbi vitae sollicitudin justo.</p>
</div>
</div>
CSS:
.wrapper {
display: flex;
flex-wrap: wrap;
align-items: center;
}
它具有包装器div,一些p
元素,然后div
具有渲染的markdown。但是,正如在JSFiddle中所看到的,前两个p
元素是结合在一起的,而文本的其余部分则不是。如何使它看起来像一个连续的文本元素?
你div
被包裹在下一行,因为这样做足够大。flex-wrap
对此行为负责。没有flex-wrap
它看起来像这样:
.wrapper {
display: flex;
align-items: center;
}
<div class="wrapper">
<p>Example text</p>
<p>Example text 2</p>
<div class="markdown">
<p>Lorem ipsum dolor sit amet, <strong>consectetur</strong> adipiscing elit. Curabitur aliquam velit nec molestie pharetra. Etiam fermentum <code>ligula</code> non justo ornare mollis. Praesent vitae metus erat. Morbi vitae sollicitudin justo.</p>
</div>
</div>
但是,它只会并排创建3个块,并且看起来不会像连续的文本元素。除非它是连续文本,否则所有flex属性都无法执行此操作。
你可以display:contents;
用来实现以下目的:
.wrapper {
display: flex;
align-items: center;
}
.wrapper * {
display: contents;
}
<div class="wrapper">
<p>Example text</p>
<p>Example text 2</p>
<div class="markdown">
<p>Lorem ipsum dolor sit amet, <strong>consectetur</strong> adipiscing elit. Curabitur aliquam velit nec molestie pharetra. Etiam fermentum <code>ligula</code> non justo ornare mollis. Praesent vitae metus erat. Morbi vitae sollicitudin justo.</p>
</div>
</div>
display: contents
导致元素的子元素看起来像是元素父元素的直接子元素,而忽略了元素本身。资料来源:caniuse.com
谢谢,不知道
display: contents
是一回事@APixelVisuals是的,这是很新的。请注意,因为它在IE11上不起作用。您可以在caniuse上检查支持的浏览器。