vue实现收起展开面板,让你的页面动态起来

vue 展开收起(高度不固定,还要有平滑的过渡效果) 找了好多案例都不是很顺滑,最终还是功夫不负有心人,找到了一个非常棒的案例,只是简单地尝试一下,以后使用可以在进行全面的封装来公共使用 <template> <div class="panel"> <!-- body --> <transition name="panel-fade" @enter="enter" @before-leave="beforeLeave" @leave="leave"> <div cla.. 阅读详情
AI摘要

本文介绍了如何使用 Vue 框架轻松实现面板的收起和展开功能,提升用户体验。通过示例代码展示了两种不同的实现方式,一种基于常规 CSS,另一种利用 SCSS,详细解析了关键代码和实现效果,帮助开发者打造简洁美观的页面交互。

前言

你是否在开发中遇到过需要展开和收起面板的需求?使用 vue 可以轻松实现这一功能,让用户体验更加友好。本文将为大家介绍 vue 实现收起展开面板的方法,让你的页面更加简洁美观。


常规 css 实现

实现效果

在这里插入图片描述


源码如下

<template>
  <div class="maxBox">
    <div class="leftBox" :style="{width: play ? '30%' : '0px', transition: '0.3s'}" ref="leftNode">
      <div v-if="play">内容</div>
    </div>
    <div ref="btnNode" class="btnBox" @click="toggle" :title="play ? '点击收起' : '点击展开'"
      :style="{transform: play ? 'rotate(360deg)' : 'rotate(180deg)', left: play ? '30%' : '0px', transition: '0.3s'}"> <img
        src="https://i.postimg.cc/c4zMGwGj/sq.png" class="imageBox" /> </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
        play: true
    };
  },
  methods: {
    toggle() {
      this.play = !this.play;
    },
  },
};
</script>

<style scoped>
.maxBox {
  width: 100%;
  height: 100%;
  background: cornflowerblue;
  position: relative;
}
.leftBox {
  position: absolute;
  height: 100%;
  background: cadetblue;
}
.btnBox {
  position: absolute;
  top: calc(50% - 40px);
  cursor: pointer;
  z-index: 999;
}
.imageBox {
  width: 35px;
  height: 80px;
}
</style>

通过 scss 实现

实现效果

在这里插入图片描述


源码如下

<template>
  <div class="parentBox">
    <!-- 弹出内容 -->
    <div class="leftSlide" v-show="!hideLeft">
      <div class="item">
        <h6>2000</h6>
        <p>第一行的标题</p>
      </div>
      <div class="item">
        <h6>8463</h6>
        <p>第二行的标题</p>
      </div>
      <div class="item">
        <h6>2187</h6>
        <p>第三行的标题</p>
      </div>
      <div class="item">
        <h6>4214</h6>
        <p>第四行的标题</p>
      </div>
      <div class="item">
        <h6>9824</h6>
        <p>第五行的标题</p>
      </div>
      <div class="item">
        <h6>1025</h6>
        <p>第六行的标题</p>
      </div>
    </div>
    <!-- 操作按钮 -->
    <div class="slideBtn" :class="hideLeft ? 'show' : 'hide'" @click="hideLeft = !hideLeft"></div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      hideLeft: true, //是否隐藏 slide
    };
  },
  mounted() {},
  methods: {},
};
</script>

