判断文本是否溢出/hover显示全部
前言
在工作中我们经常会遇到,文字过多,需要用省略号,并且鼠标hover的时候 还需要 显示全部的文字的需求。
正文
- 文字过多需要用省略号的实现:上代码啦
.ellipsis {
width: 100%;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
display: inline-block //块级标签不需要
} 如何得知这个是否溢出呢?关键词:clientWidth 和scrollWidth: 代码奉上:
// 我是在react中实现 componentDidMount () { // 在did mount 中判断是否溢出
const node = this.ref.current // 判断的dom节点,使用ref
const clientWidth = node.clientWidth
const scrollWidth = node.scrollWidth
if (clientWidth < scrollWidth) {
this.setState({ // 把是否溢出的状态存在state中,之后从state中拿值使用
overflow: true
})
}
} // 在普通js中实现,方法一样,取到dom,判断clientWidth 和scrollWidth- 判断完溢出,一般会需要处理,我这里的需求是hover时候再显示全部。方法两种,第一,使用伪类,第二,包裹一个标签,该标签hover时候显示。
重点坑: 有省略号的标签,我们使用了overflow:hidden来实现了,那么这个就是一个BFC,hover时候显示的提示框,超出bfc的就显示不了了。。。
方法一 : 伪类实现:代码上html
<span className={`${styles.detail} ${styles.ellipsis}`} ref={this.departmentRef} data-customer={overflow ? department : null}>{department}</span>
// 关注data-customer 属性,这个属性在有溢出时候赋值,无溢出时候为null。 还记得ref的作用不?就是第二步中确定是否溢出用的。
.ellipsis { // 第一步溢出的代码
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
width: 255px;
}
.ellipsis[data-customer]:hover::after { // 关键代码,伪类实现
content: attr(data-customer);
position: absolute;
background: #F2F2F2;
border: 1px solid #E5E5E5;
box-shadow: 0 2px 4px 0 rgba(56,62,71,0.10);
border-radius: 2px;
padding: 2px 6px;
font-size: 13px;
color: #202332;
top:106px; // 设置位置
left: 10px; // 设置位置
max-width: 90%;
word-break: break-word; // 如果一个单词太长,则截断 CSS 属性 word-break 指定了怎样在单词内断行。
white-space: normal;// 可以换行 white-space CSS 属性是用来设置如何处理元素中的空白。
}
方法二:在hover标签A 内部再包裹一个标签B,B标签在hoverA时显示。代码走你
<span ref={this.ref} style={{display: 'inline-block'}} className={overflow ? 'overFlowText' : ''}>
{tableTitle}
{overflow ? (<span className='overflowSpan'>{tableTitle}</span>) : null}
</span>
// 关键代码是那个三元~
.overflow{
position: relative
}
.overflow .overflowSpan {
display: none
}
.overflow:hover .overflowSpan{
display: block;
position: absolute;
top: 10px;
left: 0px;
}
参考链接: https://stackoverflow.com/questions/2011142/how-to-change-the-style-of-the-title-attribute-inside-an-anchor-tag
判断文本是否溢出/hover显示全部的更多相关文章
- js判断文本是否溢出容器
onShowNameTipsMouseenter: function(e) { var target = e.target; var containerLength = $(target).width ...
- 【UWP】仅在TextBlock文本溢出时显示Tooltip
前言 这是我今天在回答SO问题时偶然遇到的,觉得可能还比较通用,就记录下来以供参考. 通常,我们使用ToolTip最简单的方式是这样: <TextBlock Text="Test&qu ...
- CSS---解决内容过多就会出文本溢出(显示在区域外面,不换行的情况)
当我们设置我的的div,或者其它文本框固定宽度之后,文本内容过多就会出文本溢出(显示在区域外面,不换行的情况). 这时我们可以使用Css中的几个属于来解.有以下的三个属于可以解决问题: 1,word- ...
- 写一个方法完成如下功能,判断从文本框textbox1输入的一个字符,如果是数字则求该数字的阶乘,如果是小写字条,则转换为大写,大写字符不变,结果在文本框textbox2中显示
窗体设计: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...
- CSS 文本溢出时显示省略标记
如标题所示... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.o ...
- HTML技巧篇:如何让单行文本以及多行文本溢出时显示省略号(…)
参考:https://baijiahao.baidu.com/s?id=1621362934713048315&wfr=spider&for=pc 本篇文章主要给大家介绍一下在html ...
- text-overflow文本溢出隐藏“...”显示
一.文本溢出省略号显示 1.文本溢出是否“...”显示属性:text-overflow:clip(不显示省略标记)/ellipsis(文本溢出时“...”显示) 定义此属性有四个必要条件:1)须有容器 ...
- css实现文本溢出用...显示
文本溢出省略号显示,要实现这个必须 要有四个条件: 1.须有容器宽度:width:value 2.强制文本在一行内显示:white-space:nowrap: 3.溢出内容隐藏:overflow:hi ...
- 多行溢出隐藏显示省略号功能的JS实现
在页面重构中,经常需要将过多的内容隐藏而显示部分.在单行文本中实现非常简单,但是在多行文本中,则需要根据实际选择不同的方式. 用CSS实现多行溢出隐藏的代码非常简单,但是兼容性也相对较低. displ ...
随机推荐
- J2EE导论 | 疑惑篇
J2EE是Java程序员从新手进阶的一个必经之路.要体会所谓的工业级代码,就必须要融入和经历更为复杂的开发.部署环境,需要同更多的模块.组件做信息流交换,比较和使用不同的框架,逐一去琢磨和考察它们的必 ...
- 画线动画——SVG版和纯CSS版
概述 我们常常在网站中看到一些画线的动画效果,非常炫酷,大多数这种画线动画效果是通过SVG实现的,也有不少是用纯css实现的,下面我总结了一下这2种方法,供以后开发时参考,相信对其他人也有用. 参考资 ...
- Docker0 网卡删除
只需执行下面三步就可以了: 1.yum -y install bridge-utils 2. ifconfig docker0 down 3. brctl delbr docker0 执 ...
- 长沙IT二十年
长沙IT二十年 古语有云“近代中国,湖南独撑半边天”,近代中国以来,多少仁人志士从湖湘这片热土出发,在中华大地上,挥毫泼墨,为中华民族的繁荣昌盛做出了不可磨灭的贡献.而今天,随着互联网时代的到来,长沙 ...
- dpkg: 处理软件包 qjackctl (--configure)时出错解决方法
第一步:备份 $ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk 第二步:新建 $ sudo mkdir /var/lib/dpkg/info 第三步 ...
- 【app】Appium日志文件分析
Appium在和客户端及手机端进行通讯的时候会输出很多日志,可以通过点击主面板的Get Raw Logs得到其原始日志: 现在我们另存到其他路径,并且以notepad工具打开进行查看 Appium日志 ...
- Python的串口通信(pyserial)
串口通信是指外设和计算机间,通过数据信号线 .地线.控制线等,按位进行传输数据的一种通讯方式.这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低.串口是计算机上一种非 ...
- 访问iis出现500.21错误
上图是错误的界面 刚开始接手了一个项目,然后想发布到iis上访问使用效果,结果出现了上面的问题,最开始以为是 .net Framework版本的问题,每个版本都试过了,结果问题并没有完全解决. 下面 ...
- Google Chrome 书签导出并生成 MHTML 文件
目的 因为某些原因需要将存放在 Google Chrome 内的书签导出到本地,所幸 Google Chrome 提供了导出书签的功能. 分析 首先在 Google Chrome 浏览器当中输入 ch ...
- 如何使用Keras的Model visualization功能
问题 安装上graphviz和pydot之后调用出现如下问题 ['dot', '-Tpng', '/tmp/tmp1KPaiV'] return code: 1 stdout, stderr: War ...