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

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

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

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

多行溢出省略Css:

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

设计是这样的。。

点击展开.png

点击收起.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>点击展开');
  }
})

结果是这样的。。。。

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

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

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

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

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

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

(0)

相关推荐

  • jQuery实现控制文字内容溢出用省略号(…)表示的方法

    本文实例讲述了jQuery实现控制文字内容溢出用省略号(-)表示的方法.分享给大家供大家参考,具体如下: jQuery限制字符字数的方法 $(function(){ //限制字符个数 $(".text").each(function(){ var maxwidth=23; if($(this).text().length>maxwidth){ $(this).text($(this).text().substring(0,maxwidth)); $(this).html($(th

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

    在进行H5页面开发时,项目都要提测了,产品却加了个点击展开和点击收起的需求.. 上知乎看了下 ,也有人有这样的疑问,今天我就把问题给解决啦~ 这里就来讲述下我的解决方案: 利用多行溢出实现"展开""收起" 多行溢出省略Css: overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; 设计是

  • jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法

    本文实例讲述了jQuery实现文字超过1行.2行或规定的行数时自动加省略号的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net jQuery自动添加省略号</title> <script src="http://apps.bdi

  • vue3实现搜索项超过n行就折叠的思路详解

    目录 实现效果 实现思路 实现组件的布局 事件绑定与事件销毁 高度判断和图标的显示与隐藏 完整代码 布局 css代码 script 组件使用 总结 我们在做列表查询的时候,会有很多查询项,如何实现超过n行查询项的时候自动折叠起来呢? 实现效果 实现思路 实现组件的布局. 绑定监听事件和销毁监听事件 高度判断和图标的显示与隐藏 实现组件的布局 外层盒子(限制高度).折叠的图标或者文字(用来显示和隐藏多余的行).插槽(挖个坑给搜索行占位). 事件绑定与事件销毁 需要绑定一个resize事件.resi

  • 给jqGrid数据行添加修改和删除操作链接(之一)

    我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$("#list1").navGrid("#pager1",{edit:false,del:false, search:false}), 然后在数据加载完成后,给每行添加了 修改和删除链接 jqGrid完成的事件是gridComplete:function(){}(可以理解为数据都准备好了), 因为从数据库获取到的json数据没有带修改和删除两项,所以在之后的

  • JQuery实现表格动态增加行并对新行添加事件

    实现功能: 通常在编辑表格时表格的行数是不确定的,如果一次增加太多行可能导致页面内容太多,反应变慢:通过此程序实现表格动态增加行,一直保持最下面有多个空白行. 效果: 一:原始页面 二:表1增加新行并绑定timepicker 三:表2自动增加行,新行绑定timepicker HTML源码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-

  • EasyUI在Panel上动态添加LinkButton按钮

    在最近做的一个将原来的旧系统翻新改造的项目中,为了在个别展示位置与原系统一直,研究了一下Easyui的panel面板,在panel的面板中动态添加Linkbuton按钮的编辑方法,在这里做个记录免得自己以后忘了,也为有需求的人指明一条道,代码比较乱,还请大家多多见谅,能实现就行啦,要求不高哟. 言归正传,需求如下图. 看似简单,往panel的title中循环添加linkbutton标签不就得了,其实还有很多问题需要处理,简单描述一下我的思路和步骤. 1.panel的title属性接收类型为字符串

  • Android实现系统的桌面图标文字的双行显示效果

    一.应用名称长短不一,一行可能显示不全需要多行显示.由于Launcher空间有限,特别是横屏的时候,图标预留的空间很小,所以一般不建议多行显示.如果一定要多行显示,我们建议竖屏下最多显示两行,横屏下保持单行显示 二.配置属性(我的是没配置属性的) 1.竖屏 在路径:packages\apps\Launcher3\res\values\config.xml 添加或者修改为: false 2 竖屏下关闭单行显示.设置最大显示行数为2行 2.横屏 在路径:packages\apps\Launcher3

  • python实现xlwt xlrd 指定条件给excel行添加颜色

    先用xlrd读excel文件-->book对象a 拿到指定的sheet页 xlrd对象 用xlutils copy 的copy方法复制 a得到b 通过判断a的列值,来修改b 保存b 得到结果 之前也有试过直接用xlwt 来操作sheetwork对象,来实现给指定行添加颜色的操作,由于能力有限,最终没有找到合适的方法,最终换了个方法 先读出来,因为workbook对象可以拿到行数 和对列操作,筛选关键字比较方便,所以上边代码就是一个demo,但是这个方法还是有弊端的,我把dataframe导出到e

  • FCK编辑器(FCKEditor)添加新按钮和功能的修改方法

    需要修改的文件: fckconfig.js zh-cn.js en.js fckeditorcode_gecko.js || fckeditorcode_ie.js(针对IE以外的浏览器||针对ie浏览器,如果要支持两种浏览器,就这两个包都修改) 第一步:在Toolbar中添加功能按钮 fckconfig.js:FCKConfig.ToolbarSets["Default"] 中添加按钮名称 FCKConfig.ToolbarSets["Default"] = [

  • IOS数字键盘左下角添加完成按钮的实现方法

    IOS数字键盘左下角添加完成按钮的实现方法 实现代码: - (void)addDoneButtonToNumPadKeyboard { UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; if (systemVersion < 8.0){ doneButton.frame = CGRectMake(0, 163, 106, 53); }else{ doneButton.frame = CGRectMake(0,

随机推荐