javascript - 句子中间的省略号

标签 javascript html css

我的产品遇到过文本溢出的情况。我们需要在中间剪切文本。

我想尽可能少地使用 JavaScript。 网上有一些建议。其中大部分包括在 JavaScript 中将字符串分成两部分,然后在一侧使用 text-overflow ellipsis 并在另一侧使用 text-overflow: clip 以及 方向:rtl

这对我来说听起来是个不错的解决方案。 但是,当我尝试实现此解决方案时,我意识到即使在特定字符的中间,也可以在文本中间剪切右侧文本。

最佳答案

所以我的问题是一侧没问题。但是,另一个可能在中间切了一个字母,看起来不太好。 所以我想如果我在两边都使用省略号会怎么样。现在,中间没有字母被剪掉,但我在文本中间有 ... ... 。 我说如果我在右侧使用负左边距怎么办。这解决了这个问题,但是当我的句子太小而不能省略时,两个部分相互重叠。 所以我让容器 display: flex 添加了一个带有宽度和 flex-shrink 的中间元素以及带有 flex-grow:1 的尾部元素。

.container {
  display: flex;
  white-space: nowrap;
  overflow: hidden;
}

.part1, .part2 {
  overflow: hidden;
  display: inline-block;  
  text-overflow: ellipsis;  
  flex-shrink: 1;  
}


.part2 {
  direction: rtl;
  margin-left: -20px
}

.end {
  flex-grow: 1; 
}

.mid{  
  width: 20px;
  flex-shrink: 10;
}
<div class="container">
  <div class="part1">This is the first part of the sentence i</div><div class="mid"></div><div class="part2">t is a very long senetense that we want to split</div><div class="end"></div>
</div>

现在您只需在 JavaScript 中将句子分成两部分即可。 出色地... 因为正确的部分是 rtl 你需要修复 . - 如果它在 part2 的开头,将它添加到 part1 的末尾,如果它在末尾第 2 部分的将其添加到第 2 部分的开头。

关于javascript - 句子中间的省略号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203737/

相关文章:

javascript - ReactJS 组件在视口(viewport)中时淡入

javascript - setInterval() 是异步函数吗?

javascript - for循环javascript中的异步数据获取

javascript - Cordova - 通过单击按钮打开 native 电子邮件应用程序

html - 将 HTML 元素的位置更改为绝对位置是否也会更改该元素的内容类别?

html - 具有绝对定位的 css 最小宽度和边距/填充

javascript - .removeClass 不工作,并阻止 .addClass 工作

html - 在伪元素之后显示另一个div中的内容

javascript - 响应式全宽 Wordpress 帖子图片

javascript - 在水平 'tabs' 内垂直滚动