前言

在工作中我们经常会遇到,文字过多,需要用省略号,并且鼠标hover的时候 还需要 显示全部的文字的需求。

正文

  1. 文字过多需要用省略号的实现:上代码啦

    .ellipsis {
    width: 100%;
    text-overflow: ellipsis;
    overflow: hidden;
    white-space: nowrap;
    display: inline-block //块级标签不需要
    }
  2. 如何得知这个是否溢出呢?关键词: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
  3. 判断完溢出,一般会需要处理,我这里的需求是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显示全部的更多相关文章

  1. js判断文本是否溢出容器

    onShowNameTipsMouseenter: function(e) { var target = e.target; var containerLength = $(target).width ...

  2. 【UWP】仅在TextBlock文本溢出时显示Tooltip

    前言 这是我今天在回答SO问题时偶然遇到的,觉得可能还比较通用,就记录下来以供参考. 通常,我们使用ToolTip最简单的方式是这样: <TextBlock Text="Test&qu ...

  3. CSS---解决内容过多就会出文本溢出(显示在区域外面,不换行的情况)

    当我们设置我的的div,或者其它文本框固定宽度之后,文本内容过多就会出文本溢出(显示在区域外面,不换行的情况). 这时我们可以使用Css中的几个属于来解.有以下的三个属于可以解决问题: 1,word- ...

  4. 写一个方法完成如下功能,判断从文本框textbox1输入的一个字符,如果是数字则求该数字的阶乘,如果是小写字条,则转换为大写,大写字符不变,结果在文本框textbox2中显示

    窗体设计: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  5. CSS 文本溢出时显示省略标记

    如标题所示... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.o ...

  6. HTML技巧篇:如何让单行文本以及多行文本溢出时显示省略号(…)

    参考:https://baijiahao.baidu.com/s?id=1621362934713048315&wfr=spider&for=pc 本篇文章主要给大家介绍一下在html ...

  7. text-overflow文本溢出隐藏“...”显示

    一.文本溢出省略号显示 1.文本溢出是否“...”显示属性:text-overflow:clip(不显示省略标记)/ellipsis(文本溢出时“...”显示) 定义此属性有四个必要条件:1)须有容器 ...

  8. css实现文本溢出用...显示

    文本溢出省略号显示,要实现这个必须 要有四个条件: 1.须有容器宽度:width:value 2.强制文本在一行内显示:white-space:nowrap: 3.溢出内容隐藏:overflow:hi ...

  9. 多行溢出隐藏显示省略号功能的JS实现

    在页面重构中,经常需要将过多的内容隐藏而显示部分.在单行文本中实现非常简单,但是在多行文本中,则需要根据实际选择不同的方式. 用CSS实现多行溢出隐藏的代码非常简单,但是兼容性也相对较低. displ ...

随机推荐

  1. Spark机器学习(上)

    1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”. l“ ...

  2. 【面试必备】常见Java面试题大综合

    一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort ...

  3. Microsoft Windows Server 2012 Ad域搭建

    Microsoft Windows Server 2012 Ad域搭建 一.Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条 ...

  4. [Postman]请求(6)

    您可以从以下位置创建并保存请求: 工作区构建视图 新按钮 启动屏幕 使用新按钮 在标题工具栏中,单击“ 新建”按钮. 出现“新建”屏幕. 在SAVE REQUEST屏幕中: 输入您的请求的标题和说明. ...

  5. js控制全屏及退出全屏

    js控制全屏及退出全屏,网上很多代码例子,我这里需求和标准的有点出入: 1.当用户点击某按钮,触发iframe下的页面全屏. 2.不允许用户退出全屏. 解决第一点,触发全屏可以按照网上的例子,代码如下 ...

  6. ubuntu下opencv的版本切换及遇到的问题解决

    默认使用opencv 3.2的时候,使用SVM的时候,系统报错如下: error: ‘class MySVM’ has no member named ‘decision_func’ 解决方法:要把系 ...

  7. python搭建web服务

    import json from urlparse import parse_qs from wsgiref.simple_server import make_server import os im ...

  8. 基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现

    0.简介 0.1 什么是 Consul Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置. 这里所谓的服务,不仅仅包括常用的 Api 这些服务,也包括软件开发过程 ...

  9. 项目总结二:人脸识别项目(Face Recognition for the Happy House)

    一.人脸验证问题(face verification)与人脸识别问题(face recognition) 1.人脸验证问题(face verification):           输入       ...

  10. Centos系统通过tar.gz包安装Mysql5.7

    1.安装mysql之前需要确保系统中有libaio依赖,使用如下命令: yum search libaio yum install libaio 2.进入centos终端操作界面,使用wget命令下载 ...