zoukankan      html  css  js  c++  java
  • vue折叠面板的收缩动画效果,实现点击按钮展开和收起,并有个高度过渡的动画效果

    1.上面是点击的部分,可自定义,下面是我项目的内容部分,下面的代码是功能部分的代码,去掉了不必要的部分记录。

     代码:这部分,要注意的是样式。

    <ul class="newslist">
      <li v-for="(items, index) in proLists" :key="index">
        <p @click="openFunc(index)">
          <img src="/static/svg/tbm.svg" alt="">
          <span>{{items.name}}</span>
        </p>
        <div class="p" ref="liCon">
          <div>
            测试111
          </div>
        </div>
      </li>
    </ul>

    样式部分,内容部分需要有个高度展开收起的动画效果:

    // 内容部分
    .newslist>li>div{
      height: 0px;
      overflow: hidden;
      transition: height .3s; // 动画效果
    }
    

    2.data的部分,

    data () {
      return {
        liConHeight: 0, // 折叠面板内容初始高度
        proLists: [
          {
            name: '测试1',
          },
          {
            name: '测试2',
          },
        ],
      }
    }
    

    3.js部分

    // 项目折叠面板动画
    openFunc (i) {
      const liCon = this.$refs.liCon[i]
      let height = liCon.offsetHeight
      if (height === this.liConHeight) { // 展开
        liCon.style.height = 'auto'
        height = liCon.offsetHeight
        liCon.style.height = this.liConHeight + 'px'
        // eslint-disable-next-line no-unused-vars
        let f = document.body.offsetHeight // 必加
        liCon.style.height = height + 'px'
      } else { // 收缩
        liCon.style.height = this.liConHeight + 'px'
      }
    

     备注:

    如果需要手风琴的样式,每次点击只展开一个面板,循环proLists数据,除了当前的liCon,把其他的liCon的liConHeight高度设置为0即可。

  • 相关阅读:
    初学C#线程
    初学C#线程二
    JQuery Ajax
    算法测试
    个人报告
    202120221课程设计第三周进展
    socket测试3
    202120221课程设计任务理解与分工
    嵌入式基础
    202120221课程设计第四周进展
  • 原文地址:https://www.cnblogs.com/wgl0126/p/13070818.html
Copyright © 2011-2022 走看看