【Vue】可拖拽侧边栏实现

 在本篇博客中,我们将探讨如何在 Vue.js 项目中实现一个可拖拽的侧边栏。此功能可以通过修改 HTML 和 Vue 组件的脚本来实现。

 首先,我们需要在 HTML 文件中定义侧边栏的容器和用于拖拽的元素。在 Vue 组件中,我们将使用 Vue 的响应式系统来追踪侧边栏的宽度,并添加事件处理程序来响应鼠标拖拽事件。

效果如下:
请添加图片描述

以下是实现拖拽侧边栏的步骤和代码:

  1. 定义侧边栏容器和拖拽元素
    在 HTML 文件中,我们需要一个包含侧边栏内容的容器和一个可以拖拽的元素。

    <template>
      <div class="app-container">
        <div class="app-card">
          <el-container style="height: 100%">
            <el-header>标题</el-header>
            <el-container>
              <el-aside
                :width="widthData + 'px'"
                style="overflow: auto; min-width: 150px; max-width: 600px"
              >
                <div
                  style="overflow: auto; height: 100%; width: 100%; display: flex"
                >
                  <el-tree
                    :data="treeData"
                    :props="defaultProps"
                    :expand-on-click-node="false"
                    default-expand-all
                    :disabled="true"
                    @node-click="handleNodeClick"
                  />
                </div>
              </el-aside>
              <div
                id="asideBar"
                style="
                  height: 100%;
                  width: 7px;
                  padding: 0 3px;
                  cursor: col-resize;
                  display: flex;
                "
              >
                <div
                  :class="barClass"
                  style="
                    height: 100%;
                    width: 1px;
                    border-radius: 1px;
                  "
                ></div>
              </div>
              <el-main style="min-width: 300px">
                <div>内容</div>
              </el-main>
            </el-container>
          </el-container>
        </div>
      </div>
    </template>
    
  2. 添加 Vue 组件的脚本
    在 Vue 组件的脚本部分,我们将使用 Vue 的响应式系统来追踪侧边栏的宽度,并添加事件处理程序来响应鼠标拖拽事件。

    <script lang="ts" setup>
    // ... 省略其他代码 ...
    const barClass = ref("normal"); // 正常样式
    const updateWidth = () => {
      let resize = document.getElementById("asideBar");
      if (!resize) {
        return;
      }
      resize.onmousedown = function (e) {
        if (e.button != 0) {
          return;
        }
        barClass.value = "pressed"; // 按下时的样式
        let startX = e.clientX;
        document.onmousemove = function (e) {
          let endX = e.clientX;
          let moveLen = endX - startX;
          startX = endX;
          widthData.value+= moveLen;
          if (widthData.value < 150) {
            widthData.value= 150;
          }
          if (widthData.value> 600) {
            widthData.value= 600;
          }
        };
        document.onmouseup = function () {
          barClass.value = "normal";  // 恢复正常样式
          document.onmousemove = null;
          document.onmouseup = null;
        };
        return false;
      };
    };
    // ... 省略其他代码 ...
     </script>
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

缓存菜品、套餐、购物车相关功能

一、缓存菜品 通过缓存的方式提高查询性能 1.1问题说明 大量的用户访问导致数据库访问压力增大&#xff0c;造成系统响应慢&#xff0c;用户体验差 1.2 实现思路 优先查询缓存&#xff0c;如果缓存没有再去查询数据库&#xff0c;然后载入缓存 将菜品集合序列化后缓存入red…

流域生态系统水-碳-氮耦合过程模拟

原文链接&#xff1a;流域生态系统水-碳-氮耦合过程模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599209&idx3&snbb447abff048424d640c4a45755451f7&chksmfa82058ecdf58c9810ec4c20ccaa521c71773422647f508b690ac4d90df1e273b65ae2db7521&…

财报解读:中通正在从“价格战”跳到“价值战?”

从数据来看&#xff0c;我国快递行业持续保持着上升势头。国家邮政局数据显示&#xff0c;今年1至2月我国快递发展指数为329.6&#xff0c;同比提升26.7%。 不过&#xff0c;在向好的行业趋势当中&#xff0c;相关企业仍有烦忧。一方面&#xff0c;行业竞争加剧&#xff0c;新…

IP定位技术打击网络犯罪

IP定位技术在打击网络犯罪中扮演着至关重要的角色。随着互联网的普及和网络技术的飞速发展&#xff0c;网络犯罪现象日益严重&#xff0c;对社会的稳定和安全造成了极大的威胁。IP定位技术的应用&#xff0c;为公安机关追踪和打击网络犯罪提供了有力的技术支持。 首先&#xff…

【OS探秘】【虚拟化】【软件开发】在Windows 11上安装mac OS虚拟机

一、所需原料 Windows 11主机、Oracle VM VirtualBox虚拟化平台、mac OS 11镜像文件 二、安装步骤 1、 在VBox管理器中&#xff0c;点击“新建”&#xff0c;进入向导模式&#xff0c;指定各个字段&#xff1a;

Navicat BI 工具 | 连接数据

