js和css实现内容超过边框,就自动省略,自动添加title

在项目汇总,我们有这样的需求,如果内容多了,就自动省略,自动添加title

这个需要判断判断俩个值,一个是width(),一个是scrollWidth,

在div中,如果内容没有超过边框,这俩个值是一样的,就是css设置的宽度;如果内容超过边框了,scrollWidth的值会大于width,所以我们可以通过判断scrollWidth和width的值

来知道内容是否超过边框

例:

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta http-equiv="x-ua-compatible" content="ie=edge">
 6   <title>Title</title>
 7   <meta name="viewport" content="width=device-width, initial-scale=1,minimum-scale=1,maximum-sacle=1,user-scalable=no">
 8   <script type="text/javascript" src="../jquery-3.1.1.js"></script>
 9   <style>
10     .test1{
11       width: 200px;
12       height: 20px;
13       overflow: hidden;
14       text-overflow: ellipsis;
15       white-space: nowrap;
16     }
17   </style>
18 </head>
19 <body>
20    <div>
21      <div class="test1">阿尔瓦尔</div>
22      <div class="test1">阿尔瓦尔方式顶顶顶顶顶顶顶顶顶顶顶顶顶顶多多多多多多多多多多多多多多多多多多多多</div>
23    </div>
24    <script>
25      $(function () {
26        console.log($(".test1").eq(1).width())
27        console.log($(".test1").eq(1)[0].scrollWidth)
28        for(var i = 0;i<$(".test1").length;i++){
29          if($(".test1").eq(i).width() < $(".test1").eq(i)[0].scrollWidth){
30            $(".test1").eq(i).attr("title",$(".test1").eq(i).text())
31          }
32        }
33      })
34    </script>
35 </body>
36 </html>

在table中,就不能这样判断了,就算内容没有超过边框,scrollWidth也会大于width,所以我们只用scrollWidth就行,先通过计算获取内容少时scrollWidth的值,然后同判断

如果当前的scrollWidth大于之前计算的值,就说明内容超过边框了

例:

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta http-equiv="x-ua-compatible" content="ie=edge">
 6   <title>Title</title>
 7   <meta name="viewport" content="width=device-width, initial-scale=1,minimum-scale=1,maximum-sacle=1,user-scalable=no">
 8   <script type="text/javascript" src="../jquery-3.1.1.js"></script>
 9   <style>
10     table{
11       width: 1080px;
12       table-layout: fixed;
13       border-collapse: collapse;
14       margin: 0 auto;
15     }
16     thead{
17       width: auto;
18       font-size: 14px;
19       text-align: center;
20       background-color: #777777;
21     }
22     thead tr,thead th{
23       border: 1px solid #dddddd;
24       border-left: none !important;
25       color: #ffffff;
26       height: 50px;
27       font-size: 14px;
28     }
29     thead tr img,tbody td img{
30       width: 14px;
31       height: 14px;
32       cursor: pointer;
33     }
34
35     tbody{
36       width: auto;
37       min-width: 1070px;
38       font-size: 14px;
39       text-align: center;
40       border-bottom: 1px solid #dddddd;
41       background-color: #ffffff;
42     }
43     tbody tr,tbody td{
44       border-left: 1px solid #dddddd;
45       border-right: 1px solid #dddddd;
46       height: 67px;
47       color: #464646;
48     }
49     tbody td{
50       overflow: hidden;
51       text-overflow: ellipsis;
52       white-space: nowrap;
53     }
54   </style>
55 </head>
56 <body>
57    <table>
58      <tbody>
59        <tr>
60          <td class="test2">我是</td>
61          <td class="test1" width="350">我是1反倒</td>
62          <td>我是2</td>
63        </tr>
64        <tr>
65          <td>我是</td>
66          <td class="test1" width="350">我是1反倒是所所所所所所所所所所所所所所所所所所所所我是1反倒是所所所所所所所所所所所所所所所所所所所所我是1反倒是所所所所所所所所所所所所所所所所所所所所</td>
67          <td>我是2</td>
68        </tr>
69        <tr>
70          <td>我是</td>
71          <td class="test1" width="350">我是1反倒是所所所所所所所所所所所所所所所所所所所所我是1反倒是所所所所所所所所所所所所所所所所所所所所我是1反倒是所所所所所所所所所所所所所所所所所所所所</td>
72          <td>我是2</td>
73        </tr>
74      </tbody>
75    </table>
76    <script>
77      $(function () {
78        // 352是最开始算出来的,当内容很少时,scrollWidth值是352
79        for(var i = 0;i<$(".test1").length;i++){
80          if($(".test1").eq(i)[0].scrollWidth > 352){
81            $(".test1").eq(i).attr("title",$(".test1").eq(i).text())
82          }
83        }
84      })
85    </script>
86 </body>
87 </html>
时间: 2024-07-31 16:44:15

