CSS文本溢出显示省略号
项目中常常有这种需要我们对溢出文本进行"..."显示的操作,单行多行的情况都有(具体几行得看设计师心情了),这篇随笔是我个人对这种情况解决办法的归纳,欢迎各路英雄指教。
单行
语法
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号
多行
1.直接用css属性设置(只有-webkit内核才有作用)
语法
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
移动端浏览器绝大部分是WebKit内核的,所以该方法适用于移动端;
-
-webkit-line-clamp 用来限制在一个块元素显示的文本的行数,这是一个不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
-
display: -webkit-box 将对象作为弹性伸缩盒子模型显示 。
-
-webkit-box-orient 设置或检索伸缩盒对象的子元素的排列方式 。
-
text-overflow: ellipsis 以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略
2.利用伪类
语法
<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>
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略
3.利用绝对定位和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
区域
示例
文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略...
4.其他
利用js插件来实现该功能,这里有俩款插件推荐,这篇主要介绍的是css方法,所以它们使用方法就不废话了。
问题
感谢村长指出了第二种和第三种都没有考虑到内容不足俩行的情况,这种情况下,我的上面说到的第二种和第三种方法,“...”依旧会存在,并不会隐藏。暂时还没有想出利用css来实现不到俩行隐藏的办法,sorry。所以如果存在不到俩行的情况尽量还是不要用了吧,可以使用js。这个就先放在这儿,什么时候想到办法再来修改
function mitulineHide(num,con){
var contain = document.getElementById(con);
console.log(con);
var maxSize = num;
var txt = contain.innerHTML;
if(txt.length>num){
console.log('1')
txt = txt.substring(0,num-1)+"..."
contain.innerHTML = txt;
}else{
console.log("error")
}
};
该函数传入俩个参数:允许的最大文字数目
、包含文字的元素节点Id
相关文章
- CSS动画实例:双螺旋旋转
- CSS图形基础:利用线性渐变绘制图形
- CSS学习(九)-CSS背景
- 【Css/小程序】DIV超出文本隐藏,并且显示“...”
- 【Css/Html】网页Css默认设计样式载入模板代码body.css
- web开发规范 - css书写规范
- [转]CSS Display(显示) 与 Visibility(可见性)
- Day6:html和css
- CSS 盒子模型【快速掌握知识点】
- CSS 选择器继承和层叠
- 《HTML CSS JavaScript 网页制作从入门到精通 第3版》—— 2.2 标题标记title
- Django入门完整教程之如何使用 Django 和 Bulma CSS 构建 CMS(教程含源码)
- CSS训练合集——绘制三角形
- VUE-016-CSS 控制 div 层级显示为最顶层,CSS层级样式控制实例
- NuxtJS处理因css在服务端渲染而增加源代码量,从而影响到SEO的问题及VUE提取 CSS 到单个文件
- CSS阻塞渲染、怎么防止css阻塞
- 浅析css动画知识:用法介绍(规则与关键帧)animation-delay为负值提前进行动画、动画函数(三次贝塞尔曲线与步骤缓动函数)补间动画与逐帧动画效果、如何控制动画运行或暂停及控制元素各阶段状态、动画循环次数与方向
- CSS控制显示超出部分,用省略号显示
- CSS实现单行、多行文本溢出显示省略号(…)
- CSS 加粗(css font-weight)
- css样式图片居中显示,不平铺