早前&#xff0c;海外 LearnBI online 博主 Adam Finer 对 Navicat Charts Creator 这款 BI&#xff08;商业智能&#xff09;工具进行了真实的测评。上一期&#xff0c;我们介绍了这位博主对 Navicat BI 工具的初始之感。今天&#xff0c;我们来看看从连接数据的角度&#xff…

Redis是单线程还是多线程?(面试题)

1、Redis5及之前是单线程版本 2、Redis6开始引入多线程版本&#xff08;实际上是 单线程多线程 版本&#xff09; Redis6及之前版本&#xff08;单线程&#xff09; Redis5及之前的版本使用的是 单线程&#xff0c;也就是说只有一个 worker队列&#xff0c;所有的读写操作都要…

外包干了15天,技术退步明显。。。。。。

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

07、Lua 流程控制

Lua 流程控制 Lua 流程控制控制结构语句 Lua 流程控制 Lua编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码&#xff0c;在条件为 false 时执行其他指定代码。 以下是典型的流程控制流程图&#xff1a; 控制结构的条件表达式结…

基于RAG的大模型知识库搭建

什么是RAG RAG(Retrieval Augmented Generation)&#xff0c;即检索增强生成技术。 RAG优势 部分解决了幻觉问题。由于我们可以控制检索内容的可靠性&#xff0c;也算是部分解决了幻觉问题。可以更实时。同理&#xff0c;可以控制输入给大模型上下文内容的时效性&#xff0c…

007_how_to_start_learning_Matlab学习的启动与加速

Matlab学习的启动与加速 1. 前言 这个专题的Matlab博文系列&#xff0c;来到了传奇的007&#xff0c;我又准备放下技术工作的写作&#xff0c;来一点务虚和规划的内容。 这个系列的开始&#xff0c;也是一个随机发生的小概率事件&#xff0c;本来Python&#xff08;PyQt&…

Tomcat和Servlet了解

一,服务器概述 先了解下主机-系统-容器和程序这几个之间的关系. 主机&#xff1a;主机是指一台计算机设备&#xff0c;可以是物理服务器或虚拟服务器&#xff0c;用于存储数据、运行应用程序和提供服务。在这种情况下&#xff0c;主机是托管Ubuntu&#xff08;Linux系统&…

【数据结构】归并排序(不用递归)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解归并排序&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 归并排序&#xff08;用递归&#xff09; 之前我们写了一篇博客来介绍如何用递归实现归并排序…

回顾皆草木,唯你是青山~

新中式小飞袖连衣裙 每一件衣裳都是时间的礼赞 是炎炎夏日的一抹清新 传统元素与现代时尚设计相结合 面料舒适透气&#xff0c;裙摆飘逸灵动 宛如林间自由洒脱的小仙子~

网络安全:Kali Linux 进行SQL注入与XSS漏洞利用

目录 一、实验 1.环境 2.Kali Linux 进行SQL注入 3.Kali Linux 进行XSS漏洞利用 二、问题 1.XSS分类 2.如何修改beef-xss的密码 3.beef-xss 服务如何管理 4.运行beef报错 5.beef 命令的颜色有哪些区别 6.owasp-top-10 有哪些变化 一、实验 1.环境 &#xff08;1&a…

数据结构·二叉树(2)

目录 1 堆的概念 2 堆的实现 2.1 堆的初始化和销毁 2.2 获取堆顶数据和堆的判空 2.3 堆的向上调整算法 2.4 堆的向下调整算法 2.4 堆的插入 2.5 删除堆顶数据 2.6 建堆 3 建堆的时间复杂度 3.1 向上建堆的时间复杂度 3.2向下建堆的时间复杂度 4 堆的排序 前言&…

2024年生骨肉冻干深度比较:希喂、NWN、PURPOSE,哪一款更胜一筹?

在科学养宠的当今时代&#xff0c;生骨肉冻干已经成为猫咪日常饮食中不可或缺的一部分。高肉含量的生骨肉冻干不仅易吸收、好消化&#xff0c;更能给猫提供其他猫粮所不能提供的微量物质&#xff0c;更满足猫的全面营养需求。然而&#xff0c;面对市面上琳琅满目的生骨肉冻干品…

鸿蒙OS实例:同步获取应用配置的【versionCode和versionName】

1.同步方式获取 首先需要导包&#xff1a; import bundleManager from ohos.bundle.bundleManager 工具类&#xff1a; public static async getVersionName(): Promise<string> {try {let bundleInfo await bundleManager.getBundleInfoForSelf(bundleManager.Bundle…

从零开始搭建游戏服务器 第七节 创建GameServer

目录 前言正文创建GameServer模块修改配置创建NettyClient连接到登录服登录服修改创建协议游戏服注册到登录服 总结 前言 上一节我们使用自定义注解反射简化了协议解包和逻辑处理分发流程。 那么到了这里登录服登录服的架构已经搭建的差不多了&#xff0c;一些比较简单的、并发…

Android卡顿掉帧问题分析之实战篇

本文将结合典型实战案例&#xff0c;分析常见的造成卡顿等性能问题的原因。从系统工程师的总体角度来看 &#xff0c;造成卡顿等性能问题的原因总体上大致分为三个大类&#xff1a;一类是流程执行异常&#xff1b;二是系统负载异常&#xff1b;三是编译问题引起。 1 流程执行异…