我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue.js怎么实现简易折叠面板

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue.js怎么实现简易折叠面板

这篇文章主要介绍“vue.js怎么实现简易折叠面板”,在日常操作中,相信很多人在vue.js怎么实现简易折叠面板问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js怎么实现简易折叠面板”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

具体内容如下

代码如下:

主文件:app.vue

<template>  <div id="app">    <img alt="Vue logo" class="lazy" data-src="./assets/logo.png">    <collpase>      <collpase-item        :title="item.name"        :showAnimation="true"        v-for="(item, i) in chapterList"        :key="i"      >        <div class="list" v-for="(it, index) in item.list" :key="index">          {{it.name}}        </div>      </collpase-item>    </collpase>  </div></template><script>import Collpase from './components/Collpase.vue';import CollpaseItem from './components/CollpaseItem.vue'export default {  name: 'App',  data() {    return {      chapterList: [        {          name: '标题一',          list: [            {              name: '是是是是是是所'            },            {              name: '啊啊啊啊'            }          ]        },        {          name: '标题二',          list: [            {              name: '是是是是是是所'            },            {              name: '啊啊啊啊'            },            {              name: '啊啊啊啊'            }          ]        }      ]    }  },  components: {    Collpase,    CollpaseItem,  }}</script><style>#app {  font-family: Avenir, Helvetica, Arial, sans-serif;  -webkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;  text-align: center;  color: #2c3e50;  margin-top: 60px;}</style>

子组件:

<template> <div class="collapse">  <slot /> </div></template><script> export default {  name: 'Collapse',  props: {   accordion: {    type: [Boolean, String],    default: false   }  },  provide() {   return {    collapse: this   }  },  created() {   this.childrens = []  },  methods: {   onChange() {    let activeItem = []    this.childrens.forEach((vm) => {     if (vm.isOpen) {      activeItem.push(vm.nameSync)     }    })    this.$emit('change', activeItem)   }  } }</script><style lang="css" scoped> .collapse {  width: 100%;  display: flex;  flex: 1;  flex-direction: column; }</style>

子组件:

