realazy


使用CSS截字

截字是一个很恶心的问题。为了照顾表现上的需要,通常需要把过长的句子,比如一个列表中的新闻标题,截短。

通常这由程序员使用后台技术(各种流行的语言,PHP, JSP等)或者前台技术(JavaScript)来处理。我个人倾向于使用前台技术,因为这对提高网页的亲和力(accessibility)有好处。在非桌面型的浏览器中,用户可以更方便的掌握信息完整性。

text-overflow是CSS3的一个性质(property),它可以截短过长的字符串,并依据值(value)来决定被截掉部分使用何种方式展现。目前,IE已经实现对其的支持,Opera也有了私有属性(-o-text-overflow)对其支持,Firefox似乎落后一步……支持的两者都可使用ellipsis 值,把截掉部分替代成省略号(即ellipsis)。

所以,你要做的只是,把需要截字的元素定好宽度,和overflow一起使用,即可实现效果。

但是Firefox不支持,所以大概你知道我下面要干什么了。 :)

先可以看看Yahoo某大牛的解决方案:http://blog.360.yahoo.com/blog-ktYYK_s5fqJ2Hu1ryv2QSL0-?p=120。大牛就是大牛,XBL和JavaScript双管齐下。

然后,我的解决方案是,利用伪类:after增加省略号,再把它定位到右边即可。效果有点粗糙,但简洁明了,纯CSS实现。

具体过程不说了,看案例,有兴趣者看看源码,很容易理解的。

9 Responses to “使用CSS截字”

  1. mike Says:

    不错。。。。。

  2. jmdhappy Says:

    收藏!

  3. xmlhtml Says:

    我认为使用后台技术更好,考虑到亲和力的话可以使用title显示完整的提示信息,而且没有浪费带宽

  4. 杨力 Says:

    不错噢,各有优缺点

  5. 怿飞 Says:

    不过FF中好像还是有缺点,可能显示半个字等等的现象!不够智能!

  6. rill Says:

    IE下正常
    FF1.5下6行文字都最后都会有”…”并且会有半个字出现
    OP不会出现”…”有半个字出现

  7. aeoluszzf Says:

    realazy很有想法啊,就是效果差了点

  8. will Says:

    方法很不错,可惜在safari上不兼容。

  9. 风干的果子 Says:

    FF下字数很少也有省略号。貌似css没有好的解决方案

Leave a Reply


realazy (懒到死) is proudly powered by WordPress | Entries (RSS) and Comments (RSS)