判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号


Posted in Javascript onApril 28, 2019

在进行H5页面开发时,项目都要提测了,产品却加了个点击展开和点击收起的需求。。 上知乎看了下 ,也有人有这样的疑问,今天我就把问题给解决啦~

这里就来讲述下我的解决方案:

利用多行溢出实现“展开”“收起”

多行溢出省略Css:

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

设计是这样的。。

判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号

点击展开.png

判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号

点击收起.png

接下来我来讲讲我的实现

<div class="review">
 孙燕姿导师评语:这位同学唱功基础扎实,转音和高低音的切换非常自然,整首歌曲感情饱满,非常不错。整首歌曲感情饱满,非常不错。整首歌曲感情饱满,非常不错。
</div>
<style>
.review{
  padding-top: .2rem;
  padding-bottom: .1rem;
  margin-left: .9rem;
  font-size: .32rem;
  color:#b85423;
  line-height: 1.5em;
  position: relative;
}
.ellipsis{
  overflow : hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.spread{
  padding-right: .2rem;
  position: absolute;
  bottom: .09rem;
  right:0;

}
.spread i{
  width: .2266rem;
  height:.2266rem;
  display: inline-block;
  vertical-align: middle;
  background-image: url(/cdn_img/plusSprite.png);
  background-repeat: no-repeat;
  background-size: .2266rem .72rem;
}
.spread i.plus{
  background-position: 0 0;
}
.spread i.reduce{
  background-position: 0 -0.4933rem;
}
</style>
$('.teacher-review').forEach(function(v,i){
  // 引入flexible.js 进行移动端适配 
  // 根据flexible 获取rem 即 window.rem
  if(v.clientHeight > (1.27*window.rem)){
    var el = document.createElement('span');
    el.innerHTML = '... <i class="plus"></i>点击展开';
    el.className = 'spread';
    // 由于每条评论相间背景
    el.style.backgroundColor = i%2 == 0 ? '#ffca48' : '#ffd358';
    v.appendChild(el);
    // multi 是显示溢出的标志
    $(v).addClass('ellipsis multi') 
  }
})
// 点击判断收起还是展开
$('.review').on('click','.multi',function(e){
  var $this = $(this)
  if($this.hasClass('ellipsis')){
    $this.removeClass('ellipsis').find('span').html('<i class="reduce"></i>点击收起');
  }else{
    $this.addClass('ellipsis').find('span').html('... <i class="plus"></i>点击展开');
  }
})

结果是这样的。。。。

判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号

这里讲解下展开收起的思路:

出现展开的情况是因为内容溢出,那内容没溢出就不需要显示“点击展开的按钮啦”,好心烦,突然接到需求,都没心情热饭吃。。

热饭过程中灵感一闪,有了!判断下内容的高度,只要大于指定的高度就能解决溢出显示“点击展开”,不溢出就不显示。

这里的multi class 是为了区分内容溢出还是没溢出~~~~

如果内容显示溢出就加个ellipsis class,一旦点击,判断存在ellipsis class 说明内容溢出啦 ,这时候移除ellipsis class 就展开内容了 是不是很简单。 剩下的就不说了,大家应该都明白了~~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 Javascript
Javascript动态绑定事件的简单实现代码
Dec 25 Javascript
Javascript动画的实现原理浅析
Mar 02 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
jQuery四种选择器使用及示例
Jun 05 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
Aug 03 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 Javascript
详解微信小程序调用支付接口支付
Apr 28 #Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
Apr 28 #Javascript
使用webpack编译es6代码的方法步骤
Apr 28 #Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 #Javascript
详解微信小程序获取当前时间及日期的方法
Apr 28 #Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 #Javascript
如何在微信小程序里面退出小程序的方法
Apr 28 #Javascript
You might like
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php权重计算方法代码分享
2014/01/09 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP中提问频率最高的11个面试题和答案
2014/09/02 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
js静态作用域的功能。
2006/12/25 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
python基础教程项目五之虚拟茶话会
2018/04/02 Python
python机器学习之KNN分类算法
2018/08/29 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
pymysql模块的操作实例
2019/12/17 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
2014全国两会学习心得体会2000字
2014/03/10 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang
python中使用redis用法详解
2022/12/24 Redis