文字的展开和收起

列表式的文字的展开和收起的实现

需求:
1:当文字超出目标值,则截取目标值,其他隐藏,同时显示“展开”二字和下拉箭头;
2:点击“展开”显示所有文字,同时改为“收起”和上拉箭头
3:如果文字本身就没有超过目标值,则显示所有文字即可
之前想过使用css设置超出多少行隐藏,或者给Li标签设置高度隐藏,但都无法满足以上第三条,所以想到了下边一种方法将就可以使用
思路:
1:初始遍历需要展开和收起的元素,超出目标值隐藏,然后把所有标签中的内容存起来(后边显示全部的时候会用到)
2:点击展开和收起的时候,根据当前的内容去存储的值中匹配,匹配到之后做相应的处理,展示出来

HTML

<ul class="outList">
        <li>
            <div>5-14</div>
            <ul class="innerList">
                <li class="wordsContent">111111111111111111111111</li>
                <li class="wordsContent">222222222222222222222222</li>
                <li class="wordsContent">333333333333333333333333</li>
            </ul>
        </li>
        <li>
            <div>5-15</div>
            <ul class="innerList">
                <li class="wordsContent">4444</li>
                <li class="wordsContent">5555555555555555555555555</li>
                <li class="wordsContent">6666666666666666666666666</li>
            </ul>
        </li>
    </ul>

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) + "<span class='open'>展开<img src='./image/down^.png'/></span>")
        }
    })
}
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 + "<span class='close'>收起<img src='./image/up^.png'/></span>")
    } else {
        $(clickObj).parents(".wordsContent").html(final.substr(0, maxNum) + "<span class='open'>展开<img src='./image/down^.png'/></span>")
    }
}

效果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现a-tree的展开收起功能,可以通过修改样式和操作相关的DOM元素来实现。根据引用中提供的解决方法,可以通过添加以下CSS样式来实现点击title文字展开/收起的效果: .ant-select-tree-switcher_open::before, .ant-select-tree-switcher_close::before { content: ''; position: absolute; right: -200px; top: 0; left: 0; bottom: 0; } .ant-select-tree-switcher_close:hover ~ .ant-select-tree-node-content-wrapper-close { background-color: #e6f7ff; transition: background-color 0.3s ease; } .ant-select-tree-switcher_open:hover ~ .ant-select-tree-node-content-wrapper { background-color: #e6f7ff; transition: background-color 0.3s ease; } 如果需要深度选择,可以在选择器前添加/deep/,如引用中所示。这样可以确保样式可以应用于深层级的元素。 此外,根据引用中提供的信息,可以使用this.$refs.tree.store来获取a-tree的实例,并操作其中的数据。expanded字段可以控制节点的展开收起功能。 综上所述,您可以通过修改样式和操作this.$refs.tree.store的数据来实现a-tree的展开收起功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ant design 树形控件a-tree-select展开子级选项只能点左侧小三角形,希望能点击title文字就能展开](https://blog.csdn.net/m0_54281425/article/details/128968297)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [a-tree 树的全部展开收起](https://blog.csdn.net/weixin_42232156/article/details/125605891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值