vuejs实现折叠面板展开收缩动画效果


Posted in Javascript onSeptember 06, 2018

vuejs通过css3实现元素固定高度到auto高度的动画和auto高度到固定高度的动画。

循环列表,html:

<template>
 <div class="newslist">
  <ul>
   <li v-for="(item,index) in newslist" :key="index">
    <p class="p" ref="liCon">{{item.content}}</p>
    <div class="open" @click="open(item,index)">
     <div v-if="!item.openFlag">【展开】</div>
     <div v-else>【收缩】</div>
    </div>
   </li>
  </ul>
 </div>
</template>

在css上加上动画transition

.newslist ul li p {
  font-size: 14px;
  color: #555;
  line-height: 25px;
  height: 50px;
  overflow: hidden;
  transition: height .3s;
 }

重点是下面js的实现:

分为两种情况:

(一)初始状态是收缩时:

<script type="text/ecmascript-6">
 import Vue from 'vue'
 export default {
  props: ['newslist'],
  data() {
   return {
    liConHeight: 50 // 两行文字的高度
   }
  },
  methods: {
   open(item, i) {
    const liCon = this.$refs.liCon[i]
    var height = liCon.offsetHeight
    if (height === this.liConHeight) { // 展开
     liCon.style.height = 'auto'
     height = liCon.offsetHeight
     liCon.style.height = this.liConHeight + 'px'
     var f = document.body.offsetHeight // 必加
     liCon.style.height = height + 'px'
    } else { // 收缩
     liCon.style.height = this.liConHeight + 'px'
    }
    if (!item.openFlag) {
     Vue.set(item, 'openFlag', true)
    } else {
     Vue.set(item, 'openFlag', false)
    }
   }
  }
 }
</script>

(二)初始状态是展开时:

稍微改动:

var height = liCon.offsetHeight // 也可以是liCon.getBoundingClientRect().height
if (height === this.liConHeight) { // 展开
  liCon.style.height = 'auto'
  height = liCon.offsetHeight
  liCon.style.height = this.liConHeight + 'px'
  liCon.style.height = height + 'px'
} else { // 收缩
  liCon.style.height = height + 'px'
  var f = document.body.offsetHeight
  liCon.style.height = this.liConHeight + 'px'
}

总结

以上所述是小编给大家介绍的vuejs实现折叠面板展开收缩动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 播放器 控制
Jan 22 Javascript
javascript getElementsByClassName函数
Apr 01 Javascript
扩展JavaScript功能的正确方法(译文)
Apr 12 Javascript
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
JavaScript打印网页指定区域的例子
May 03 Javascript
jquery+easeing实现仿flash的载入动画
Mar 10 Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
javascript中的深复制详解及实例分析
Dec 29 Javascript
js实现消息滚动效果
Jan 18 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
在vue中读取本地Json文件的方法
Sep 06 #Javascript
浅谈Vue render函数在ElementUi中的应用
Sep 06 #Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 #Javascript
vue template中slot-scope/scope的使用方法
Sep 06 #Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
Sep 06 #Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 #jQuery
Vue下拉框回显并默认选中随机问题
Sep 06 #Javascript
You might like
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
php分页查询的简单实现代码
2017/03/14 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
Python单链表简单实现代码
2016/04/27 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
奥巴马英文演讲稿
2014/05/15 职场文书
啦啦队口号大全
2014/06/16 职场文书
学雷锋宣传标语
2014/06/25 职场文书
平安建设汇报材料
2014/12/29 职场文书
会计专业自荐信范文
2015/03/05 职场文书
中学总务处工作总结
2015/08/12 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
python中pandas对多列进行分组统计的实现
2021/06/18 Python
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