<template> <div>    <div :class="{ 'collapse-disabled': disabled,'collapse-cell--notdisabled': !disabled, 'collapse-cell--open': isOpen,'collapse-cell--hide':!isOpen }" class="collapse-cell">      <div :class="{ 'collapse-disabled': disabled}" class="collapse-cell__title"  @click="onClick">        <span class="collapse-cell__title-text">{{ title }}</span>        <img :class="{ 'active': isOpen, 'active-animation': showAnimation === true }" class="title-arrow" class="lazy" data-src="https://static-mumway.oss-cn-zhangjiakou.aliyuncs.com/NetworkFrontEnd/wsj/yslbq/btn_dropdown.png"/>      </div>      <div :class="{'collapse-cell__content--hide':!isOpen}" class="collapse-cell__content">        <div :class="{ 'active-animation': showAnimation === true }" class="collapse-cell__wrapper" :>          <slot />        </div>      </div>    </div>  </div></template><script> export default {  name: 'UniCollapseItem',  props: {   title: {    // 列表标题    type: String,    default: ''   },   name: {    // 唯一标识符    type: [Number, String],    default: 0   },   disabled: {    // 是否禁用    type: Boolean,    default: false   },   showAnimation: {    // 是否显示动画    type: Boolean,    default: false   },   open: {    // 是否展开    type: Boolean,    default: false   },   thumb: {    // 缩略图    type: String,    default: ''   }  },  data() {   return {    isOpen: false   }  },  watch: {   open(val) {    this.isOpen = val   }  },  inject: ['collapse'],  created() {   this.isOpen = this.open   this.nameSync = this.name ? this.name : this.collapse.childrens.length   this.collapse.childrens.push(this)   if (String(this.collapse.accordion) === 'true') {    if (this.isOpen) {     let lastEl = this.collapse.childrens[this.collapse.childrens.length - 2]     if (lastEl) {      this.collapse.childrens[this.collapse.childrens.length - 2].isOpen = false     }    }   }  },  methods: {   onClick() {    if (this.disabled) {     return    }    if (String(this.collapse.accordion) === 'true') {     this.collapse.childrens.forEach(vm => {      if (vm === this) {       return      }      vm.isOpen = false     })    }    this.isOpen = !this.isOpen    this.collapse.onChange && this.collapse.onChange()    this.$forceUpdate()   }  } }</script><style lang="css" scoped> .collapse-cell {  flex-direction: column;  border-color: #f0f0f0;  border-bottom-width: 1px; } .collapse-cell--open {  background-color: #fff; } .collapse-disabled {  cursor: not-allowed !important; } .collapse-cell--hide {  height: 48px; } .active-animation {  transition-property: transform;  transition-duration: 0.3s;  transition-timing-function: ease; } .collapse-cell__title {  border-bottom: 1px solid #f0f0f0;  padding: 12px 20px;  position: relative;  display: flex;  width: 100%;  box-sizing: border-box;  height: 44px;  line-height: 44px;  flex-direction: row;  justify-content: space-between;  align-items: center;  cursor: pointer; } .collapse-cell__title-img {  margin-right: 10px; } .title-arrow {  width: 22px;  height: 14px; } .active {  transform: rotate(180deg); } .collapse-cell__title-text {  flex: 1;  font-size: 16px;  margin-right: 16px;  white-space: nowrap;  color: #333333;    font-weight: bold;  lines: 1;  overflow: hidden;  text-overflow: ellipsis; } .collapse-cell__content {  overflow-x: hidden; } .collapse-cell__wrapper {  display: flex;  flex-direction: column; } .collapse-cell__content--hide {  height: 0px;  line-height: 0px; }</style>

到此,关于“vue.js怎么实现简易折叠面板”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue.js怎么实现简易折叠面板

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue.js怎么实现简易折叠面板

这篇文章主要介绍“vue.js怎么实现简易折叠面板”,在日常操作中,相信很多人在vue.js怎么实现简易折叠面板问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js怎么实现简易折叠面板”的疑惑有所帮助!
2023-06-25

如何实现AmazeUI折叠面板

这篇文章主要介绍了如何实现AmazeUI折叠面板,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Amaze UI 是一个针对 HTML 5 开发的轻量级、模块化、移动优先的跨屏
2023-06-09

vant怎么实现Collapse折叠面板标题自定义

这篇文章主要介绍了vant怎么实现Collapse折叠面板标题自定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vant怎么实现Collapse折叠面板标题自定义文章都会有所收获,下面我们一起来看看吧。van
2023-06-30

如何使用HTML和CSS实现一个简单的折叠面板布局

折叠面板是网页设计中常用的布局之一,它可以将大量的内容以折叠的形式呈现在页面上,使得页面结构更加清晰和紧凑。本文将详细介绍如何使用HTML和CSS实现一个简单的折叠面板布局,并提供具体的代码示例。HTML结构设计首先,我们需要设计合适的HT
2023-10-21

微信小程序如何实现手风琴折叠面板

这篇文章主要介绍“微信小程序如何实现手风琴折叠面板”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序如何实现手风琴折叠面板”文章能帮助大家解决问题。目的:折叠面板默认显示其中一项,利用togg
2023-06-30

php怎么实现简易留言板

php实现简易留言板的方法:1、在数据库中创建两张表;2、编写send页面和留言页面;3、通过session实现用户登录;4、创建注销登录页面即可。
2014-08-31

利用CSS实现折叠面板效果的技巧和方法

利用CSS实现折叠面板效果的技巧和方法在网页设计中,折叠面板是一种常见的交互设计元素,可以用来隐藏或展开内容。利用CSS可以轻松地实现折叠面板效果,本文将介绍一些实现折叠面板的技巧和方法,并附带具体的代码示例。一、折叠面板的基本原理折叠面板
2023-10-24

css折叠外边距怎么实现

这篇文章主要介绍“css折叠外边距怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css折叠外边距怎么实现”文章能帮助大家解决问题。先看一个简单示例: