内容动态展示抽屉组件

news2024/11/28 8:38:35

 

知识点

mousemove与mouseenter的区别在于mousemove会触发事件冒泡,mouseenter不会,mouseleave同理。

mousemove会触发事件冒泡,因此鼠标在范围区域内移动时会一直触发。

mouseenter只触发一次,鼠标移入后触发,鼠标移出后不再触发。

<template>
  <div class="collapse">
    <!-- 固定展示区域 -->
    <div class="collapse-heade">
      <slot name="collapseHeade"></slot>
    </div>
    <!-- 动态展示区域 -->
    <div class="collapse-body" :style="{ 'height': collHeight + 'px', 'transition': 'all 0.5s ease' }">
      <slot name="collapseBody"></slot>
    </div>
    <div class="collapse-bar" @click="onSwitch">
      <div class="collapse-bar-box">
        <div class="collapse-bar-box-con">
          <i :class="['icon', icon]"></i>
          <span class="text">{{ text }}</span>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      collHeight: 0,
      show: false,
      showText: false,
      text: '展示更多',
      icon: 'el-icon-caret-bottom'
    }
  },
  mounted() {
    const box = document.querySelector('.collapse-bar-box')
    /*
    * mousemove与mouseenter的区别在于mousemove会触发事件冒泡,mouseenter不会,mouseleave同理
    * mousemove会触发事件冒泡,因此鼠标在范围区域内移动时会一直触发。
    * mouseenter只触发一次,鼠标移入后触发,鼠标移出后不再触发
    */
    box.addEventListener('mouseenter', function (ev) {
      this.querySelector('.collapse-bar-box-con').style.transform = 'translateX(-20px)'
      this.querySelector('.collapse-bar-box-con>.icon').style.color = '#36CFC9'
      this.querySelector('.collapse-bar-box-con>.text').style.opacity = '1'
    })
    box.addEventListener('mouseleave', function () {
      this.querySelector('.collapse-bar-box-con').style.transform = 'translateX(20px)'
      this.querySelector('.collapse-bar-box-con>.icon').style.color = '#d3dce6'
      this.querySelector('.collapse-bar-box-con>.text').style.opacity = '0'
    })
  },
  methods: {
    onSwitch() {
      this.show = !this.show
      if (this.show) {
        this.collHeight = 0
        const list = Array.from(document.querySelector('.collapse-body').children)
        list.forEach((item) => {
          this.collHeight += item.offsetHeight
        })
        this.icon = 'el-icon-caret-top'
        this.text = '隐藏内容'
      } else {
        this.collHeight = 0
        this.icon = 'el-icon-caret-bottom'
        this.text = '展示更多'
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.collapse {
  border-radius: 3px;

  .collapse-heade {}

  .collapse-body {
    overflow: hidden;
  }

  .collapse-bar {
    height: 44px;
    width: 100%;
    padding: 0 16px;
    box-sizing: border-box;

    .collapse-bar-box {
      width: 100%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      border: 1px solid #ebebeb;
      border-radius: 4px;
      cursor: pointer;

      .collapse-bar-box-con {
        transition: transform 0.3s;

        i {
          font-size: 16px;
          font-weight: 500;
          color: #d3dce6;
          transition: color 0.3s;
        }

        span {
          margin-left: 12px;
          font-size: 14px;
          font-weight: 400;
          color: #36CFC9;
          opacity: 0;
          transition: opacity 0.3s;
        }
      }
    }
  }
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/843847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绘制曲线python

文章目录 import matplotlib.pyplot as plt# 提供的数据 x= [1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6,6.1,6.2…

AI时代,这些绘画软件让你简单上手绘画

即时灵感 即时设计是一款基于云端的矢量编辑工具&#xff0c;可以帮助用户创建网页和移动应用程序原型、界面和可视化设计等。除此之外&#xff0c;即时设计还具备协同。实时预览、团队管理等多种功能&#xff0c;可以实现多个用户同时设计一个项目。 AI 绘画工具和即时设计虽…

日撸java三百行day81-83

文章目录 说明CNN卷积神经网络1. 什么是CNN&#xff08;CNN基础知识&#xff09;1. 基本概念2.输入层3.卷积层3.1 图像3.2 卷积核3.3 偏置数3.4 滑动窗口步长3.5 特征图个数&#xff08;特征图通道数或深度&#xff09;3.6 边缘填充3.7 卷积过程例子 4. 激活函数5. 池化层6.全连…

打破界限,图文档与物料清单完美互联

在现代企业的产品开发过程中&#xff0c;图文档和物料清单是不可或缺的重要信息。然而&#xff0c;由于数据来源多样、格式繁杂&#xff0c;图文档与物料清单之间的信息传递往往存在障碍。而PDM系统&#xff08;Product Data Management&#xff0c;产品数据管理&#xff09;的…

MySQL插入数据的方法

插入数据方法&#xff1a; 1.insert into 表 values(value1, value2, value3....) 2.insert into 表 (字段1&#xff0c; 字段3&#xff0c; 字段5) values(value1, value2, value3) 3.insert into 表 [(字段1&#xff0c; 字段2&#xff0c; 字段3....)] values(value1, val…

41.利用matlab 平衡方程用于图像(matlab程序)

1.简述 白平衡 白平衡的英文为White Balance&#xff0c;其基本概念是“不管在任何光源下&#xff0c;都能将白色物体还原为白色”&#xff0c;对在特定光源下拍摄时出现的偏色现象&#xff0c;通过加强对应的补色来进行补偿。 所谓的白平衡是通过对白色被摄物的颜色还原&…

C++经典排序算法详解

目录 一、选择排序 二、冒泡排序 三、插入排序 一、选择排序 选择排序 选择排序&#xff08;Selection sort&#xff09;是一种简单直观的排序算法。它的工作原理是&#xff1a;第一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存…

Linux命令200例:join将两个文件按照指定的键连接起来分析

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

十二、ESP32控制步进电机

1. 运行效果 2. 步进电机 最大特点:能够控制旋转一定的角度 3. 步进电机原理

P1433 吃奶酪(状态压缩dp)(内附封面)

吃奶酪 题目描述 房间里放着 n n n 块奶酪。一只小老鼠要把它们都吃掉&#xff0c;问至少要跑多少距离&#xff1f;老鼠一开始在 ( 0 , 0 ) (0,0) (0,0) 点处。 输入格式 第一行有一个整数&#xff0c;表示奶酪的数量 n n n。 第 2 2 2 到第 ( n 1 ) (n 1) (n1) 行…

研发工程师玩转Kubernetes——emptyDir

kubernets可以通过emptyDir实现在同一Pod的不同容器间共享文件系统。 正如它的名字&#xff0c;当Pod被创建时&#xff0c;emptyDir卷会被创建&#xff0c;这个时候它是一个空的文件夹&#xff1b;当Pod被删除时&#xff0c;emptyDir卷也会被永久删除。 同一Pod上不同容器之间…

报错Error: error:0308010C:digital envelope routines::unsupported

Error: error:0308010C:digital envelope routines::unsupported 解决&#xff1a; 在原有脚本前加&#xff1a; SET NODE_OPTIONS--openssl-legacy-provider && 原来&#xff1a; 加后&#xff1a;

常规VUE项目优化实践,跟着做就对了!

总结&#xff1a; 主要优化方式&#xff1a; imagemin优化打包大小&#xff08;96M->50M&#xff09;&#xff0c;但是以打包速度为代价&#xff0c;通过在构建过程中压缩图片来实现&#xff0c;可根据需求开启。字体压缩&#xff1a;目前项目内引用为思源字体&#xff0c…

Latex安装与环境配置(TeXlive、TeXstudio与VS code的安装)编译器+编辑器与学习应用

TeXlive 配置Tex排版系统需要安装编译器+编辑器。TeX 的源代码是后缀为 .tex 的纯文本文件。使用任意纯文本编辑器,都可以修改 .tex 文件:包括 Windows 自带的记事本程序,也包括专为 TeX 设计的编辑器(TeXworks, TeXmaker, TeXstudio, WinEdt 等),还包括一些通用的文本编…

对于git功能的探索与研究

读前提示 注意&#xff1a; 本文只是面向初学者或者之前并未接触过git而想学习如何初步使用git的读者&#xff0c;如果您很擅长使用git&#xff0c;并善于维护远程仓库&#xff0c;那么不建议您看此篇文章&#xff0c;这会浪费您的时间。 当然&#xff0c;这篇文章还是能很好地…

配置页面的路由

1.下载router npm i router 2.注册路由 文件路径 &#xff1a;src/router/index.js import Vue from "vue"; import VueRouter from "vue-router"; Vue.use(VueRouter); import Home from "../components/home.vue"; import Main from …

摄像机终端IP地址白名单配置流程

海康摄像头配置白名单流程 1.登录海康摄像机前端 2.进入配置-系统-安全管理-IP地址过滤 3.IP地址过滤方式选择“允许” 4.点击添加按钮输入对应的IP地址或者IP网段 5.最后勾选启用IP地址过滤&#xff0c;然后保存 大华摄像头配置白名单流程 1.登录大华摄像机前端 2.进入设…

openGauss学习笔记-33 openGauss 高级数据管理-视图

文章目录 openGauss学习笔记-33 openGauss 高级数据管理-视图33.1 语法格式33.2 参数说明33.3 示例 openGauss学习笔记-33 openGauss 高级数据管理-视图 视图与基本表不同&#xff0c;是一个虚拟的表。数据库中仅存放视图的定义&#xff0c;而不存放视图对应的数据&#xff0c…

【C高级】Day4 shell脚本 排序

1. 整理思维导图 2. 写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 #!/bin/bash function getid() {uidid -ugidid -g }getid echo "uid$uid" echo "gid$gid"3. 整理冒泡排序、选择排序和快速排序的代码 #include <myhead.h>void Inp…

智慧物流园区整体架构方案【46页PPT】

导读&#xff1a;原文《智慧物流园区整体架构方案【46页PPT】》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取…