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 语法基础 想学习js的朋友可以看看
Dec 16 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
读懂CommonJS的模块加载
Apr 19 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
May 10 Javascript
uni-app从安装到卸载的入门教程
May 15 Javascript
微信小程序的引导页实现代码
Jun 24 Javascript
深入理解Vue的数据响应式
May 15 Vue.js
在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
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
javascript 获取图片颜色
2009/04/05 Javascript
javascript eval和JSON之间的联系
2009/12/31 Javascript
js 模拟气泡屏保效果代码
2010/07/10 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
详解Python中的正则表达式
2018/07/08 Python
django_orm查询性能优化方法
2018/08/20 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
Python time库基本使用方法分析
2019/12/13 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Django分组聚合查询实例分享
2020/04/29 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
比利时香水网上商店:NOTINO
2018/03/28 全球购物
大学生村官典型材料
2014/01/12 职场文书
创先争优个人承诺书
2014/08/30 职场文书
介绍信格式样本
2015/05/05 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript