判断文字超过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 相关文章推荐
云网广告中的代码,提示出错,大家找找
Nov 21 Javascript
用jQuery扩展自写的 UI导航
Jan 13 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
javascript实现动态改变层大小的方法
May 14 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
webpack 样式加载的实现原理
Jun 12 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
详解vue 不同环境配置不同的打包命令
Apr 07 Javascript
原生js实现自定义消息提示框
Nov 19 Javascript
Vue操作Storage本地化存储
Apr 29 Vue.js
详解微信小程序调用支付接口支付
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递归遍历多维数组的方法
2015/04/18 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
微信小程序实现跑马灯效果
2020/10/21 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
解决python线程卡死的问题
2019/02/18 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
英语自荐信范文
2013/12/11 职场文书
大学生秋游活动方案
2014/02/17 职场文书
小班幼儿评语大全
2014/04/30 职场文书
班级年度安全计划书
2014/05/01 职场文书
平安工地建设方案
2014/05/06 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
公司表扬信格式
2015/05/04 职场文书
复兴之路展览观后感
2015/06/02 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
python基础之//、/与%的区别详解
2022/06/10 Python