用省略号代替span中的长文字

来源:互联网 发布:视频软件大全 编辑:程序博客网 时间:2024/06/03 01:41

用省略号代替span中的长文字。

        1. 通过CSS控制

[html] view plain copy
 print?
  1. <html>  
  2.     <head>  
  3.         <style type="text/css">  
  4.             body{  
  5.                 font-family:Arial, Helvetica, sans-serif;/* 字体 */  
  6.                 font-size:12px;/* 字体大小12像素 */  
  7.             }  
  8.             a{  
  9.                 width: 140px;/* 要显示文字的宽度 */  
  10.                 float: left;/* 左对齐,不设置的话只在IE下好用 */  
  11.                 overflow: hidden; /* 超出的部分隐藏起来 */  
  12.                 white-space: nowrap;/* 不显示的地方用省略号...代替 */  
  13.                 text-overflow: ellipsis;/* 支持 IE */  
  14.                 -o-text-overflow: ellipsis;/* 支持 Opera */  
  15.             }  
  16.         </style>  
  17.     </head>  
  18.     <body>  
  19.         <a href="#">CSS截取字符串,超出用省略号代替</a>  
  20.     </body>  
  21. </html>  

        通过CSS控制不需要改变文本本身,可以在页面渲染的时候就控制如何显示了,并且可以通用,缺点是只能在文字尾部加省略号,但有的时候我想要这种格式,“测试-看我有多长看我....doc”,如果文本过长的话,.doc前的文本加省略号,保留格式标志,这种CSS就无法控制了。

        2. 通过改变要显示的文本,前提是动态网站,思路是后台语言取得文本内容后,在显示在前台前,根据页面当前字体样式动态改变文本。

[java] view plain copy
 print?
  1. Font font = new Font("SansSerif", Font.PLAIN, 12);  
  2. Button button = new Button();  
  3. FontMetrics metrics = button.getFontMetrics(font);  
  4.   
  5. String info = "CSS截取字符串,超出用省略号代替";  
  6. String temp = info;  
  7. while(metrics.stringWidth(temp) > 140) {  
  8.     temp = temp.substring(0, temp.length() - 1);  
  9. }  
  10. System.out.println(temp + "...");  

        这是用AWT算的,这种方式有点2。

        3. 通过JavaScript计算

[javascript] view plain copy
 print?
  1. function test() {                 
  2.     var info = "CSS截取字符串,超出用省略号代替";  
  3.     var temp = info;  
  4.     while(getTextWidth(temp) > 140) {  
  5.         temp = temp.substring(0, temp.length - 1);  
  6.     }  
  7.     console.log(temp + "...");  
  8. }  
  9.   
  10. function getTextWidth(info) {  
  11.     var width;  
  12.     var textNode = document.createTextNode(info);// 根据文本创建文本节点  
  13.     var spanNode = document.createElement("span");// 创建span  
  14.     spanNode.appendChild(textNode);// 文本节点加入到span  
  15.     document.body.appendChild(spanNode);// span加入到body,这时的文本已经过定义的CSS渲染  
  16.     width = spanNode.offsetWidth;// 得到span宽度  
  17.     document.body.removeChild(spanNode);// 删除span  
  18.     return width;  
  19. }  

        这种方式是根据文本动态创建一个span,从而得到文本宽度,效率应该很低。

0 0
原创粉丝点击