javascript - 如何判断溢出省略号是否在块 HTML 元素上可见
问题描述
我有许多块元素(div
s),文本可能很长。块有CSS
.el-clip {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
剪辑超出 div 结尾的任何文本,并且我希望我的 Javascript 知道给定文本中的文本是否div
显示省略号,因此我可以添加一些鼠标悬停文本(title
属性)以显示全文。
请注意,我看过这个问题 "Detect if text-overflow:ellipsis is active on input field",但它是关于input
元素的,而不是普通的块元素,现有的解决方案对我的问题不是最优的。
我对解决方案的想法是将元素的宽度与添加了内联样式的同一元素的宽度进行比较overflow: visible
。如果前者小于后者,则使用椭圆。但我想知道是否有更优雅的解决方案,或者(甚至可能)内置解决方案。
更新哇,我很惊讶。添加内联样式overflow: visible
显示完整元素时,宽度保持不变。所以我提出的解决方案不起作用。
显然宽度仍然受到父元素的限制?这太奇怪了。我应该注意,带有文本的 div 位于 an 内,li
而. 是否有可能制作一个通用功能来满足我的需求?maxWidth
ul
解决方案
好的,我有一个解决方案。我发现scrollWidth
给出了包括任何溢出在内的全宽,所以我什至不必摆弄元素的样式。这适用于 jQuery:
addTooltipToLongText = function($el) {
if (!($el instanceof $)) {
$el = $($el);
}
$el.each( (i, it) => {
const $it = $(it);
if ($it.width() < it.scrollWidth) {
$it.prop('title', $it.text());
}
});
}
推荐阅读
- javascript - 选择时键盘不显示仅在 iOS 上
- amazon-web-services - 允许外部用户(通过 Cognito)访问 S3 存储桶和控制台
- file - Apache ignite 作为共享驱动器用于存储和检索文件
- javascript - 为 PieChart/DonutChart Google Charts VueJS 分配角色/自定义 HTML 工具提示
- docusignapi - is it possible to sign multiple embedded singers in single recipient view?
- php - how to filter data in foreach
- javascript - async load and prepend the content of a file
- regex - Ideas for regex in BeautifulSoup, Pandas, Requests downloading to excel
- apache-spark - 为什么 writeStream 不以增量格式写入,即使我已经对其进行了编码
- c# - ITextSharp 在统一编辑器中完美运行,但当应用程序构建到 Windows 独立时会生成损坏的 0 字节文件