关于用css实现的文字超出部分显示省略号

文字超出部分显示省略号还是比较常用的一个效果,最近看到网上的一些方法亲自实践了一下,发现有些以前一些浏览器不能用的属性现在可以用了,于是研究了一番,现总结如下:

我们先来看下HTML代码:

<div>
    <p><span>用css来实现当文字超出宽度时显示省略号的效果</span></p>
</div>

CSS代码:

div{
    width: 200px;
}
 span{
    display: block;
    width: 200px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow:ellipsis;
}

我们可以看到其中可用到了text-overflow:ellipsis;网上说这是一个IE特有的属性,别的浏览器不支持,经过实践,现在chrome和火狐都已经支持了,

在chrome下的效果:

我的chrome版本号:

在火狐下的效果:

我的火狐版本号:

又说opera不支持text-overflow,针对Opera的话得使用-o-text-overflow:ellipsis;欧朋浏览器还没有装所以无法实践,但通过网上查找已经找到答案,有博主说自己新版的欧朋已经支持这个属性了,看博客时间是2012年,看来也是早就支持了的。

而且CSS中的这些属性不能少,否则不能显示省略号。可以顺着这样的思路来,要把文本限制在一行(white-space:nowrap;(white-space属性声明建立布局过程中如何处理元素中空白符)),这一行有宽度(width),有宽度就有超出的部分,将超出的部分隐藏起来(overflow:hidden;),然后后面跟上省略号(text-overflow:ellipsis;)。

还有一种非常规的方法补省略号,要用到伪对象after,思路是一个标签作内容,再加一个标签作填补省略号用,并且加起来的宽度不能超过它们容器的宽度,否则就换行。

来看下CSS代码:

span{
                display: block;
                width: 200px;
                overflow: hidden;
                white-space: nowrap;
            }
            p{
                clear: both;
            }
            p span{
                float: left;
                max-width: 175px;
            }
            p:after{
                content: "...";
            }

这样能有省略号的效果,但会有小小的问题,我们一起来看下效果:

在chrome下和火狐下都是这样的效果,可见这样的方法并不完美。

并且使用text-overflow:ellipsis来显示省略号也有好处,可以不用限定字数,对SEO也比较友好,比如我们的标题使用这个属性,标题看起来被截取了,但搜索引擎搜索的时候还是按完整的标题搜索,因为标题实际上并没有被截取,只是没有显示完全而已。

当然这样控制的方法都有一个最大的不足就是只能控制一行,js可以控制多行,并且也不复杂,我们这里只是就事论事罢了。

此外说到SEO,最近正在看一本书叫《榨干百度谷歌》,改天看完把笔记整理出来。此书没有什么干货,感觉可以归于科普读物。

本次学习不仅学到知识,也再一次验证了那句话:实践出真知。不仅要多看,还要多写,多练,实践才是检验真理的唯一标准,因为IT技术发展迅速,不知道什么时候以前不能用的现在就可以用了,以前能用的现在就不能用了,让代码真正的在自己手上过一遍,这是作为程序员基本的一个节操。

时间: 2024-08-13 22:45:08

关于用css实现的文字超出部分显示省略号的相关文章

css文字超出自动显示省略号

只针对单行文本有效: 01.针对块状元素 ul li{ width: 180px; text-overflow: ellipsis; white-space: nowrap;/*禁止自动换行*/ overflow: hidden; } css文字超出自动显示省略号显示省略号 css文字超出自动显示省略号 css文字超出自动显示省略号显示省略号 02.针对table table{ table-layout:fixed; } table td{ word-break:keep-all;/* 不换行

常用css样式(文字超出部分用省略号显示、鼠标经过图片放大、出现阴影)

文字超出部分用省略号显示: white-space: nowrap; /* 不换行 */ overflow: hidden; /* 超出部分不显示 */ text-overflow: ellipsis; /* 超出部分显示为... */ 鼠标经过图片放大 .team-img img{ width:188px; height: 200px; border-radius: 50%; transition: all 1.2s; -moz-transition: all 1.2s; -webkit-tr

css 控制文字超出部分显示省略号

该文章转自:http://www.daqianduan.com/6179.html 如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览. 实现方法: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 效果如图: 但是这个属性只支持单行文本的溢出显示省略号,如果我们要实现多行文本溢出显示省略号呢. 接下来重点说一说多行文本溢出显示

css 文字超出部分显示省略号(原)

单行超出省略号 #word1{width: 100px; text-overflow: ellipsis; overflow: hidden;} 几行超出省略号(只兼容webkit内核) #wordN{ width: 100px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;} 兼容写法(但是当文字不够长的时候省略号还是会存在,需要js判断一下) #word

多行文本,垂直居中显示,文字超出高度显示省略号

最近项目中遇到多行文本,显示不全想打省略号,块状文本垂直居中显示,功能实现如下, html:结构 <div class="questype-rate"> <ul class="clearfix"> <li> <div class="namebox"> <div class="question-name"> <div class="namerow&quo

css文本强制两行超出就显示省略号

1. 强制一行的情况很简单 overflow:hidden;  //超出的隐藏 text-overflow:ellipsis; //省略号 white-space:nowrap; //强制一行显示 2. 如果要强制两行的话,得用到css3的知识 overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; //以此类推,3行4行直接该

html使用css让文字超出部分用省略号三个点显示的方法案例

html使用css让文字超出部分用省略号三个点显示的方法: 我正确使用的就是下面的代码,li里面是a标记.在IE和google中使用是正常的,火狐不知道,我也不在意,等你来测 li{ display:block;overflow:hidden;word-break:keep-all;white-space:nowrap;text-overflow:ellipsis; } 直接拿这个css样式去用吧,编程嘛,解决就好,不用看下面的了. 语法: text-overflow : clip | elli

【转】html使用css让文字超出部分用省略号三个点显示的方法案例

html使用css让文字超出部分用省略号三个点显示的方法: 我正确使用的就是下面的代码,li里面是a标记.在IE和google中使用是正常的,火狐不知道,我也不在意,等你来测 li{     display:block; overflow:hidden; word-break:keep-all; white-space:nowrap; text-overflow:ellipsis; } 直接拿这个css样式去用吧,编程嘛,解决就好,不用看下面的了. 语法: text-overflow : cli

css 多行文字超出部分省略号 一行文字超出部分省略号

1.  <!-- 多行文字超出宽度部分省略号: 显示文字行数 隐藏多余的 文本多余显示省略号text-overflow:ellipsis)--> html: <div class="con" > <div id="div1" > 1 hello world!这是我内容的超出三行省略号显示!2hello world!这是我内容的超出三行省略号显示!3hello world!这是我内容的超出三行省略号显示! </div>