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 相关文章推荐
javascript window对象属性整理
Oct 24 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
AngularJS 过滤与排序详解及实例代码
Sep 14 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
基于JS实现移动端左滑删除功能
Jul 28 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
解决vue项目打包后提示图片文件路径错误的问题
Jul 04 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
Aug 24 Javascript
React精髓!一篇全概括小结(急速)
May 23 Javascript
vue实现购物车的监听
Apr 20 Javascript
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
微信小程序实现聊天对话(文本、图片)功能
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学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php自动载入类用法实例分析
2016/06/24 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
python格式化字符串实例总结
2014/09/28 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
python实现textrank关键词提取
2018/06/22 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
大学生创业计划书的范文
2014/01/07 职场文书
消防安全管理制度
2014/02/01 职场文书
公益广告宣传方案
2014/02/28 职场文书
中国入世承诺
2014/04/01 职场文书
春节联欢会策划方案
2014/05/16 职场文书
分公司经理任命书
2014/06/05 职场文书
四风查摆剖析材料
2014/10/10 职场文书
刑事上诉状范文
2015/05/22 职场文书
Nginx动静分离配置实现与说明
2022/04/07 Servers