手风琴纵向收缩内容简单实现

今天在项目中有一项需求是将大面积的内容折叠起来通过箭头收缩

找了很多资料框架啊、插件啊、等等,后来参考了大神们的一些写法写出了一个我认为是最简单的写法,记录一下,备用

我用的是vue+ts

罗列部分主要代码

HTML代码:

<ul style="list-style-type:none">
    <li class="allContents">
        <div v-on:click="itemClick">
            <h2 v-if="!showCheckBox" style="display: inline;">Collapse Title</h2>
            <span
                :class="{' ui_up  rightArrow':showCheckBox,'icon ui_down rightArrow':!showCheckBox}"></span>
        </div>
        <div v-show="showCheckBox">
            <h2>Title</h2>
            <div>
                <input type="checkbox" v-model="allFiltersSelected" />
                <label class="checkbox-inline no-left-padding">1</label>
            </div>
            <div>
                <input type="checkbox" v-model="allFiltersSelected" />
                <label class="checkbox-inline no-left-padding">2</label>
            </div>
            <div>
                <input type="checkbox" v-model="allFiltersSelected" />
                <label class="checkbox-inline no-left-padding">3</label>
            </div>
            <div>
                <input type="checkbox" v-model="allFiltersSelected" />
                <label class="checkbox-inline no-left-padding">4</label>
            </div>
            <div>
                <input type="checkbox" v-model="allFiltersSelected" />
                <label class="checkbox-inline no-left-padding">ALL</label>
            </div>
        </div>
    </li>
</ul>

CSS样式:




.allContents{
    margin-bottom: 30px;
    cursor: pointer;
}

.rightArrow{
    float: right;
    font-size: 25px;
    color:grey-0;
}

Vue 代码:

 showCheckBox:boolean = false;
  itemClick(){
    this.showCheckBox = !this.showCheckBox;
  }

效果截图(内容少所以不是很明显):
在这里插入图片描述
当点击箭头后:
在这里插入图片描述

此外,:class属性运用到了上次说的style通过运算符的写法,是类似的写法,如果不想让排序中的<ul><li>不显示前面的点,需要在<ul>标签上添加属性“style=“list-style-type:none””

完结撒花!如有不足欢迎指出!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现手风琴的下拉动画和收缩,可以使用CSS的transition和transform属性来实现。 首先,需要为手风琴的每个部分设置一个固定的高度和宽度,然后将其余部分的高度设置为0。接着,需要添加一个鼠标事件,当鼠标悬停在手风琴某个部分上时,将该部分的高度设置为固定的值,并将其余部分的高度设置为0。 下面是一个示例代码,可以实现手风琴的下拉和收缩动画: HTML代码: ``` <div class="accordion"> <div class="accordion-item"> <div class="accordion-header">部分1</div> <div class="accordion-content">内容1</div> </div> <div class="accordion-item"> <div class="accordion-header">部分2</div> <div class="accordion-content">内容2</div> </div> <div class="accordion-item"> <div class="accordion-header">部分3</div> <div class="accordion-content">内容3</div> </div> </div> ``` CSS代码: ``` .accordion { display: flex; flex-direction: column; } .accordion-item { border: 1px solid #ccc; margin-bottom: 10px; } .accordion-header { padding: 10px; background-color: #f1f1f1; cursor: pointer; } .accordion-content { height: 0; overflow: hidden; transition: height 0.3s ease-in-out; } .accordion-item.active .accordion-content { height: 100px; } ``` JavaScript代码: ``` const accordionItems = document.querySelectorAll('.accordion-item'); accordionItems.forEach(item => { item.addEventListener('click', function() { accordionItems.forEach(item => { item.classList.remove('active'); }); this.classList.add('active'); }); }); ``` 在上面的代码中,当点击手风琴的某个部分时,该部分会添加一个active类,然后JavaScript代码会将所有的手风琴部分的active类都移除,再将当前点击的部分添加active类。CSS中,.accordion-content设置了一个过渡效果,当高度从0变为100px时,会有一个0.3s的动画效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值