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 each()源代码
Feb 14 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
Aug 15 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
微信小程序实现弹出菜单功能
Jun 12 Javascript
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
Promise扫盲贴
Jun 24 Javascript
vue实现pdf文档在线预览功能
Nov 26 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
JavaScript实现表单验证功能
Dec 09 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
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
Prototype Template对象 学习
2009/07/19 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
详解React中setState回调函数
2018/06/14 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
python使用scrapy发送post请求的坑
2018/09/04 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
优秀毕业生求职推荐信范文
2013/11/21 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
史上最牛的辞职信
2015/02/28 职场文书