判断文字超过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 相关文章推荐
解决FLASH需要点击激活的代码
Dec 20 Javascript
Javascript 陷阱 window全局对象
Nov 26 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
Mar 11 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
jquery事件preventDefault()方法用法实例
Jan 16 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
May 11 Javascript
详解Vue 2.0封装axios笔记
Jun 22 Javascript
微信小程序wx:for和wx:for-item的用法详解
Apr 01 Javascript
JQuery元素快速查找与操作
Apr 22 jQuery
JS实现从对象获取对象中单个键值的方法示例
Jun 05 Javascript
js简单实现自动生成表格功能示例
Jun 02 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
2006/12/13 PHP
PHP技术开发技巧分享
2010/03/23 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
JavaScript静态的动态
2006/09/18 Javascript
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
React服务端渲染原理解析与实践
2021/03/04 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
驾驶员安全责任书范本
2014/07/24 职场文书
岗位说明书标准范本
2014/07/30 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书