网站地图    收藏   

主页 > 前端 > javascript >

Js与css实现文本溢出自动添加省略号方法总结

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 我们经常会碰到文章标题过长了,这样会影响网页美观了,但又不能使用程序直接截取掉了,这样对seo优化又不好,思来想去找了一些可以实现文本溢出自动添加省略号方法,这里主要...

1.常规css方法——可以实现IE,Safari,chrome,opera浏览器下文字溢出省略号表示
这是一段测试文字,主要是用来测试文字溢出后是否会用省略号显示。

 代码如下 复制代码
.zxx_text_overflow_1{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; overflow:hidden;}

2.使用ellipsis.xml文件使Firefox支持文字溢出后点点点省略号表示
这段代码调用了跨文件夹路径的ellipsis.xml文件,看Firefox浏览器下是够文字溢出省略号表示。
ps: 在Firefox下上面div内容显示空白,此div内容是:“这段代码添加了跨文件夹路径的ellipsis.xml文件,看Firefox浏览器下是够文字溢出省略号表示”。

 代码如下 复制代码
.zxx_text_overflow_2{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -moz-binding:url('../xml/ellipsis.xml#ellipsis'); overflow:hidden;}

这段代码调用了同文件夹路径的ellipsis.xml文件,看Firefox浏览器下是够文字溢出省略号表示。
ps: 在Firefox下上面div文字溢出省略号显示,此div内容是“这段代码调用了同文件夹路径的ellipsis.xml文件,看Firefox浏览器下是够文字溢出省略号表示”。至此,几乎所有主流浏览器都实现文字溢出省略号表示。

 代码如下 复制代码
.zxx_text_overflow_3{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -moz-binding:url('ellipsis.xml#ellipsis'); overflow:hidden;}

这里有个小结论:这个使Firefox浏览器下文字溢出省略号表示的ellipsis.xml文件要在页面的同一目录下,或是下一级目录下(我已测试),要是向上跨文件夹访问或绝对路径访问则失效。原因不详!


js实现代码

 代码如下 复制代码

<title>Js文本溢出自动添加省略号ellipsis-兼容版</title>
<style type="text/css">
    * {margin:0;padding:0;font-size:12px;}
    #div{width:200px;height:200px;}
    #div2{width:300px;height:200px;}
    .ellipsis {border:1px solid red;font-size:12px;line-height:25px;word-wrap:break-word;}
    </style>
    <script type="text/javascript">
    function formatEllipsis(){
           var arr=[];
           var aDiv=document.getElementsByTagName("*");
           for(var i=0;i<aDiv.length;i++){
                   if(aDiv[i].className=="ellipsis"){
                           arr.push(aDiv[i]);
                   }
           }
           for(var i=0;i<arr.length;i++){
                   new ellipsis(arr[i]);
           }
    }
    function ellipsis(obj){
           this.obj=obj;
           this._style=[];
           this._width=getStyle(this.obj,"width");
           this._height=getStyle(this.obj,"height");
           this._fontSize=getStyle(this.obj,"fontSize");
           this._lineHeight=getStyle(this.obj,"lineHeight");
           var limit=this.format();
           //alert(limit);
           var _html=obj.innerHTML;
           obj.innerHTML=_html.substring(0,limit)+"...";
    }
    ellipsis.prototype.format=function(){
           var _html=this.obj.innerHTML;
           var _len=_html.length;
           var _lines=Math.floor(this._width/this._lineHeight);
           var _cols=Math.floor(this._width/this._fontSize);
           return _lines*_cols-3;
    }
    function getStyle(e,p){
           var s= e.currentStyle ? e.currentStyle[p] : document.defaultView.getComputedStyle(e,null)[p];
           return parseInt(s);
    }
    window.onload=function(){
           formatEllipsis();
    }
    </script>
    </head>
    <body>
    <div id="div" class="ellipsis">你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好</div>
    <div id="div2" class="ellipsis">nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn</div>
    </body>
    </html>

css文本溢出自动添加省略号

1.兼容 IE6 / IE7 /FireFox
2.文本对象:table里的文本,不能换行
3.如果采用js截取,支持resize,并保证页面执行效率
4.确保firefox下省略号的出现

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css文字截取</title>
<style type="text/css">
body{font-size:13px;color:#8c966b;}
div{clear:both;width:340px;border:1px solid #333;margin:3px;padding:3px;}
div a{color:#8c966b;text-decoration:none;}
div a:hover{text-decoration:underline;}
div a{display:block;width:310px;white-space:nowrap;overflow:hidden;float:left;
-o-text-overflow: ellipsis; /* for Opera */
text-overflow:ellipsis; /* for IE */
}
div:after{content:"...";padding-left:3px;font-size:12px;}/* for Firefox */
</style>
</head>
<body>
<div><a href="">用css来实现自动截取文字,不需要后台程序和JS的使用</a></div>
<div><a href="">好处是:有利于内容完整性,有利于SEO,无需后台程序处理,可以在前台随时调节要截取的长度。</a></div>
<div><a href="">不好的地方:不能自动判断截取长度,当字符很短的时候在Firefox中也会生成后面的省略符号。</a></div>
<div><a href="">另外在设置截取宽度的时候,要注意,尽量让文字截取完整</a></div>
</body>
</html>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论