javascript 我怎样才能让浏览器允许行内元素之间的换行符(它们之间没有空格)?

mitkmikd  于 2023-01-11  发布在  Java
关注(0)|答案(2)|浏览(127)

假设我有一个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>
sbdsn5lh

sbdsn5lh1#

一种不用在span标签之间插入空格就可以实现所需行为的方法是将父容器的display属性设置为flex,并将flex-wrap属性设置为wrap。这将导致子元素在到达父容器的边缘时换到下一行,就像您正在寻找的那样。
你也可以使用inline-block代替inline,因为这将把元素当作一个inline元素来处理,但是也会考虑到元素上设置的宽度和高度。

div { 
    width: 300px; 
    background-color: pink; 
    display: flex; 
    flex-wrap: wrap; 
}

span { 
    width: 80px; 
    background-color: cyan; 
    display:inline-block
}
<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>

然后,您可以通过编程方式插入和删除span元素,它们仍然会根据需要换行到下一行。

v8wbuo2f

v8wbuo2f2#

这里有两个可能对你有用的想法:
1.或者使用flex +在<span>中添加填充来使用css
1.或者,如果您只需要一个空格,您可以简单地在<span>的前面/后面附加一个空格

// Second Example
for (let i = 0; i < 8; i++) {
  const element = document.querySelector('.parent-2');
  element.innerHTML = element.innerHTML + " <span>text</span>"
}
/* First Example */
.parent-1 {
  display: flex;
  flex-flow: row wrap;
}

.parent-1 span {
  padding-right: 4px;
}

.parent {
  width: 200px;
  border: 1px solid red;
  margin-bottom: 10px;
}
<!-- First Example -->
<div class="parent parent-1"><span>text</span><span>text</span><span>text</span><span>text</span><span>text</span><span>text</span><span>text</span><span>text</span></div>

<!-- Second Example -->
<div class="parent parent-2"></div>

相关问题