Warm tip: This article is reproduced from serverfault.com, please click

HTML/CSS-将多个文本元素连接在一起

(HTML/CSS - Joining multiple text elements together)

发布于 2020-12-03 15:04:43

我有以下代码:

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元素是结合在一起的,而文本的其余部分则不是。如何使它看起来像一个连续的文本元素?

Questioner
APixel Visuals
Viewed
0
Jax-p 2020-12-03 23:27:52

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