zoukankan      html  css  js  c++  java
  • CSS实现单行、多行文本溢出显示省略号

    1.单行超出显示...

    <p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
    
    p{
         200px;
        overflow: hidden;
        text-overflow:ellipsis;
        white-space: nowrap;
    }

    效果:

    2.多行超出显示...

    <p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
    
    
    p {
         100px;   /*限制宽度*/
        position: relative;
        line-height: 20px;
        max-height: 40px;
        overflow: hidden;
    }
    
    p::after {
        content: "...";
        position: absolute;
        bottom: 0;
        right: 0;
        padding-left: 40px;
        background: -webkit-linear-gradient(left, transparent, #fff 55%);   
        background: -o-linear-gradient(right, transparent, #fff 55%);
        background: -moz-linear-gradient(right, transparent, #fff 55%);
        background: linear-gradient(to right, transparent, #fff 55%);
    }

    效果:

    在ie9下效果:

    注:

      1. 如果文字未超出行的情况下也会出现省略号,需要配合js进行优化

      2. 由于ie6-7不显示content内容,所以要添加标签兼容ie6-7(如:<span>…<span/>);兼容ie8需要将::after替换成:after。

     3.文字未超出,样式优化(有瑕疵)

    <p id="textP">文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字.</p>
    
    p {
         100px;   /*限制宽度*/
        position: relative;
        line-height: 20px;
        max-height: 40px;
        overflow: hidden;
    }
    
    p.textp::after {
        content: "...";
        position: absolute;
        bottom: 0;
        right: 0;
        padding-left: 40px;
        background: -webkit-linear-gradient(left, transparent, #fff 55%);   
        background: -o-linear-gradient(right, transparent, #fff 55%);
        background: -moz-linear-gradient(right, transparent, #fff 55%);
        background: linear-gradient(to right, transparent, #fff 55%);
    }

    js代码

    function domeP(){
        var p=document.getElementById('textP');
        var w=16.6;                //每个字符的宽度=元素宽度/一行显示的字数
        var len=(p.innerHTML.length)*w;      //总长度=字数*每个字的宽度
        var textW=(p.offsetWidth)*2;      //两行的总宽度(如果只显示两行)
        if (len>textW) {
            p.className='textp';
        }else{
            p.className='';
        }
    }
    window.onload=function(){
        domeP();
    }
    

    注解:每个字符的宽度需要动态获取,显示的行数也需要动态获取,这里直接写的固定值

  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/xiaoxinzi/p/8548889.html
Copyright © 2011-2022 走看看