js和css实现内容超过边框,就自动省略,自动添加title的相关文章

CSS实现内容超过长度后以省略号显示

样式: {width: 160px; overflow: hidden; text-overflow:ellipsis; white-space: nowrap;} 说明: white-space: nowrap 保证文本内容不会自动换行,如果多余的内容会在水平方向撑破单元格. overflow: hidden 隐藏超出单元格的部分. text-overflow: ellipsis 将被隐藏的那部分用省略号代替.

2个方法通过字[符串参数]加载外部js和css文件

Java语言的异常处理机制可以去确保程序的健壮性,提高系统的可用率,但是Java API提供的异常都是比较低级的(这里的低级是指 " 低级别的 " 异常),只有开发人员才能看的懂,才明白发生了什么问题.而对于终端用户来说,这些异常基本上就是天书,与业务无关,是纯计算机语言的描述,那该怎么办?这就需要我们对异常进行封装了. 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了最近神经网络研究的一个热点,本人最近也学习

ASP.NET MVC 5 默认模板的JS和CSS 是怎么加载的?

当创建一个默认的mvc模板后,项目如下: 运行项目后,鼠标右键查看源码,在源码里看到头部和尾部都有js和css文件被引用,他们是怎么被添加进来的呢? 首先我们先看对应的view文件index.cshtml,发现并没有任何加载js和css文件的标识. 这个时候我们就想到了,会不会是布局模板里加载了呢,因为index.cshtml页面是引用了模板的,这里的模板引用机制是,通过_ViewStart.cshtml文件来设置的.当index.cshtml没有任何设置模板页的时候,就默认把_ViewStar

IE和firefox火狐在JS、css兼容区别

1.firefox不能对innerText支持. firefox支持innerHTML但却不支持innerText,它支持textContent来实现innerText,不过默认把多余的空格也保留了.如果不用textContent,如果字符串里面不包含HTML代码也可以用innerHTML代替. 2.禁止选取网页内容: 在IE中一般用js:obj.onselectstart=function(){return false;} 而firefox用CSS:-moz-user-select:none

js和css控制鼠标略过和点击后的样式

点击链接加入群[JavaEE(SSH+IntelliJIDE+Maven)]:http://jq.qq.com/?_wv=1027&k=L2rbHv 一.js和css控制鼠标略过和点击后的样式 [html] view plaincopy <script language="javascript"> document.onreadystatechange=function()     //当页面状态改变时执行函数 { if(document.readyState ==

[TimLinux] JavaScript table的td内容超过宽度缩为三个点

1. 思路 CSS控制td内容自动缩为三个点 JS控制鼠标悬浮显示td全部内容 2. 实现 HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Table/td自动隐藏内容</title> <link rel="stylesheet" href="my.css" /> </h

个人对php,js,css字符串截取的办法汇总

下面的是个人对php,js,css字符串截取的办法汇总,对大神来说可能没什么含量,求少喷哦,当然可以学习教程增强自己的编程能力. 首先是PHP版本的. 其实只用mb_strimwidth一个函数就可以了,该函数的说明如下: mb_strimwidth -  获取按指定宽度截断的字符串 string mb_strimwidth ( string $str , int $start , int $width [,  string $trimmarker = "" [, string $en

JS 控制CSS样式表

JS控制CSS样式,首先得确定一点,CSS与HTML页面的链接方式,因为CSS有3种与HTML页面结合的方式,不同的方式也会产生不同的结果. 下面先记录一下JS控制CSS所使用的方法. 1.使用javascript更改某个css class的属性... 1 <style type="text/css"> 2 .orig { 3 display: none; 4 } 5 </style> 你想要改变把他的display属性由none改为inline. 解决办法:

将js和css文件装入localStorage加速程序执行

原理如下: 一次批量加要加载的文件存入数组,采用Ajax方式异步载入各个文件,然后采用循环方式逐个执行下载下来的Js或者Css文件,如果已经被缓存(localStorage)的则省略下载过程. 由于JS采用的是单线程模式运行,在执行某一个js时会阻塞其它并发的js执行,所以会按顺序执行各个js.在执行完所有的脚本之后,图片会被浏览器接着 加载,所以第一次加载速度略慢,后面就会比较快了.在JQuery Mobile 1.4.5+FireFox/微信浏览器下实测效果不错,IE就被省略了,我主要是要在