当文本内容字数过多时,用户控制文本内容的展示、收起 。恰巧在项目中遇见,因此就有了这个功能的简单实现

一、超出文本只显示省略号
HTML代码:

    <div id="text">这里就是一个标签,里面的内容全是乱写的,也不知道怎么写</div>

CSS代码:

//一行文本超出宽度显示省略号
#text{
    width: 50px; /* 容器宽度 */
    white-space: nowrap; /* 文本不换行 */
    overflow: hidden; /* 内容会被修剪,并且超过设置宽度的内容是不可见的 */
    text-overflow: ellipsis;/*显示省略符号来代表被修剪的文本*/
}
//超出2行文本显示省略号
 //width: 280rpx;   //自己定宽度
  //white-space: nowrap;  //需要注释掉
  overflow: hidden; //超出隐藏
  text-overflow: ellipsis;  //文本超出,用ellipsis省略号
  //显示多行
   display: -webkit-box;/* 弹性盒模型 */
   -webkit-box-orient: vertical;/* 元素垂直居中*/
   -webkit-line-clamp: 2;/*  文字显示的行数*/

white-space 属性:请参考 点击这里
overflow 属性:请参考 点击这里
text-overflow 属性:请参考 点击这里

二、内容 展开全部、收起
HTML代码:

<div>
        <p id="content">这个时间里的小草是最硕大最柔软的新床,诱惑着我们把自己的身躯无比舒坦地交给她们,没有了焦虑,没有了烦恼,在青草的簇拥下,做一个最轻松的美梦。</p>
        <p id="openBtn">展开全部</p>
    </div>

JS代码:

<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script>
    //定义函数 $ 根据元素id获得页面元素,提高效率
    function $(id){
        return document.getElementById(id);
    }
    // 立即执行函数,判断文本长度是否过长
    (function(){
        var conText = $('content').innerText
        if(conText.length >= 20){
            $('content').style.cssText = "width: 400px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"
        }
    })()
    //点击事件,控制内容显示、收起
    $('openBtn').onclick=function(){
        let text = $('openBtn').innerText;
        if(text == '展开全部'){
            $('content').style.cssText = "color:chartreuse";
            $('openBtn').innerHTML = '收起'
        }
        if(text == '收起'){
            $('content').style.cssText = "width: 400px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;";
            $('openBtn').innerHTML = '展开全部'
        }
    }
</script>

OK!!以上就是一些简单的实现。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