如何用css使文本溢出边界显示为省略号

JavaScript018

如何用css使文本溢出边界显示为省略号,第1张

一些列表标题会要求显示两行+……

单行文本溢出显示省略号(…)

text-overflow:ellipsis-----部分浏览器还需要加宽度width属性

END

多行文本溢出显示省略号

WebKit浏览器或移动端的页面

在WebKit浏览器或移动端(绝大部分是WebKit内核的浏览器)的页面实现比较简单,可以直接使用WebKit的CSS扩展属性(WebKit是私有属性)-webkit-line-clamp ;注意:这是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。

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

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

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

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

这个属性比较合适WebKit浏览器或移动端(绝大部分是WebKit内核的)浏览器

跨浏览器兼容的方案

比较靠谱简单的做法就是设置相对定位的容器高度,用包含省略号(…)的元素模拟实现;

这里注意几点:

height高度真好是line-height的3倍;

结束的省略好用了半透明的png做了减淡的效果,或者设置背景颜色;

IE6-7不显示content内容,所以要兼容IE6-7可以是在内容中加入一个标签,比如用<span class="line-clamp">...</span>去模拟;

要支持IE8,需要将::after替换成:after;

END

JavaScript 方案

用js也可以根据上面的思路去模拟,实现也很简单,推荐几个做类似工作的成熟小工具

1.Clamp.js

下载及文档地址:https://github.com/josephschmitt/Clamp.js使用也非常简单:

步骤阅读

2.jQuery插件-jQuery.dotdotdot

这个使用起来也很方便:

HTML文字超过两行以后 就用省略号显示代替如下:

style = " overflow :   hidden  text-overflow :   ellipsis  display :   -webkit-box  -webkit-line-clamp :   2  -webkit-box-orient :   vertical  "

HTML文字超过一行以后 就用省略号显示代替如下:

.font_cut{ width: 100% white-space:nowrap overflow:hidden text-overflow: ellipsis }

<div class="font_cut" style="width: 300px">34<span>一行显示不下,就用省略号代替;一行显示不下,就用省略号代替;一行显示不下,就用省略号代替;一行显示不下,就用省略号代替;一行显示不下,就用省略号代替;一行显示不下,就用省略号代替;</span>35</div>

html文字超出两行,则显示省略号

多行超出显示省略号

overflow: hidden

text-overflow: ellipsis

display: -webkit-box

-webkit-line-clamp: 2//2行

-webkit-box-orient: vertical

注意:-webkit-line-clamp是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。只适用于WebKit内核的浏览器,因此firebox、ie等并不支持该属性。

其他浏览器做法:

比较靠谱简单的做法就是设置相对定位的容器高度,用包含省略号(…)的元素模拟实现:

文字容器样式设置:

position:relative

line-height:1.4em

height:4.2em//height是line-height的整数倍,防止文字显示不全

overflow:hidden

文字容器::after {

background: linear-gradient(to right, rgba(255, 255, 255, 0), #FFFFFF 50%) repeat scroll 0 0 rgba(0, 0, 0, 0)

bottom: 0

content: "..."

padding: 0 5px 1px 30px

position: absolute

right: 0

}

或者使用插件:js插件-Clamp.js 、 jquery插件-jQuery.dotdotdot

单行不换行:width:100%text-overflow:ellipsiswhite-space:nowrapoverflow:hidden

1.打开www文件夹,再打开js文件夹,在此目录下rpg_managers.js文件中,搜索 Object.defineProperty(ConfigManager, 'bgmVolume', 确认上方有 function ConfigManager()

2.在↑位置(Object.defxxxx)前面,把整个defineProperty复制一遍。从Object.def...一直到configurable: true})(最后的符号‘}’也是要的),并更改为如下内容:

Object.defineProperty(ConfigManager, 'troopidNum', {

get: function() {

return AudioManager._troopidNum//别问我为什么这里是这么写的,我不知道

},

set: function(value) {

AudioManager._troopidNum = value

},

configurable: true

})

其中,troopidNum 可以更换为其他名字,英文即可。其他的不要动。(提示:可以用ctrl+h进行替换)

3.在rpg_managers.js文件中,搜索 ConfigManager.makeData = function(),在 config.commandRemember = this.commandRemember下一行添加如下内容:

config.troopidNum = this.troopidNum//提示,名字可更换,具体参照2

4.在↑的下方(大概10行内)找到applyData,参照3内位置添加:

this.troopidNum = this.readNum(config, 'troopidNum')

5.在 applydata 后面,添加如下内容:

ConfigManager.readNum = function(config, name) {

var value = config[name]

if (value !== undefined) {

return Number(value).clamp(0, 9)

} else {

return 0

}

6.在rpg_managers.js文件中,搜索AudioManager._bgmVolume,在 AudioManager._bgmVolume = 100上一行添加如下内容:

AudioManager._troopidNum = 0

rpg_managers.js文件修改完毕,第一部分结束。