【问题标题】:wrap span's extra text to next line将 span 的额外文本换行到下一行
【发布时间】:2018-11-27 19:28:59
【问题描述】:

我正在尝试使用 overflow-wrap: break-word 将额外的文本换行到下一行,但问题是当您单击时,span 会向下移动到下一行,然后额外的文本会在下一行中断。

我希望黄色文本“BlaBla:”与文本“sometextssomet...”位于同一行,但是我希望“sometextssomet...”文本在其内部应用overflow-wrap: break-word; <p> 元素。

我做错了什么?

document.addEventListener('mousedown', () => {

  let name = document.createElement("p");
  name.className = 'Name'
  name.innerHTML = 'BlaBla: '
  name.style = `height:40px; color: #f4c41f`

  document.getElementsByClassName('main')[0].appendChild(name)

  let text = document.createElement("span");
  text.innerHTML = `sometextssometextssometextssometextssometexts`
  text.style = `overflow-wrap: break-word; font-size:14px; color: #ffffff; background: none; `

  document.getElementsByClassName('Name')[0].appendChild(text)
})
.main {
  position: relative;
  width: 250px;
  height: 140px;
  overflow-wrap: break-word;
  background-color: gray;
}
<div class="main" id="main0"></div>

【问题讨论】:

    标签: javascript css text word-wrap


    【解决方案1】:

    如果我理解您的问题,那么这里有几件事需要更改。首先,<p> 默认情况下应用了一个边距,这会导致您在将其添加到文档时注意到这种垂直“跳跃”。尝试添加以下 CSS 来解决此问题:

    p {
        margin-top:0;
    }
    

    另外,考虑为黄色“blabla”文本和白色文本添加一个<span> 到创建的<p>,以允许break-word CSS 规则按要求通过执行以下操作:

    document.addEventListener('mousedown', () => {
      
      // Create span for each piece of text with different styling
      let blabla = document.createElement("span"); 
      blabla.innerText = 'BlaBla:' 
      blabla.style = 'color:yellow'
    
      let text = document.createElement("span");
      text.innerText = `sometextssometextssometextssometextssometexts` 
    
      // Append both span elements to the paragraph where word spacing should
      // be applied
      let name = document.createElement("p");      
      name.appendChild(blabla);
      name.appendChild(text);
      
      document.querySelector('.main').appendChild(name)
    })
    .main {
      position: relative;
      width: 250px;
      height: 140px; 
      background-color: gray;
    }
    
    p {
      position: relative;
      margin-top:0;
      display:block;
      color:white;
    }
     
    span {     
      overflow-wrap: break-word;
    }
    <div class="main" id="main0"></div>

    【讨论】:

    • @adamwest 奇怪 - 可能是您使用的浏览器 - 我刚刚更新了 sn-p ,这对您有用吗?
    • 不,我使用的是 chrome v70,它也不适用于 firefox。
    • 有趣(似乎对我有用)- 什么失败了?它什么也没做?或者,它只是没有按照您期望的方式呈现?
    • 没什么变化,结果和我的第一个代码完全一样
    • 好的,在您的原始文件中,黄色的“BlaBla”文本似乎奇怪地与白色文本重叠——我的解决方案正确地堆叠了“BlaBla”和白色文本以避免重叠。也许我误解了你的问题 - 你能澄清一下吗?
    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多