返回顶部
首页 > 资讯 > 精选 >vue.js怎么实现简易折叠面板
  • 497
分享到

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

2023-06-25 11:06:02 497人浏览 八月长安
摘要

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

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

具体内容如下

代码如下:

主文件:app.vue

<template>  <div id="app">    <img alt="Vue loGo" 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" 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怎么实现简易折叠面板”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: vue.js怎么实现简易折叠面板

本文链接: https://lsjlt.com/news/304268.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue.js实现简易折叠面板
    本文实例为大家分享了vue.js实现简易折叠面板的具体代码,供大家参考,具体内容如下 代码如下: 主文件:app.vue <template> <div ...
    99+
    2024-04-02
  • vue.js怎么实现简易折叠面板
    这篇文章主要介绍“vue.js怎么实现简易折叠面板”,在日常操作中,相信很多人在vue.js怎么实现简易折叠面板问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js怎么实现简易折叠面板”的疑惑有所帮助!...
    99+
    2023-06-25
  • 如何实现AmazeUI折叠面板
    这篇文章主要介绍了如何实现AmazeUI折叠面板,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Amaze UI 是一个针对 HTML 5 开发的轻量级、模块化、移动优先的跨屏...
    99+
    2023-06-09
  • vant怎么实现Collapse折叠面板标题自定义
    这篇文章主要介绍了vant怎么实现Collapse折叠面板标题自定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vant怎么实现Collapse折叠面板标题自定义文章都会有所收获,下面我们一起来看看吧。van...
    99+
    2023-06-30
  • 微信小程序实现手风琴折叠面板
    本文实例为大家分享了微信小程序实现手风琴折叠面板的具体代码,供大家参考,具体内容如下 目的:折叠面板默认显示其中一项,利用toggle实现元素的显示和隐藏例如:页面中有四个可折叠元素...
    99+
    2024-04-02
  • 如何使用HTML和CSS实现一个简单的折叠面板布局
    折叠面板是网页设计中常用的布局之一,它可以将大量的内容以折叠的形式呈现在页面上,使得页面结构更加清晰和紧凑。本文将详细介绍如何使用HTML和CSS实现一个简单的折叠面板布局,并提供具体的代码示例。HTML结构设计首先,我们需要设计合适的HT...
    99+
    2023-10-21
    CSS html 折叠面板
  • vant如何实现Collapse折叠面板标题自定义
    目录vant Collapse折叠面板标题自定义使用vant折叠面板自定义内容Collapse 折叠面板代码演示vant Collapse折叠面板标题自定义 vue-cli3+van...
    99+
    2024-04-02
  • 微信小程序如何实现手风琴折叠面板
    这篇文章主要介绍“微信小程序如何实现手风琴折叠面板”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序如何实现手风琴折叠面板”文章能帮助大家解决问题。目的:折叠面板默认显示其中一项,利用togg...
    99+
    2023-06-30
  • php怎么实现简易留言板
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php怎么实现简易留言板?PHP+MySql实现一个简单的留言板://嗯,跟着书学的,代码不是自己写的,但是都能理解,有时间自己去写个好看一点的吼吼吼~(不熟练花了一天...
    99+
    2014-08-31
    php 留言板
  • HTML5怎么实现折叠菜单
    这篇文章主要介绍“HTML5怎么实现折叠菜单”,在日常操作中,相信很多人在HTML5怎么实现折叠菜单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HTML5怎么实现折叠菜单”...
    99+
    2024-04-02
  • 利用CSS实现折叠面板效果的技巧和方法
    利用CSS实现折叠面板效果的技巧和方法在网页设计中,折叠面板是一种常见的交互设计元素,可以用来隐藏或展开内容。利用CSS可以轻松地实现折叠面板效果,本文将介绍一些实现折叠面板的技巧和方法,并附带具体的代码示例。一、折叠面板的基本原理折叠面板...
    99+
    2023-10-24
    CSS 折叠 面板
  • Vue页面内怎么将图片上传并适用折叠面板
    本篇内容介绍了“Vue页面内怎么将图片上传并适用折叠面板”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Vue页面内附件展示区域代码<...
    99+
    2023-06-22
  • css折叠外边距怎么实现
    这篇文章主要介绍“css折叠外边距怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css折叠外边距怎么实现”文章能帮助大家解决问题。先看一个简单示例:<style> &n...
    99+
    2023-07-05
  • 纯css怎样实现多级折叠菜单折叠树效果
    这篇文章将为大家详细讲解有关纯css怎样实现多级折叠菜单折叠树效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。运用checkbox的checked值来判断下级栏目是否展开,CSS3的选择器中提供了:ch...
    99+
    2023-06-08
  • OpenCV实现简易标定板
    本文实例为大家分享了OpenCV实现简易标定板的具体代码,供大家参考,具体内容如下 使用OpenCV生成标定板图片,然后找高精度打印机进行打印,贴在硬板上,就可以得到一个简易的标定板...
    99+
    2024-04-02
  • Java实现简易画图板
    本文实例为大家分享了Java实现简易画图板的具体代码,供大家参考,具体内容如下 这是Windows系统自带的画图板,我们就是模仿着用Java去写一个简易版的画图板。 效果图 图中...
    99+
    2024-04-02
  • 利用CSS实现折叠内容面板特效的技巧和方法
    在网页设计中,折叠内容面板是一种非常常见的特效。通过点击或其他交互形式,隐藏或展示特定内容,以提供更好的用户体验。而利用CSS实现折叠内容面板特效,则是一种简单而有效的方法。本文将介绍一些实现这一特效的技巧和方法,并提供具体的代码示例。使用...
    99+
    2023-10-21
    方法 技巧 CSS 折叠面板
  • 怎么用CSS实现圆角折叠菜单
    本篇内容主要讲解“怎么用CSS实现圆角折叠菜单”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用CSS实现圆角折叠菜单”吧!代码如下:<html>...
    99+
    2024-04-02
  • Android ChipGroup收起折叠效果怎么实现
    这篇文章主要介绍“Android ChipGroup收起折叠效果怎么实现”,在日常操作中,相信很多人在Android ChipGroup收起折叠效果怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-07-04
  • Vue.js中怎么利用递归组件实现一个可折叠的树形菜单
    本篇文章给大家分享的是有关Vue.js中怎么利用递归组件实现一个可折叠的树形菜单,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Vue.js中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作