多行文本溢出显示省略号,并兼容IE

2 篇文章 0 订阅
1 篇文章 0 订阅

工作的过程中难免需要对文本限制字数,超出部分显示省略号,单行的我们知道如下:

overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;

那么多行的怎么办,之前一般写的是:

display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;

但是适用范围只局限与浏览器内核是webkit的,下面这种虽然兼容,但是对没达到行数要求的依然显示省略号,那么怎么达到即兼容浏览器又能在我们规定的行数超过之后显示省略号呢

p{
    position: relative; 
    line-height: 20px; 
    max-height: 40px;
    overflow: hidden;
}
p::after{
    content: "..."; 
    position: absolute; 
    bottom: 0; 
    right: 0; 
    padding-left: 40px;
    background: -webkit-linear-gradient(left, transparent, #fff 55%);
    background: -o-linear-gradient(right, transparent, #fff 55%);
    background: -moz-linear-gradient(right, transparent, #fff 55%);
    background: linear-gradient(to right, transparent, #fff 55%);
}

那么,我们决定用js来优化上面这段代码。
css:

 p {
   position: relative;
    margin:20px auto;
    width: 286px;
    font-size: 13px;
    color: #868789;
    line-height: 17px;
    text-align: left;
    overflow: hidden;

}
.p-after:after{
    content: "..."; 
    position: absolute; 
    bottom: 0; 
    right: 0; 
    padding-left: 40px;
    background: -webkit-linear-gradient(left, transparent, #fff 55%);
    background: -moz-linear-gradient(left, transparent, #fff 55%);
    background: -o-linear-gradient(left, transparent, #fff 55%);
    background: linear-gradient(to right, transparent, #fff 55%);
}

js:

 $(function(){
 //获取文本的行高,并获取文本的高度,假设我们规定的行数是五行,那么对超过行数的部分进行限制高度,并加上省略号
   $('p').each(function(i, obj){
        var lineHeight = parseInt($(this).css("line-height"));
        var height = parseInt($(this).height());
        if((height / lineHeight) >5 ){
            $(this).addClass("p-after")
            $(this).css("height","85px");
        }else{
            $(this).removeClass("p-after");
        }
    });
})

html:

<p>唧唧复唧唧,木兰当户织,不闻机杼声,惟闻女叹息。女亦无所思,女亦无所忆。昨夜见军帖,可汗大点兵。军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄。愿为市鞍马,从此替爷征。东市买骏马,西市买鞍鞯。南市买辔头,北市买长鞭。不闻爷娘唤女声,只闻黄河之水鸣溅溅。哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</p>
<p>唧唧复唧唧,木兰当户织,不闻机杼声,惟闻女叹息。女亦无所思,女亦无所忆。昨夜见军帖,可汗大点兵。军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄。愿为市鞍马,从此替爷征。</p>
<p>该螺母通常用于公共场所以保护标识、照明装置和显示器。Lorem Ipsum只是一个打印和排版的行业的简单制作样本。1500年以前Lorem Ipsum曾经是这个行业的标准制作样本,直到一个未知的印刷者制作了一个活版盘的类型.</p>

效果如图:
这里写图片描述

CSS多行文本溢出显示省略号的方法在不同浏览器中有一些兼容性问题。以下是两种解决方案: 解决方案一: 使用webkit属性来兼容谷歌和火狐浏览器,但不兼容IE浏览器。你可以使用以下样式规则: ```css overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; /* 希望显示2行 */ -webkit-box-orient: vertical; ``` 这种方法可以在谷歌和火狐浏览器中正常工作,但在IE浏览器中可能会出现问题。 解决方案二: 使用兼容性更好的CSS属性,适用于大部分浏览器,包括IE浏览器。你可以使用以下样式规则: ```css width: 200px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; ``` 这种方法可以在大部分浏览器中正常工作,包括IE浏览器。 综上所述,如果你需要考虑兼容性问题,建议使用解决方案二。如果你只关注谷歌和火狐浏览器,可以使用解决方案一。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [纯CSS实现多行文本溢出显示省略号兼容不同浏览器)](https://blog.csdn.net/c11073138/article/details/101532461)[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: 33.333333333333336%"] - *2* [CSS(层叠样式表)笔记.txt](https://download.csdn.net/download/bxy0806/88237826)[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: 33.333333333333336%"] - *3* [css多行文本溢出显示省略号 兼容ie](https://blog.csdn.net/qq_35469137/article/details/127850254)[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: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值