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实现简单的动画效果代码
Mar 18 Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
Mar 14 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
Sep 08 Javascript
Webpack devServer中的 proxy 实现跨域的解决
Jun 15 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
用Fundebug插件记录网络请求异常的方法
Feb 21 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 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
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
jQuery中map函数的两种方式
2017/04/07 jQuery
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python实现多线程抓取知乎用户
2016/12/12 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
实现向右循环移位
2014/07/31 面试题
商务英语求职自荐信范文
2013/12/24 职场文书
高三地理教学反思
2014/01/11 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
演讲稿开场白台词
2014/08/25 职场文书
2014年工商所工作总结
2014/12/09 职场文书
骨干教师个人总结
2015/02/11 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL