你的位置:首页 > 网页设计

[网页设计]单行及多行文本溢出以省略号显示的方法总结


需求:

在前端页面布局中,经常会有因文字过多而影响页面排版。特别是在移动端页面中,因屏幕宽度不够段落文字如完全显示则会打乱布局。因此若段落文字能根据屏幕空余大小而显示就完美了,也就是若屏幕够大,段落文字就完全显示,若屏幕很小,则段落文字以省略号的形式部分显示。

解决办法:

在CSS3中有text-overflow属性,不熟悉的同学可以点此查询。用来实现单行文本的溢出显示省略号,单行文本的溢出显示省略号在现代浏览器及移动端都能实现兼容。

效果如图:

实现方法:

    <p>作为微软的游戏平台,Xbox已经出现在了Windows Phone和Windows 8中,就在最近,微软宣布将旗下的Zune消费品牌也一并整合至Xbox品牌下,Xbox Live服务影响力越来越大,渗透面也越来越广。</p>

  p {    width: 410px;    overflow: hidden;    text-overflow: ellipsis;    white-space: nowrap;  }

问题来了:如果我们要实现多行文本溢出显示省略号呢?

解决办法:Webkit支持一个名为-webkit-line-clamp的属性,不熟悉的同学可以点此查询。这个属性是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。但在webkit内核的浏览器中可以使用。

效果如图:

实现方法:

  <div class="figcaption">    <p>作为微软的游戏平台,Xbox已经出现在了Windows Phone和Windows 8中,就在最近,微软宣布将旗下的Zune消费品牌也一并整合至Xbox品牌下,Xbox Live服务影响力越来越大,渗透面也越来越广。</p>  </div>  <div class="figcaption">    <p>固定一个喜欢的网站可不可以?当然!把每天常去的网站统统固定到开始屏幕中。如何固定?打开 IE10,在网页空白处点击鼠标右键,在应用栏中点击“图钉”图标即可完成固定。</p>  </div>  <div class="figcaption">    <p>先前给大家介绍了很好用的 Colors!今天给大家介绍一款风格不同的画画软件——Fresh Paint,我们可以用它画出油画。</p>  </div>

  .figcaption {    background: #EEE;    width: 410px;    height: 3em;    margin: 1em;  }    .figcaption p {    line-height: 1.5em;    overflow: hidden;    text-overflow: ellipsis;    display: -webkit-box;    -webkit-line-clamp: 2;    -webkit-box-orient: vertical;    /*因使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;*/  }

问题又来了:如何在其他主流浏览器中实现完美兼容呢?看来还得靠JS实现

解决办法:

(实现原理:通过从后向前逐个替换末尾字符,直至元素的高度小于父元素高度)

<script src="http://apps.bdimg.com/libs/jquery/1.11.3/jquery.min.js"></script><script type="text/javascript"> $(".figcaption").each(function(i) {    var divH = $(this).height();    var $p = $("p", $(this)).eq(0);    while ($p.outerHeight() > divH) {      $p.text($p.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));    };  });</script>