• 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{
        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;/*定义为块级*/
     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;

            

  • 相关阅读:
    css3文字单位rem 设置文字大小
    JS实现多物体width缓冲运动实例
    vs 你不得不会的调试方式
    C# 常用修饰符
    富文本编辑器tinymce
    Swagger简单实例
    marquee标签详解
    table数据跑马灯效果
    SqlServer发布订阅
    ORM概述及常用ORM框架
  • 原文地址:https://www.cnblogs.com/shenjilin/p/9668224.html
Copyright © 2020-2023  润新知