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之beforeSend方法使用介绍
Dec 08 Javascript
js获取当前日期时间及其它操作汇总
Apr 17 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
Jun 28 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
jQuery ready()和onload的加载耗时分析
Sep 08 Javascript
javascript cookie基础应用之记录用户名的方法
Sep 20 Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
JS实现随机抽取三人
Nov 06 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 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
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
2020/03/08 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
Python pass详细介绍及实例代码
2016/11/24 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python队列的定义与使用方法示例
2017/06/24 Python
Python @property装饰器原理解析
2020/01/22 Python
Python能做什么
2020/06/02 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
争先创优活动总结
2014/08/27 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
食品安全责任书范本
2015/05/09 职场文书
圣诞晚会主持词
2015/07/01 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers
Tomcat弱口令复现及利用
2022/05/06 Servers