首页 > 代码库 > js实现多行省略
js实现多行省略
虽然ie9逐步淘汰淘汰了,但是……为了兼容ie8的多行省略功能,jq插件ell
jQuery.fn.ell = function(count) { for(var i = 0 ; i < $(this).length; i ++){ var ele = $(this).eq(i); //words的width和height var W = ele.width(); var H = ele.height(); //get element‘s children p var p = ele.find(‘p‘); //get element‘s lineheight var lineHeight = parseFloat(ele.css(‘line-height‘) || ele.find(p).css(‘line-height‘)); if(count == 1) { ele.find(p).css({ ‘width‘: W, ‘text-overflow‘:‘ellipsis‘, ‘white-space‘:‘nowrap‘, ‘overflow‘:‘hidden‘ }) } else if (count >1) { var divH = lineHeight*count; if(H != ‘auto‘){ ele.css({ ‘height‘: divH }); } //如果最的p的高度大于divH,那么删除末尾多余行数的str ele.each(function(i){ while (p.outerHeight() > divH) { p.text(p.text().replace(/(\s)*(\w+|\W)(\.\.\.)?$/, "...")); }; }) } } };
html、css和调用的js如下:
<style> .words { border: 1px solid #ddd; margin-bottom: 20px; /*以下三个属性必须有*/ width: 300px; overflow: hidden; line-height: 25px; /*以上三个属性必须有*/ } </style>
<script src="http://www.mamicode.com/jquery.js"></script> <script src="http://www.mamicode.com/ell.js"></script>
<script> $(function(){ $(‘.words‘).ell(2); }) </script>
<body> <div class="words"> <p>我是超长文本标记语言我是超长文本标记语言我是超是超长文本标记语言我是超长文本标记语言</p> </div> <div class="words"> <p>dsfasdsf asdsf asdsfas</p> </div> <div class="words"> <p>是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超是超长文本标记语言我是超</p> </div>
效果:
js实现多行省略
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。