你的位置:首页 > Java教程

[Java教程]JS实现文字截取(雾)


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

    感觉十分神奇,因为一开始以为他是只有一个P元素包着文字然后最后一个自动截取文字,而且最后一行还可以提前截取???这怎么做到的,然后想了一下css怎么做,好像怎么都不可以在最后一行提前截取

  css多行截取方法是:

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

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

  

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

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

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

  根据这个博客自己写了截取的js

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了。

  最后附上css,html

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

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