<style lang="scss" scoped>
.parentBox {
  width: 100%;
  height: 100%;
  background: rgb(0, 25, 46);
  color: #c8c8c8;
  // 打开的容器
  .leftSlide {
    height: 45vh;
    width: 10vw;
    z-index: 999;
    // 自己用的时候换成本地图片
    background: url("https://i.postimg.cc/ZnbKZ0s5/bg-map-l.png");
    background-size: 100% 100%;
    background-color: rgba(11, 26, 62, 0.6);
    padding: 1vh 1vw 1vh 2vw;
    display: flex;
    flex-direction: column;
    .item {
      height: 7vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
  }
  // 点击按钮
  .slideBtn {
    width: 1.3vw;
    height: 5.5vh;
    position: absolute;
    top: 19.8vh;
    z-index: 999;
    cursor: pointer;
    &.hide {
      // 自己用的时候换成本地图片
      background: url("https://i.postimg.cc/65TthkDg/sbtn.png");
      background-size: 100% 100%;
    }
    &.show {
      // 自己用的时候换成本地图片
      background: url("https://i.postimg.cc/zBD9GWN6/sbtn1.png");
      background-size: 100% 100%;
    }
  }
}
</style>
【vue】- 简易版筛选组件可展开/收起 仅做记录,未整理格式css部分未完全,每个筛选条件为固定宽度。 阅读详情

相关推荐

Vue动态高度展开收起组件:平滑过渡与自适应布局实战

本文深入探讨了Vue项目中实现动态高度展开收起组件的两种实战方案。针对内容高度不固定的场景,详细解析了基于Velocity.js的精细控制方法,以及利用Element UI内置过渡组件的快速方案。核心解决了CSS Transition无法处理`height: auto`动画的难题,通过JavaScript计算内容高度实现平滑过渡,并确保组件能自适应Flexbox、Grid等现代布局。

life6的博客 226

Vue实现 展开 / 收起 功能

实现数据超过一定的量就显示 展开/ 收起 功能;如下图所示: 参考代码:核心在于 计算属性 computed 中; 注意: 开发中key的值尽量不要使用下标index; // template:循环的时候直接⽤showHandleList进⾏操作,显⽰收起的事件直接⽤showAll = !showAll 进⾏控制,改变这个值的真假 <template> <div class="hello"> <!-- 数据展示 --> <di...

前端菜菜DayDayUp的博客 1万+

折叠面板组件的设计与实现

NutUI,大家应该不陌生吧 [鬼脸],前端开发的同学肯定是有些了解的。NutUI 是一个京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用。目前 NutUI 拥有 70+ 组件,支持按需引用,支持 TypeScript,支持定制主题等功能,当然也支持最新的 Vue3 语法,在开发上能有效帮助研发人员提升效率,改善开发体验。言归正传,今天我们一起了解 NutUI 中折叠面板 Collapse 的实现与设计,以及在开发过程中学习到的新知识点。...

m0_63247283的博客 1887

vue之点击“展开/收回”功能实现(两种情况)

vue实现展开收回功能,两种情况简单应对,列表展开显示全部、部分数据展开收回,菜鸟版基础教程

m0_64054560的博客 6583

Vue - 最新详细实现任意内容展开 / 收起功能组件,支持自定义文字或容器的收起折叠和展开内容功能效果(支持自定义高度、动态展开与折叠、自定义展开与收起文案、动态增删数据自动计算高度、过渡动画等)

本文实现了一个该功能组件,具体功能请看标题,并完成了组件文档的编写(最底部),您将以最简单的方式使用它,如下效果图所示:例如,在文件夹下创建文件,写入以下代码。 基本使用 以下是一个基础的小例子。 使用v-model 用一个变量绑定组件的状态,并可通过改变来变量控制组件的状态 自定义开关按钮 隐藏内置开关按钮,利用控制或者手动调用方法控制。...

🏆 前端领域优质创作者 5432

jQuery实现点击展开收起及图标动态切换实战

最基础且高效的图标旋转方式是利用CSS的transform属性配合自定义类名进行状态切换。以一个常见的下拉箭头为例,初始状态为指向下(▼),当内容展开后应旋转为指向上(▲我们可以通过定义类来实现这一效果:该类使用将元素沿中心点翻转半圈,从而改变其朝向。这种方式不依赖背景图片或字体内容变更,仅通过几何变换即可完成视觉转换,具有高性能和跨分辨率适应性强的优点。可通过 jQuery 主动调用 Collapse 方法进行更细粒度控制:// 初始化 collapse});

weixin_31869917的博客 933

vue伸缩效果_vuejs实现折叠面板展开收缩动画效果

vuejs通过css3实现元素固定高度到auto高度的动画和auto高度到固定高度的动画。循环列表,html:{{item.content}}【展开】【收缩】在css上加上动画transition.newslist ul li p {font-size: 14px;color: #555;line-height: 25px;height: 50px;overflow: hidden;transit...

weixin_39988331的博客 1277

ANSYS 12.1避坑全记录:当Win7+VMware14遇到FLEXlm报错时的自救指南

本文详细介绍了在Windows 7和VMware14环境下安装和运行ANSYS 12.1时遇到的FLEXlm报错问题及其解决方案。通过虚拟机技术隔离时间同步问题,提供从环境配置到许可证管理的完整指南,帮助用户稳定运行这一老旧版本的工程仿真软件。

tt34567的博客 644

vue列表展开收起效果

图片太糊了,勉强看个效果吧。 代码如下: <template> <div id="questions"> <div class="container1"> <ul class="question-container"> <li v-for="(q,index) in questions" :ke...

summer的博客 7278

车窗标定工作流程

标定简单来说就是修改防夹参数来适配对应的车型,所有的防夹的参数在vers_userdef.h文件中定义。#标定内容。

qq_21274991的博客 4269

AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

QINJIEEE的博客 1098

Vue使用Element的折叠面板Collapse设置默认全部展开

这个适用于需要for循环 <el-collapse-item> 负责展开的属性是value <el-collapse :value="opened"> <el-collapse-item v-for="o in List" :key="o.aaa":name="o.aaa"> <div>XXXXXXXXXXXXXXXXXXXXXXXX</div> </el-collapse-item> </el-collapse&

小钻风的博客 8915

中小公司无线组网实战:用一台H3C AC和普通三层交换,实现办公网AP统一管理

本文详细介绍了中小型企业如何利用H3C AC控制器与普通三层交换机实现无线AP统一管理的实战方案。通过VLAN规划、DHCP配置和AC控制器设置,构建经济高效的办公网络,解决信号覆盖和连接稳定性问题,特别适合50-200人规模的企业部署。

weixin_42531516的博客 379

vue收缩面板_vuejs实现折叠面板展开收缩动画

vuejs通过css3实现元素固定高度到auto高度的动画和auto高度到固定高度的动画。循环列表,html:{{item.content}}【展开】【收缩】在css上加上动画transition.newslist ul li p {font-size: 14px;color: #555;line-height: 25px;height: 50px;overflow: hidden;transit...

weixin_34637293的博客 1021

蓝桥杯嵌入式(基础教程)STM32G431RBT6——创建工程以及点灯

首先选择正确的芯片类型:STM32G431RBT6工程的创建主要有配置时钟以及烧录的方式。在配置好之后需要对时钟进行配置,由于蓝桥杯的外部晶振是24MHz因此需要对时钟树进行相应的配置。第一步先点击时钟配置之后就可以对时钟进行相应的配置了最后一步,需要对工程起一个名字,并且要选择KEIL做为其相应的软件之后再需要再生成代码那里进行相应的控制。当然这样根据生成的工程不能直接使用会有一个报错,所以需要添加一个启动文件。这个启动文件可以在官方的LCD文件夹下复制到自己的工程中。

m0_74051113的博客 1093

数字IC笔记-逻辑单元库和库文件

逻辑单元库的建立: 一个完整的单元库是由不同的功能电路所组成,在芯片应用中可分为三类: 标准单元:反相器、与门、寄存器、选择器、全加器。组合逻辑电路和时序逻辑电路。互补,反向,非反向,其他。锁存器、寄存器。 模块宏单元:ROM、RAM 输入输出单元 库文件: 在逻辑综合产生门级网表和物理设计做布局布线的过程中需要两个重要的库文件,就是物理库(lef)和时序库(lib) 1.物理库LEF文件 LEF是版图级的抽象文件,主要用于布局和布线。目前普遍使用的是由Candence开发的LEF文件格式,以le

sinat_41774721的博客 9140

展开和收起效果

展开和收起效果 图例 展开 收起 结构 <div class="a"> <a-row> <a-col :span="2" :push="22"> <div> <a-row> <a-col :span="8"></a-col>

weixin_44867717的博客 686

NVIDIA AI 学习与认证指南:从入门到精通

NVIDIA的AI学习与认证体系,凭借其先进的技术背景、丰富的课程资源以及强大的行业认可度,已成为AI学习者和从业者的宝贵资源。通过深入学习NVIDIA的课程和获得认证,学习者可以快速掌握最前沿的AI技术,提升自己的职业竞争力。从基础课程到专业认证,NVIDIA为不同层次的学习者提供了量身定制的学习资源,帮助他们掌握AI的核心技能,提升职业竞争力。是其中的一个亮点,它结合了信息检索与生成式AI的能力,使AI可以从外部知识库中实时提取信息,生成更具深度和准确性的内容。,帮助学习者快速掌握该领域的核心技术。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1876

基于vue手动实现折叠面板(展开一项,其他项收起)

<template> <div class="report"> <ul class="years"> <li class="years_item" v-for="(item, index) in menuList" :key="item.name"> <div class="title" @click="showToggle(item, index)"> <span>{{ it

无知者无畏 5139

C++设计模式之观察者模式

观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于实现分布式事件处理系统,当一个对象(称为“主题”或“发布者”)改变状态时,所有注册的观察者都会收到通知。

每天进步一点点。 600

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

折叠面板,展开收起动画效果

【代码】折叠面包,展开收起动画效果。

weixin_53509819的博客 1594

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Vue3 内容展开收起动画过渡效果

内容dom(item.expand 展开用内容高度,收起变为0)

qq_52912134的博客 1955

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

uniapp collapse动态生成多个折叠面板手动展开收起(包括uni-ui版)

uniapp collapse动态生成多个折叠面板手动展开收起(包括uni-ui版) uni-app动态生成多个折叠面板,点击展开收起 uniapp collapse 手动收起

我总是词不达意的博客 3613

Vue3实战:如何用Transition+Velocity实现高度不固定的平滑展开收起效果(附完整代码)

本文深入探讨了在Vue3中实现高度不固定元素的平滑展开收起动画的实战方案。针对CSS Transition在动态高度场景下的局限,文章详细介绍了如何结合Vue的Transition组件与Velocity.js动画库,通过JavaScript钩子动态计算并补间元素高度,从而打造出丝滑流畅、物理感更强的交互效果,并提供了完整的、可直接复用的CollapseTransition组件代码。

berry的博客 753
上一篇: 遇到el-select选项被遮挡问题?这篇文章告诉你如何解决
下一篇: element中el-table根据状态改变样式,你不能错过的技能
水星记_
水星记_ 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄6年 13万+粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星记_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值