JS实现文字截取(雾)

  今天在跳板群那里看到一个神奇的样式,效果:javascript

    感受十分神奇,由于一开始觉得他是只有一个P元素包着文字而后最后一个自动截取文字,并且最后一行还能够提早截取???这怎么作到的,而后想了一下css怎么作,好像怎么都不能够在最后一行提早截取css

  css多行截取方法是:html

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

  然而这个方法只能实现多行截取,不能让最后一行提早截取;若是只是靠css来截取的话 貌似是不能够的,理由如图:java

  

  溢出的部分直接把空间撑开,不会提早截取。web

  因此只能用js来截取了。JS要怎么截取?一开始我是不知道的,直到看到了其余前辈的博客:app

      http://www.cnblogs.com/milkmap/archive/2013/05/27/3101325.htmlspa

  根据这个博客本身写了截取的jscode

var element = $("div");
    var element2 = $("div p");
    var h  = element.height()-20;
    var v = '';
    var val = element2.html();
    console.log(val)
    while(h< element2.height()){
            v = element2.html();
            v = v.substring(0,v.length - 1);
            element2.html(v);
        }
    var val2 = val.replace(v,"");
    element.append("<p style='width: 120px;overflow: hidden;text-overflow: ellipsis;word-break: keep-all;display: inline-block;'>"+val2+"</p>");
    element.append("<span>详细</span>")

  核心部分就是循环那段了,经过判断容器大小,来截取字符串,看完博客后才知道能够这样截,果真要好好看javascript的原生API了。htm

  最后附上css,htmlblog

    html,body{
        line-height:20px;
    }
    p{
        padding:0px;
        margin:0px;
    }
    .row{
        width: 200px;
        border: 1px solid #000;
        line-height: 20px;
        max-height: 60px;
        clear: both;
        overflow: hidden;
    }
    span{
        display: inline-block;
        float: right;
        color: white;
        background: black;
    }
    <div class="row">
        <p>在1815年,正值拿破仑被流放厄尔巴岛时,一个既年轻又成功的商船水手爱德蒙·唐泰斯,在船长利克莱尔濒死的时刻接受了船长指挥权,并回到了家乡马赛迎娶他的未婚妻美蒂丝。利克莱尔,一个拿破仑的支持者,吩咐唐泰斯运送两样物品,一个是给予位于厄尔巴岛上的马歇尔·伯特兰德的包裹,一个是从厄尔巴岛上寄出给予一位居住于巴黎的神秘男子的信件。这封神秘信件使唐泰斯两位妒忌他的朋友,在另外一位朋友的建议下指控唐泰斯叛国。马赛的首席检察官韦尔福,虽然平时为人正直,开始时也同情唐泰斯,但看到信件的神秘收信人是他父亲后,未经调查便判决唐泰斯终身监禁于海上的孤岛监狱伊夫堡,而且于同时烟灭了做为证据的信件。在他被囚在伊夫堡的十四年中,他与亚伯·法利亚成为了朋友,一名声称拥有大量财宝并试图挖地道逃狱的老囚犯。法利亚将一辈子所学教授于唐泰斯,并在死前将藏于基督山的财宝告知于唐泰斯。1829年,法利亚死去后,唐泰斯便装扮法利亚的尸体逃离了伊夫堡,并被一艘走私船给救起,在跟走私犯一块儿工做数个月后,他来到了基督山,他佯装成受伤的模样,并说服走私犯暂时将他置于基督山,趁著这段时间前往财宝的藏置处。在找到了财宝以后,唐泰斯回到了故乡马赛,得知了本身的父亲贫穷潦倒而死;他建造了一艘船,将剩余的财宝藏在船上,接着向塔斯卡尼政府收购基督山及伯爵的头衔。回到了马赛,唐泰斯便开始计划他的复仇,但在那以前,他帮助了一些在他入狱前帮助过他的人。在1815年,正值拿破仑被流放厄尔巴岛时,一个既年轻又成功的商船水手爱德蒙·唐泰斯,在船长利克莱尔濒死的时刻接受了船长指挥权,并回到了家乡马赛迎娶他的未婚妻美蒂丝。利克莱尔,一个拿破仑的支持者,吩咐唐泰斯运送两样物品,一个是给予位于厄尔巴岛上的马歇尔·伯特兰德的包裹,一个是从厄尔巴岛上寄出给予一位居住于巴黎的神秘男子的信件。这封神秘信件使唐泰斯两位妒忌他的朋友,在另外一位朋友的建议下指控唐泰斯叛国。马赛的首席检察官韦尔福,虽然平时为人正直,开始时也同情唐泰斯,但看到信件的神秘收信人是他父亲后,未经调查便判决唐泰斯终身监禁于海上的孤岛监狱伊夫堡,而且于同时烟灭了做为证据的信件。在他被囚在伊夫堡的十四年中,他与亚伯·法利亚成为了朋友,一名声称拥有大量财宝并试图挖地道逃狱的老囚犯。法利亚将一辈子所学教授于唐泰斯,并在死前将藏于基督山的财宝告知于唐泰斯。1829年,法利亚死去后,唐泰斯便装扮法利亚的尸体逃离了伊夫堡,并被一艘走私船给救起,在跟走私犯一块儿工做数个月后,他来到了基督山,他佯装成受伤的模样,并说服走私犯暂时将他置于基督山,趁著这段时间前往财宝的藏置处。在找到了财宝以后,唐泰斯回到了故乡马赛,得知了本身的父亲贫穷潦倒而死;他建造了一艘船,将剩余的财宝藏在船上,接着向塔斯卡尼政府收购基督山及伯爵的头衔。回到了马赛,唐泰斯便开始计划他的复仇,但在那以前,他帮助了一些在他入狱前帮助过他的人。</p>
    </div>

  这个方法,感受其实也不太好,由于若是要到实际应用的话一个商城这么多个标题或者备注,若是都要这样处理的话。。。感受while循环次数是否是有点多了。。。。

相关文章
相关标签/搜索