多行实现文本溢出效果(实用)

要实现单行文本溢出效果:

前提要给元素固定宽度,并且设置overflow:hidden;
然后联用下面属性:
white-space:nowrap; 是指不换行,就是说只能一行显示。
text-overflow:ellipsis; 在一行的最后用“ … ”来表示。

而有时我们需要在多行的时候,在最后一行的最后用“…”来表示,实现溢出效果:

1、在webkit为内核的浏览器中可以使用一个不规范的属性-webkit-line-clamp( unsupported WebKit property ;没有出现在 CSS 规范草案中;作用是:限制在一个块元素显示的文本的行数),而且要结合display: -webkit-box;(将对象作为弹性伸缩盒子模型显示 )和-webkit-box-orient:vertival;(设置或检索伸缩盒对象的子元素的排列方式 )。例如给元素p一个.ellipsis的class

.ellipsis{
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

2、利用js(正则表达式来匹配)来模拟(要给外层div一个固定的height或者max-height; 和 overflow:hidden;)。eg:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            padding: 0;
            margin: 0;
        }
        .outer{
            width: 500px;
            height: 80px;
            line-height: 20px;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div class="outer">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam corporis, deleniti dolor ducimus error eveniet fuga iusto laborum nisi odio perferendis reprehenderit sint sit temporibus voluptatibus. Cupiditate exercitationem quis voluptate. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam architecto consequatur dolores error facilis illo odio quis repellendus sed temporibus. Adipisci aliquam ea eaque esse iste nostrum numquam repellendus rerum! </p>
    </div>
    <script src="../js/jquery-1.12.4.js"></script>
    <script>
        $(".outer").each(function(i){
            var outerH = $(this).height();
            var $p = $("p", $(this)).eq(0);
            while ($p.outerHeight() > outerH) {
                $p.text($p.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
            };
        });
    </script>
</body>
</html>

效果:
多行文本溢出

3、用:after/ ::after伪类或者用图片插入(…)的方式不推荐,因为不自然

p::after {
    content:"...";
    font-weight:bold;
    position:absolute;
    bottom:0;
    right:0;
    padding:0 20px 1px 45px;
    /*background:url("ellipsis_bg.png") repeat-y;*/
}

4、用插件小工具:

var module = document.getElementById("clampjs");
$clamp(module, {clamp: 3});
var element = document.getElementById('ftellipsis');
var ellipsis = new Ellipsis(element);

ellipsis.calc();
ellipsis.set();
$(document).ready(function() {
    $("#wrapper").dotdotdot({
        //  configuration goes here
    });
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值