Firefox 的兼容问题

Firefox (火狐) 坑

  一, css 文本溢出省略号

    单行 :  overflow:hidden; text-overflow:ellipsis; white-space:nowrap

    多行 :  overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;

    因为text-overflow是一个比较特殊的属性, 我们倔强的Firefox(火狐)不支持这个属性

    所以我们想起他的办法了

    第一个  办法就是借助 定位和:after伪类 来实现, 啥也不多说:  直接上代码实例

    

<html>
<head>
 <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<style type="text/css">
body{
    font-family:Arial, Helvetica, sans-serif;/*字体。*/
    font-size:12px;/*字体大小12像素。*/
}
div{
    width:200px;/*层的宽度。*/
    height:100px;/*层的高度。*/
    line-height:24px;/*行间距。*/
    position: relative;
    border:#ccc solid 1px;/*层边框为1像素灰色的实线。*/
    background-color:#F9F9F9;/*背景颜色*/
    margin:5px; /*距离周围都是5像素*/
}
div a{
    color:#000;
 display:block;/*定义为块级*/
 width:190px;/*要显示文字的宽度*/
 float:left;/*左对齐*/
 overflow:hidden; /*超出的部分隐藏起来。*/
line-height: 30px;
height: 60px;
font-size: 15px;
 /*white-space:nowrap;*//*不显示的地方用省略号...代替*/
padding-right:7px; /*文字距离右侧7像素。*/
    text-overflow:ellipsis;/* 支持 IE */
    -o-text-overflow: ellipsis;    /* 支持 Opera */
   background: sandybrown;
}
div a:after{
    content:"...";
    position: absolute;
    right: 3px;
    top: 30px;
    }/* 支持 Firefox */
</style>
</head>

<body>
 <div><a href="#">CSS截取字符串d用省略号,超出用省略号用省略号用省略号代替sdfsdfdsfsdfsdfdsfdsfdsfds</a></div>
 <div><a href="#">CSS截取字符串,并将超出用省略号用省略号用省略号代替</a></div>
</body>
</html>

      当然还有第二种办法, 那就是借助强大的JavaScript

      

  (function($) { 
    $.fn.ellipsis = function(enableUpdating){ 
         var s = document.documentElement.style; 
        if (!('textOverflow' in s || 'OTextOverflow' in s)) { 
             return this.each(function(){ 
                 var el = $(this); 
                 if(el.css("overflow") == "hidden"){ 
                     var originalText = el.html(); 
                     var w = el.width(); 
   
                    var t = $(this.cloneNode(true)).hide().css({ 
                         'position': 'absolute', 
                        'width': 'auto', 
                        'overflow': 'visible', 
                         'max-width': 'inherit' 
                     }); 
                    el.after(t); 
   
                    var text = originalText; 
                     while(text.length > 0 && t.width() > el.width()){ 
                         text = text.substr(0, text.length - 1); 
                         t.html(text + "..."); 
                    } 
                     el.html(t.html()); 
  
                     t.remove(); 
  
                     if(enableUpdating == true){ 
                        var oldW = el.width(); 
                         setInterval(function(){ 
                             if(el.width() != oldW){ 
                                oldW = el.width(); 
                                 el.html(originalText); 
                                el.ellipsis(); 
                             } 
                        }, 200); 
                   } 
                 } 
            }); 
        } else return this; 
    }; 
})(jQuery); 

备注: 推荐是用第二办法,  不推荐使用  :after伪类

 

 

 

 

 

    二, Firefox不支持margin 等于 负数

      解决办法  使用    position: relative;

        

posted @ 2018-09-18 12:20  申继林  阅读(316)  评论(0编辑  收藏  举报