CSS显示两行或三行文字,然后多出的部分省略号代替

html-css021

CSS显示两行或三行文字,然后多出的部分省略号代替,第1张

-webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。

限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他外来的WebKit属性。常见结合属性:

display: -webkit-box必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。

-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。

text-overflow,可以用来多行文本的情况下,用省略号“...”隐藏超出范围的文本 。

如果想要在一行里实现“超出长度显示省略号”,是可以的。

overflow: hiddenwhite-space: nowraptext-overflow:ellipsis

这几句css就可以,不要加上去的容器一定要写了宽度的

注意:这里实现的是“超出长度”,而不是“超出字数”,并且在一行里实现。

如果是两行或者三行的容器,想要纯用css实现这个方法,是没办法做到的。

可以提供两种方法,一是用程序输出时截字,二是用js判断字数截取。

JS的demo如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Examples</title>

<style type="text/css">

.demo{width: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>

解决方法: 在-webkit-box-orient: vertical前后加上如下注释跳过编译即可

/*! autoprefixer: off /

-webkit-box-orient: vertical

/ ! autoprefixer: on */