假设我有一个display: block
容器,我想用display: inline
元素(如<span>
标记)填充它(编程),这些元素中的每一个都应该被当作一个"单词",所以当它们到达父元素的右边缘时,应该在元素之前插入一个换行符,否则会溢出到右边。
我可以通过在每个元素后面放置一个空格来实现这一点。当以编程方式填充父节点时,这有点烦人和混乱,因为我必须开始处理父节点的实际文本内容,而不仅仅是弹出和插入节点(假设我可能需要以编程方式以任何顺序删除和插入节点)。
我有点希望父元素有一个CSS属性,说"为了元素流的目的,把任何元素的结尾都当作空格",但是我会采取任何干净的解决方案。
Here是我想要的一些例子(screenshot)。这个片段包含到div
标签。第一个是我想要的行为方式,但以我不想要的方式实现(只是在HTML中的跨度之间放置空白)。第二个是不是我想要的行为方式-因为跨度之间没有空白,浏览器不会在它们之间换行。
div { width: 200px; background-color: pink; margin-bottom: 10px; }
span { width: 80px; background-color: cyan; }
<div>
<span>text</span>
<span>text</span>
<span>text</span>
<span>text</span>
<span>text</span>
<span>text</span>
</div>
<div><span>text</span><span>text</span><span>text</span><span>text</span><span>text</span><span>text</span></div>
2条答案
按热度按时间sbdsn5lh1#
一种不用在span标签之间插入空格就可以实现所需行为的方法是将父容器的display属性设置为flex,并将flex-wrap属性设置为wrap。这将导致子元素在到达父容器的边缘时换到下一行,就像您正在寻找的那样。
你也可以使用inline-block代替inline,因为这将把元素当作一个inline元素来处理,但是也会考虑到元素上设置的宽度和高度。
然后,您可以通过编程方式插入和删除span元素,它们仍然会根据需要换行到下一行。
v8wbuo2f2#
这里有两个可能对你有用的想法:
1.或者使用flex +在
<span>
中添加填充来使用css1.或者,如果您只需要一个空格,您可以简单地在
<span>
的前面/后面附加一个空格