热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript如何实现文字展开和收起效果

这篇文章给大家分享的是有关JavaScript如何实现文字展开和收起效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需

这篇文章给大家分享的是有关Javascript如何实现文字展开和收起效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

需求:

1:当文字超出目标值,则截取目标值,其他隐藏,同时显示“展开”二字和下拉箭头;
2:点击“展开”显示所有文字,同时改为“收起”和上拉箭头
3:如果文字本身就没有超过目标值,则显示所有文字即可

之前想过使用css设置超出多少行隐藏,或者给Li标签设置高度隐藏,但都无法满足以上第三条,所以想到了下边一种方法将就可以使用

思路:

1:初始遍历需要展开和收起的元素,超出目标值隐藏,然后把所有标签中的内容存起来(后边显示全部的时候会用到)
2:点击展开和收起的时候,根据当前的内容去存储的值中匹配,匹配到之后做相应的处理,展示出来

HTML


        
  •             
    5-14号
                                 111111111111111111111111
  •                 222222222222222222222222                 333333333333333333333333                               
  •             
    5-15号
                                 4444
  •                 5555555555555555555555555                 6666666666666666666666666                      

    CSS

    ul,li {
       list-style: none;
     }
    .innerList>li {
         margin-bottom: 0.2rem;
         border-bottom: 0.01rem solid green;
         box-sizing: border-box;
         padding: 0.2rem 5% 0.7rem 3%;
         position: relative;
         margin-bottom: 0.3rem;
     }
     .open {
         font-size: 0.22rem;
         color: #12309E;
         position: absolute;
         right: 0.2rem;
         bottom: 0.1rem;
         font-weight: bold;
     }
     .close {
         font-size: 0.22rem;
         color: #12309E;
         position: absolute;
         right: 0.2rem;
         bottom: 0.1rem;
         font-weight: bold;
     }

    JS

    //新闻的展开收起部分
    var objList = $(".wordsContent");   //需要展开收起的li标签元素
    var maxNum = 5;                     //目标值的长度
    var arr = [];                       //需要展开收起的所有文字汇总
    objList.delegate(".open", "click", function () {
        openClose(true, this)
    })
    objList.delegate(".close", "click", function () {
        openClose(false, this)
    })
    //初始化封装,初始化是为了1:存储原本的Li标签中的内容;2:超出目标值的文字隐藏
    function init(objList, maxNum) {
        objList.each(function (index, item) {
            arr.push($(item_).text())
            if ($(item).text().length > maxNum) {
                $(item).html($(item).text().substr(0, maxNum) + "展开")
            }
        })
    }
    init(objList, maxNum)
    
    //展开和收起的封装
    function openClose(boo, clickObj) {
        var final = '';
        arr.map(function (item, index) {
            if (item.match($(clickObj).parents(".wordsContent").text().substring(0, $(clickObj).parents(".wordsContent").text().length - 2))) {
                final = item
            }
        })
        if (boo) {
            $(clickObj).parents(".wordsContent").html(final + "收起")
        } else {
            $(clickObj).parents(".wordsContent").html(final.substr(0, maxNum) + "展开")
        }
    }

    效果

    Javascript如何实现文字展开和收起效果

    感谢各位的阅读!关于“Javascript如何实现文字展开和收起效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


    推荐阅读
    • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
    • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
    • 如何使用Java获取服务器硬件信息和磁盘负载率
      本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
    • javascript  – 概述在Firefox上无法正常工作
      我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
    • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
    • Html5-Canvas实现简易的抽奖转盘效果
      本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
    • PHP图片截取方法及应用实例
      本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
    • 开发笔记:加密&json&StringIO模块&BytesIO模块
      篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
    • Java容器中的compareto方法排序原理解析
      本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
    • JavaSE笔试题-接口、抽象类、多态等问题解答
      本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
    • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
    • Voicewo在线语音识别转换jQuery插件的特点和示例
      本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
    • Java学习笔记之面向对象编程(OOP)
      本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
    • JDK源码学习之HashTable(附带面试题)的学习笔记
      本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
    • Android系统源码分析Zygote和SystemServer启动过程详解
      本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
    author-avatar
    赵春柱_626
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有