css实现单行文本和多行文本溢出显示...省略号的方法
在写css样式的时候,我们经常会对溢出的文本进行隐藏,如使用overflow:hideen。但是更友好的方案是使用“...”符号来表示文本溢出。
文本溢出有单行和多行的情况,很多时候都是看设计稿具体是啥情况了。
单行文本溢出的情况:
示例
文本溢出显示省略号,文本溢出显示省略...
实现代码:
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
多行文本溢出的情况
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略...
实现代码:
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
注意:直接用css属性设置(只有-webkit内核才有作用)
移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端;
-
-webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
-
display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。
-
-webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。
-
text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。
多行文本溢出实现方法二:css伪类的办法
<div id="con">
<span id="txt">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略</span>
<span class="t"></span>
</div>
<style>
#txt{
display: inline-block;
height: 40px;
width: 250px;
line-height: 20px;
overflow: hidden;
font-size: 16px;
}
.t:after{
display: inline;
content: "...";
font-size: 16px;
}
</style>
多行文本溢出实现方法三:利用绝对定位和padding;(跨浏览器解决方案)
看到上例是不是觉得“哇,终于可以跨浏览器使用了”,但你这样想的时候有没有考虑过IE的感受?IE6/7是没有伪类的,还不赶快跪下对IE叫声“大哥”,虽然IE6已经退出市场,但是IE7还是需要兼容的,所以呢,我自己又想到了以下的办法,我这边测试了下感觉还行。
<p id="con2">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略<span class="t2">...</span>
</p>
<style>
#con2{
position: relative;
height: 40px;
width: 250px;
line-height: 20px;
overflow: hidden;
padding-right: 12px;
}
.t2{
position: absolute;
right: 0;
bottom: 0;
}
</style>
这个方法的原理是:首先在包含文字的元素里,嵌入一个<span>...</span>
,然后包含文字的元素右侧留出...
的位置(padding-right
),最后利用绝对定位将...
定位至右侧的padding-right
区域
效果图:
版权声明
本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。
评论