javascript - 向文本溢出 : ellipsis 的元素添加标题属性

标签 javascript css

我不确定这是否容易实现,但我想我会问以防万一:

我在文本列表中使用以下 CSS 规则:

{ 
    width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
}

正如预期的那样,列表之外的任何文本都将被 chop 并在末尾放置一个省略号。

我只想为触发列表上的 text-overflow 规则的那些列表项设置一个事件标题属性。因此,您可以将鼠标悬停在任何被 chop 的文本上,并查看其全文的工具提示。

有些事情告诉我这很难,如果不是不可能的话。但是我很想被证明是错误的。我最好寻找一种使用尽可能少的 JavaScript 的解决方案。

最佳答案

我们使用类似的、更通用的省略号,它适用于大多数情况。我们还应用了 title 属性(对于所有元素)。仅在元素省略时才应用标题,这确实很困难。下面的示例假设,如果元素的宽度与父元素相同,我们应该设置标题。如果没有 if 语句,它将始终应用标题。

document.querySelectorAll('.ellipsify').forEach(function (elem) {
  if (parseFloat(window.getComputedStyle(elem).width) === parseFloat(window.getComputedStyle(elem.parentElement).width)) {
    elem.setAttribute('title', elem.textContent);
  }
});
.ellipsify {
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    max-width: 100%;
    display: inline-block;  
}

div {
  width: 100px;
}
<div>
  <span class="ellipsify">dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna</span>
  <span class="ellipsify">dolor sit amet</span>
</div>

关于javascript - 向文本溢出 : ellipsis 的元素添加标题属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44024946/

相关文章:

html - 无法在单行中制作单选按钮

javascript - 快速键入时,.keyup() 上的非拉丁字符替换不起作用

JavaScript ES6 : import destructuring not working

css - HTML 表格的水平滚动条

css - DIV 高度和宽度

html - `margin:auto;` 不适用于行内 block 元素

javascript - 在大量渲染/计算期间卡住后如何防止滚动位置跳跃?

javascript - 如果使用单个实体,使用自动映射器对我来说效果很好

javascript - 如何使用 jQuery $.post 将 ajax 返回的表单字段发送/发送到服务器

jquery - "<"符号后的文本被截断