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

如果觉得本文不错的话,帮忙点击下面的推荐哦
>>>>点击阅读原文

如果觉得本文不错的话,帮忙点击下面的推荐哦,文章未经说明,均为原创,转载请注明出处,谢谢!

转载于:https://www.cnblogs.com/best-coder/p/11550185.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现CSS多行文本溢出显示省略号的效果,可以使用以下方法: 1. 首先,需要设置容器的固定宽度和高度,例如通过设置`.wrap`的`width`和`height`属性来确定容器的大小。 2. 然后,需要对文本内容的容器设置一些样式,例如`.content`类。可以使用`overflow: hidden;`来隐藏超出容器尺寸的内容。使用`text-overflow: ellipsis;`来在文本溢出显示省略号。 3. 如果想要显示多行文本并且超出部分显示省略号,可以使用`-webkit-line-clamp`属性来设置行数。例如,可以使用`-webkit-line-clamp: 3;`来限制显示文本的行数为3行。但是请注意,这个属性只在WebKit浏览器中生效,其他浏览器可能需要添加一些兼容性样式。 4. 最后,你可以通过设置`display: -webkit-box;`和`-webkit-box-orient: vertical;`来使文本在多行情况下垂直排列。 示例代码如下: ``` <div class="wrap"> <div class="content"> 测试数据:css多行文本溢出显示省略号,多行文本溢出显示省略号--明天也要努力 </div> </div> <style> .wrap { width: 200px; height: 300px; } .content { width: 100%; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: 3; display: -webkit-box; -webkit-box-orient: vertical; } </style> ``` 以上代码将在一个宽度为200px,高度为300px的容器中显示多行文本。超出3行的部分将被隐藏,并以省略号"..."显示。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [CSS中 设置( 单行、多行 )超出显示省略号](https://blog.csdn.net/ZYS10000/article/details/127607497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [CSS实现单行、多行文本溢出显示省略号(…)](https://blog.csdn.net/qq_43000315/article/details/125313649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值