div+css怎么显示两行或三行文字,然后多出的部分省略号代替??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了div+css怎么显示两行或三行文字,然后多出的部分省略号代替??相关的知识,希望对你有一定的参考价值。
如果想要在一行里实现“超出长度显示省略号”,是可以的。
overflow: hidden;white-space: nowrap;text-overflow:ellipsis;这几句css就可以,不要加上去的容器一定要写了宽度的
注意:这里实现的是“超出长度”,而不是“超出字数”,并且在一行里实现。
如果是两行或者三行的容器,想要纯用css实现这个方法,是没办法做到的。
可以提供两种方法,一是用程序输出时截字,二是用js判断字数截取。
JS的demo如下:
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<title>Examples</title>
<style type="text/css">
.demowidth:100px;
</style>
</head>
<body>
<div class="demo" id="demo">怎么显示两行或三行文字,然后多出的部分省略号代替?</div>
<script>
// js无法直接通过class获取对象,必须自己写一个方法,这样效率会非常低,原生js里最好用id获取,
// 直接用id获取domo对象
var oBox=document.getElementById('demo');
// slice() 方法可从已有的数组中返回选定的元素。
// 您可使用负值从数组的尾部选取元素。
// 如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
// 此处需要根据需求自行修改slice()的值,以达到要显示的内容
var demoHtml = oBox.innerHTML.slice(0,10)+'...';
// 填充至指定位置
oBox.innerHTML = demoHtml;
</script>
</body>
</html> 参考技术A 在样式表中加入:overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用 参考技术B 这个可以用列表来实现
<ul>
<li>文字...</li>
<li>文字...<</li>
<li>文字...<</li>
</ul> 参考技术C 最简单的方法就是:
<ul>
<li>字字字...</li>
<li>字字字...<</li>
<li>字字字...<</li>
</ul> 参考技术D display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
CSS3实现两行或三行文字,然后多出的部分省略号代替
概述
-webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他外来的WebKit属性。常见结合属性:
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
text-overflow,可以用来多行文本的情况下,用省略号“...”隐藏超出范围的文本 。
语法
-webkit-line-clamp:<number>
默认值: ? ?表示不清楚;
适用于:块元素
继承性:无
动画性:否
计算值:指定的值
取值
<number>:
块元素显示的文本的行数。
* CSS3新增属性可能存在描述错误及变更,仅供参考,持续更新
示例:(注意要设置固定高度,宽度可不限定)
font-size: 12px;
line-height: 18px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
height:50px;
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <p style=" overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; "> static:对象遵循常规流。top,right,bottom,left等属性不会被应用。 relative: 对象遵循常规流,并且参照自身在常规流中的位置通过top,right,bottom,left属性进行偏移时不影响常规流中的任何元素。 absolute:对象脱离常规流,使用top,right,bottom,left等属性进行绝对定位,盒子的偏移位置不影响常规流中的任何元素,其margin不与其他任何margin折叠。fixed:对象脱离常规流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。center:对象脱离常规流,使用top,right,bottom,left等属性指定盒子的位置或尺寸大小。盒子在其包含容器垂直水平居中。盒子的偏移位置不影响常规流中的任何元素,其margin不与其他任何margin折叠。(CSS3)page:盒子的位置计算参照absolute。盒子在分页媒体或者区域块内,盒子的包含块始终是初始包含块,否则取决于每个absolute模式。(CSS3) sticky: 对象在常态时遵循常规流。它就像是 relative 和 fixed 的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。(CSS3)* CSS3新增属性可能存在描述错误及变更,仅供参考,持续更新 </p> </body> </html>
以上是关于div+css怎么显示两行或三行文字,然后多出的部分省略号代替??的主要内容,如果未能解决你的问题,请参考以下文章