1.一般情况下,想要实现文本超过几行后显示省略号的css。

color: #101010;
font-size: 14px;
text-align: justify;
font-family: SourceHanSansSC-regular
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;

2.但是有兼容性问题,就是在苹果手机时省略号会和内容重叠

3.解决的方法有几个,下面说2种,

3.1 方法简单,但如果内容有中英文的话,省略号显示的位置可能会不一样。

( (屏幕宽度-内容距离屏幕宽度两边的总和)/字体大小)*行数-预留给省略号的长度

window.contentMaxLength = (($(window).width() - 60) / 14) * 3 - 3;

然后获取获取内容的长度再判断一下是否大于计算好的长度进行截取
var conValue = resData.records[i].conValue;if (conValue && conValue.length > contentMaxLength) {    resData.records[i].conValue = conValue.substr(0, contentMaxLength) + ' ...';}

3.2 使用jq提供的ellipsis.js(自动计算内容宽度截断,并加上省略号,内容不受中英文或符号限制)
demo+链接地址: https://github.com/thinhunan/jquery.ellipsis.js

3.3 借鉴修改后的ellipsis.js
(function($) {    $.fn.ellipsis = function(options) {

        // default option        var defaults = {            'row' :3, // show rows            'onlyFullWords': false, // set to true to avoid cutting the text in the middle of a word            'char' : '...', // ellipsis            'callback': function() {},            'position': 'tail' // middle, tail        };

        options = $.extend(defaults, options);

        this.each(function() {            // get element text            var $this = $(this);            var text = $this.text();            var origText = text;            var origLength = origText.length;            var origHeight = $this.height();

            // get height            $this.text('a');            var lineHeight =  parseFloat($this.css("lineHeight"), 10);            var rowHeight = $this.height();            var gapHeight = lineHeight > rowHeight ? (lineHeight - rowHeight) : 0;            var targetHeight = gapHeight * (options.row - 1) + rowHeight * options.row;

            if (origHeight <= targetHeight) {                $this.text(text);                options.callback.call(this);                return;            }

            var start = 1, length = 0;            var end = text.length;

            if(options.position === 'tail') {                while (start < end) { // Binary search for max length                    length = Math.ceil((start + end) / 2);

                    $this.text(text.slice(0, length) + options['char']);

                    if ($this.height() <= targetHeight) {                        start = length;                    } else {                        end = length - 1;                    }                }

                text = text.slice(0, start);

                if (options.onlyFullWords) {                    text = text.replace(/[\u00AD\w\uac00-\ud7af]+$/, ''); // remove fragment of the last word together with possible soft-hyphen characters                }                text += options['char'];

            }else if(options.position === 'middle') {

                var sliceLength = 0;                while (start < end) { // Binary search for max length                    length = Math.ceil((start + end) / 2);                    sliceLength = Math.max(origLength - length, 0);

                    $this.text(                        origText.slice(0, Math.floor((origLength - sliceLength) / 2)) +                        options['char'] +                        origText.slice(Math.floor((origLength + sliceLength) / 2), origLength)                    );

                    if ($this.height() <= targetHeight) {                        start = length;                    } else {                        end = length - 1;                    }                }

                sliceLength = Math.max(origLength - start, 0);                var head = origText.slice(0, Math.floor((origLength - sliceLength) / 2));                var tail = origText.slice(Math.floor((origLength + sliceLength) / 2), origLength);

                if (options.onlyFullWords) {                    // remove fragment of the last or first word together with possible soft-hyphen characters                    head = head.replace(/[\u00AD\w\uac00-\ud7af]+$/, '');                }

                text = head + options['char'] + tail;            }

            $this.text(text);

            options.callback.call(this);        });

        return this;    };}) (jQuery);
页面调用:$(dom).ellipsis();


-webkit-line-clamp 兼容性问题的更多相关文章

  1. css自动省略号...,通过css实现单行、多行文本溢出显示省略号

    网页开发过程中经常会遇到需要把多行文字溢出显示省略号,这篇文章将总结通过多种方法实现文本末尾省略号显示. 一.单行文本溢出显示省略号(…) 省略号在ie中可以使用text-overflow:ellip ...

  2. Atitit.html css  浏览器原理理论概论导论attilax总结

    Atitit.html css  浏览器原理理论概论导论attilax总结 1.1. 浏览器是怎样工作的:渲染引擎,HTML解析(连载二)1 2. 5.1.1 DOM标准 1011 3. <We ...

  3. Swiper之滑块1

    之前介绍过Swiper,它是一个神奇的插件.类似于Android的触屏操作,Swiper应用于Web中也可以实现这样的效果,我们来看看(用鼠标可拖动). startSlide Integer (def ...

  4. HTML5/CSS3 第三章页面布局

    页面布局 1 页面组成 2 布局相关的标签 <div></div> 定义文档中的分区或节 <span></span> 这是一个行内元素,没有任何意义 & ...

  5. "android.uid.systemandroid.view.InflateException: Binary XML file line #7: Error inflating class android.webkit.WebView

    在android源码中编译app通过,运行时出现错误: "android.uid.systemandroid.view.InflateException: Binary XML file l ...

  6. IE兼容性问题汇总【持续更新中】

    问题:IE8/9不支持Array.indexOf 解决方案 if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt ...

  7. [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析

    [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...

  8. 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结

    今年4月,自从微信浏览器X5 升级Blink内核之后,各前端社区一片高潮,仿佛看到了前端er,眼含热泪进而抱头痛头的说:终于可以不用兼容这"移动端的IE6 "了,可以早点回家了!! ...

  9. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  10. 解决webkit浏览器中js方法中使用window.event提示未定义的问题

    这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的 ...

随机推荐

  1. Linux就该这么学--命令集合7(管道命令符)

    1.管道命令符“|”的作用是将前一个命令的标准输出当作后一个命令的标准输入,格式为:“命令A|命令B”. 找出被限制登录用户的命令是:grep "/sbin/nologin" /e ...

  2. REUSE_ALV_GRID_DISPLAY_LVC 的user_command

    *&--------------------------------------------------------------------* *& Form CALL_FUNCTIO ...

  3. ABAP 通过字段找表程序

    2.获取数据保存在哪个数据表的方法: 1.前台对指定栏位 使用F1帮助找表,2.st05 跟踪业务操作过程,检索需要的数据表,(此方法找表很高效)3.对于文本字段找表,可以找到前台维护处,->维 ...

  4. 有关Option.inSamplSize 和 Compress 图片压缩

    1.图片占用内存:占用的内存 = 图片长度 * 图片宽度 * 单位像素占用的字节数 注: 图片长度和图片宽度就是图片在行列上的像素数量. 图片格式: ALPHA_8:表示8位Alpha位图,即A=8, ...

  5. 关于“telnet localhost:8080不能打开到主机的连接, 在端口 23: 连接失败”问题

    你的命令写错了!不是telnet localhost:1433 是 telnet localhost 1433 不要那个:号 http://www.fengfly.com/ 答案补充 :“正在连接到l ...

  6. UVa 11572 唯一的雪花(优化策略)

    题目描述: 输入一个长度为n(n<=1000000)的序列A, 找到一个尽量长的连续子序列A(L)-->A(R),是的该序列中没有相同的元素. 输入: T:代表组数 n:代表有n个数 这一 ...

  7. 青岛理工交流赛 H题 素数间隙

    13110581088注销 素数间隙 Time Limit: 1000MS Memory limit: 262144K 题目描述 Neko猫是一个很喜欢玩数字游戏的会说话的肥猫,经常会想到很多很好玩的 ...

  8. numpy.argmax 用在求解混淆矩阵用

    numpy.argmax numpy.argmax(a, axis=None, out=None)[source] Returns the indices of the maximum values ...

  9. Python: PS 滤镜-- 极坐标变换到平面坐标

    本文用 Python 实现 PS 中的一种滤镜 极坐标变换到平面坐标,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/de ...

  10. maven目录结构

    groupId的值是项目的包名 artifactId的值是模块名,建议使用项目名