初阶:单行文本
html
1
<
div
class
="test chn"
>
2
这是一个中文例子,我是要成为攻城狮的人我是要成为攻城狮的人哟呵!
3
</
div
>
4
<
div
class
="test eng"
>
5
this is an english demo, my english is so poor that i just want to say hello world!
6
</
div
>
css
.test
{
width
:
300px
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
border
:
5px solid #23bab5
;
margin
:
30px auto
;
}
效果图
在最新版的ie 火狐 chrome 均是如此,据说早期的forefix会出现字被截断的问题,但这个已经够大部分浏览器用了
多行折叠
jquery实现
html
<
div
class
="test"
>
<
p
>
这是一个中文例子,我是要成为攻城狮的人我是要成为攻城狮的人哟呵!这是一个中文例子,我是要成为攻城狮的人我是要成为攻城狮的人哟呵!这是一个中文例子,我是要成为攻城狮的人我是要成为攻城狮的人哟呵!这是一个中文例子,我是要成为攻城狮的人我是要成为攻城狮的人哟呵!
</
p
>
</
div
>
CSS
.test
{
width
:
300px
;
overflow
:
hidden
;
border
:
5px solid #23bab5
;
margin
:
30px auto
;
height
:
100px
;
}
JQuery
$(document).ready(function()
{
var divHeight = $(".test").height();
//var divHeight = $(".test").css("height"); 如此返回带px
while($(".test p").outerHeight()>divHeight){
$(".test p").text($(".test p").text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "...")); //$(".test p").text($(".test p").text().substring(0,$(".test p").text().length - 1)); //一个一个字符串减少,最后再替换也ok
}
});
效果图
注:其中的正则表达式参考了http://c7sky.com/text-overflow-ellipsis-on-multiline-text.html,我自己写的是一个个删除直至小于divHeight,对正则表达式不太熟悉,以后抽出时间来学。
另外 ,第一次代码二逼的写成了这样
var
divHeight = $(".test"
).height();
var
pHeight = $(".test p"
).outerHeight();
while
(pHeight>
divHeight){
$(
".test p").text($(".test p").text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."
));
}
想什么笨蛋,这是个死循环啊!
纯css的方法目前还没想到特别好的,有一篇折中的供大家参考,但感觉效果不是特别好
http://www.cocss.com/?p=1382
本人菜鸟一只,有什么错误或者更好的方法欢迎指正哦

