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 用记忆函数快速计算递归函数
Mar 15 Javascript
JavaScript学习历程和心得小结
Aug 16 Javascript
JavaScript实现函数返回多个值的方法
Jun 09 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
Oct 25 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
JavaScript是如何实现继承的(六种方式)
Mar 31 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
JS中的三个循环小结
Jun 20 Javascript
vue2.0安装style/css loader的方法
Mar 14 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
在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
windows xp下安装pear
2006/12/02 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
js倒计时小程序
2013/11/05 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
24个canvas基础知识小结
2014/12/17 HTML / CSS
小学生竞选班长演讲稿
2014/04/24 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python
 python中的元类metaclass详情
2022/05/30 Python