vue.js 实现点击展开收起动画效果


Posted in Javascript onJuly 07, 2018

最近公司项目加了个页面,其中要求是这样的,点击对应列表,展开和收起,其实就是显示和隐藏内容部分;说来惭愧,我花了半天时间才搞出来(自黑一下~),接下来分享给大家,先上效果图:

vue.js 实现点击展开收起动画效果

vue页面:

<template>
  <div class="dealRecord-wrap">
    <div class="title-contant" v-for="(item,index) in items " >

      <div class="title" @click="showHide(index)">

        <h3>2018年0{{index+6}}月</h3>

        <div class="number">800笔<i></i></div>

      </div>

      <div class="contant">

        <ul>

          <li v-for="i in item.allNumber">
            {{index+6}}
          </li>
        </ul>
      </div>
    </div>
  </div>
</template>
<script>
export default{
  data(){
    return{
      items:[
        {v:'qqq',allNumber:1},

        {v:'aaa',allNumber:2},

        {v:'qqq',allNumber:3},

      ],
    }
  },
  created(){
    document.body.style.backgroundColor = '#f6f6f6';
  },

  mounted(){

    for(var i=0;i<3;i++){  //这里取值自后台返回的长度,设置页面渲染完成后是否展开,此处不展开

      document.getElementsByClassName('contant')[i].style.height = '0px';

    }

  },

  components:{

  },

  methods:{

    showHide(index){  //点击展开收起

      let contant = document.getElementsByClassName('contant')[index];  //这里我们通过参数index来让浏览器判断你点击的是哪一个列表  

      let height = contant.getBoundingClientRect().height;  //获取页面元素的当前高度

      document.getElementsByTagName('i')[index].style.transform = !!height?'rotateX(0deg)':'rotateX(180deg)';

      if (!!height) {

      contant.style.height = height + 'px';

      let f = document.body.offsetHeight; //强制相应dom重绘,使最新的样式得到应用

      contant.style.height = '0px';

      } else {

      contant.style.height = 'auto';

      height = contant.getBoundingClientRect().height;

      contant.style.height = '0';

      let f = document.body.offsetHeight;

      contant.style.height = height + 'px';

      }
    }
  },

  beforeDestroy(){
    document.body.style.backgroundColor = '#fff';
  }
}
</script>
<style type="text/scss" lang="scss" scoped>
.dealRecord-wrap{margin-bottom: 100px;

  .title-contant{overflow: hidden;  /* 这个是重点 */

    .title{height: 84px;padding: 0 24px;border-bottom: 1px solid #eaeaea;/*px*/

      h3{height: 84px;font-size: 28px;color: #333;display: flex;align-items: center;float: left;;margin-left: 10px;}

      .number{height: 84px;font-size: 24px;color: #666;display: flex;align-items: center;float: right;}

      .number i{display: inline-block;width: 23px;height: 13px;background: url('../../assets/images/icon_dropup@2x.png');background-repeat: no-repeat;background-size: 23px 13px;background-position: right 6px center;padding-right: 35px;display: flex;align-items: center; float: right;transform:rotateX(0deg);}

    }

    .contant{background: #fff;transition: height 1s;  /* 这个也是重点 */

      ul li{padding: 0 24px;height: 142px;display: flex;align-items: center;}

      ul li:not(:last-child){border-bottom: 1px solid #f6f6f6;/*px*/}
    }
  }
}
</style>

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

Javascript 相关文章推荐
js 日期转换成中文格式的函数
Jul 07 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
Aug 01 Javascript
javascript操作referer详细解析
Mar 10 Javascript
浅析JQuery中的html(),text(),val()区别
Sep 01 Javascript
javascript制作坦克大战全纪录(2)
Nov 27 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
IONIC自定义subheader的最佳解决方案
Sep 22 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
Sep 06 Javascript
JavaScript实现消消乐的源代码
Jan 12 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 #Javascript
微信小程序使用wxParse解析html的方法教程
Jul 06 #Javascript
小程序实现发表评论功能
Jul 06 #Javascript
vue中倒计时组件的实例代码
Jul 06 #Javascript
微信小程序websocket实现聊天功能
Mar 30 #Javascript
vue中锚点的三种方法
Jul 06 #Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 #Javascript
You might like
PHP判断变量是否为0的方法
2014/02/08 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
js多个物体运动功能实例分析
2016/12/20 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
Python多线程和队列操作实例
2015/06/21 Python
Python中生成Epoch的方法
2017/04/26 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
ORACLE第二个十问
2013/12/14 面试题
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
员工评语大全
2014/01/19 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
环保倡议书范文
2014/05/12 职场文书
法定代表人资格证明书
2014/09/11 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
教师个人学习总结
2015/02/11 职场文书
安全保证书怎么写
2015/02/28 职场文书
安全教育第一课观后感
2015/06/17 职场文书