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 相关文章推荐
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
Oct 24 Javascript
Javascript URI 解析介绍
Mar 15 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
微信小程序实现刷脸登录
May 25 Javascript
JS实现的JSON序列化操作简单示例
Jul 02 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
javascript实现鼠标点击生成文字特效
Dec 24 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 jQuery
原生JS实现pc端轮播图效果
Dec 21 Javascript
JavaScript 对象创建的3种方法
Nov 17 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实现链结人气统计
2006/10/09 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python选课系统开发程序
2016/09/02 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python实现证件照换底功能
2019/08/20 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
视光学专业毕业生推荐信
2013/10/28 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
教师节学生演讲稿
2014/09/03 职场文书
房产公证书
2015/01/23 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
Redis如何实现分布式锁
2021/08/23 Redis