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 相关文章推荐
跨域请求之jQuery的ajax jsonp的使用解惑
Oct 09 Javascript
javascript禁用Tab键脚本实例
Nov 22 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
Mar 14 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
Sep 13 Javascript
浅入深出Vue之自动化路由
Aug 06 Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 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
新版PHP将向Java靠拢
2006/10/09 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
javascript preload&amp;lazy load
2010/05/13 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
jquery 根据name名获取元素的value值
2015/02/27 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
Python中下划线的使用方法
2015/03/27 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python调用fortran模块
2016/04/08 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
PyQt5组件读取参数的实例
2019/06/25 Python
Django模板Templates使用方法详解
2019/07/19 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
python能自学吗
2020/06/18 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
退休感言
2014/01/28 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
大学教师个人总结
2015/02/10 职场文书
高中物理教学反思
2016/02/19 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python