vue实现左右伸缩(el-drawer自定义位置展开收缩)

news2024/11/14 16:30:16

内容左右收缩展开

  • 实现需求
  • 实现效果
  • 自定义抽屉(el-drawer)展开位置
    • 实现原理
  • js方法,点击的时候抽屉伸缩展开,并且给左侧右侧内容对应的宽度
  • 第二种方法

实现需求

页面内容是左右布局,需求想让左侧内容可收缩,然后展示完全右侧内容。本来想着写原生的css+v-show动态判断即可,后来想到了element组件库有抽屉(el-drawer),顺便想尝试一下是否能自定义抽屉展开的位置,所以有了这篇文章。

实现效果

在这里插入图片描述

自定义抽屉(el-drawer)展开位置

<template>
  <div>
  	<el-row style="margin-top: 1%" :gutter="20">
      <!-- 左侧 列表 -->
      <el-col style="height: 350px;" :span="span" :class="[span != '8' ? 'span1' : 'span1']">
        <div style="position: relative; width: 100%; height: 100%">
          <el-drawer
            class="drawerClass"
            style="position: absolute"
            :append-to-body="false"
            :modal="false"
            :show-close="false"
            :wrapperClosable="false"
            size="100%"
            :visible.sync="drawer"
            direction="ltr"
          >
            <el-card class="box-card" style="position: relative">
              <div>左侧内容</div>
            </el-card>
          </el-drawer>
          <div
            style="
              position: absolute;
              z-index: 999999999;
              cursor: pointer;
              top: 30%;
            "
            :class="[drawer ? 'imgright' : 'imgright1']"
            @click="clickImg"
          >
            <img
              v-show="!drawer"
              style="height: 40px; width: 25px"
              :src="require('@/assets/image/zhankai.png')"
              alt=""
            />
            <img
              v-show="drawer"
              style="height: 40px; width: 25px"
              :src="require('@/assets/image/shousuo.png')"
              alt=""
            />
          </div>
        </div>
      </el-col>
      <!-- 右侧 用户列表 -->
      <el-col :span="span1" :class="[span1 != '15' ? 'span1' : 'span1']">
        <el-card class="box-card">
          <div>右侧内容</div>
        </el-card>
      </el-col>
    </el-row>
  </div>
</template>

实现原理

给el-drawer父级标签添加position: relative;
el-drawer属性调整:
:append-to-body=“false” 遮罩层是否插入至 body 元素上,
:modal=“false” 是否需要遮罩层
:show-close=“false” 是否显示关闭按钮
:wrapperClosable=“false” 点击遮罩层是否可以关闭 Drawer

js方法,点击的时候抽屉伸缩展开,并且给左侧右侧内容对应的宽度

export default {
  data() {
    return {
      span: 8,
      span1: 15,
      drawer: true,
    };
  },
  methods: {
    clickImg() {
      this.drawer = !this.drawer;
      if (this.drawer) {
        this.span = 8;
        this.span1 = 15;
      } else {
        this.span = 1;
        this.span1 = 23;
      }
    },
  },
};
<style lang="scss" scoped>
.span1 {
  transition: all 0.2s;
}
.imgright {
  right: 0;
  background-color: #f5f5f5;
  transition: all 0.2s;
}
.imgright1 {
  left: 0;
  background-color: #fff;
  transition: all 0.2s;
}
.drawerClass ::v-deep .el-drawer__container .el-drawer .el-drawer__header {
  display: none;
}
</style>

以上只是尝试抽屉是否能自定义位置伸缩展开。当然有更简单的方法写个css动态判断宽度即可

第二种方法

    <el-row style="margin-top: 1%">
      
      <div style="display: flex; align-items: center">
         <!-- 左侧 列表 -->
        <div :class="[drawer ? 'left' : 'left1']">
          <el-card class="box-card">
            <div>左侧内容</div>
          </el-card>
        </div>
         <!-- 折叠展开图片-->
        <div
          style="cursor: pointer; width: 5%"
          :class="[drawer ? 'imgright' : 'imgright1']"
          @click="clickImg"
        >
          <img
            v-show="!drawer"
            style="height: 40px; width: 25px"
            :src="require('@/assets/image/zhankai.png')"
          />
          <img
            v-show="drawer"
            style="height: 40px; width: 25px"
            :src="require('@/assets/image/shousuo.png')"
          />
        </div>
           <!-- 右侧 用户列表 -->
        <div :class="[drawer ? 'right' : 'right1']">
          <el-card class="box-card">
            <div>右侧内容</div>
          </el-card>
        </div>
      </div>
    </el-row>
 methods: {
    clickImg() {
      this.drawer = !this.drawer;
    },
  },
.left {
  width: 35%;
  transition: all 0.2s;
}
.left1 {
  width: 0%;
  transition: all 0.2s;
}
.right {
  width: 65%;
  transition: all 0.2s;
}
.right1 {
  width: 95%;
  transition: all 0.2s;
}
.box-card {
  height: 350px;
  background-color: #ff6e6e;
}

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

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

相关文章

模拟经营类游戏是怎么开发的?

模拟经营类游戏开发是一个充满挑战但也充满乐趣的领域。下面是一些步骤和关键考虑因素&#xff0c;可以帮助您开始开发自己的模拟经营游戏&#xff1a; 明确游戏概念&#xff1a; 确定游戏开发的主题和类型&#xff0c;例如城市建设、农场经营、餐厅经营等。 制定一个引人入胜…

《论文阅读》通过动态融入常识知识来提高同理心对话的生成

《论文阅读》通过动态融入常识知识来提高同理心对话的生成 前言简介模型架构Contextual ProbingContextual Unification Workspace代码实现Knowledge-Aware Decoder实验结果前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后感到…

文件路径中的/,\的区别和文件路径的常见用法

/是Unix和类Unix系统上的路径分隔符.现代Windows通常可以同时使用\和/交换文件路径,但微软\几十年来一直主张使用路径分隔符. 关于文件路径的常用方法再学习一下&#xff1a; "./"&#xff1a;代表目前所在的目录 "../"&#xff1a;代表上一层目录 以&q…

如何在Blender中压缩/减小GLTF模型的大小

GLTF 如何在Blender中压缩/减小GLTF模型的大小 Blender是一款功能强大的开源软件&#xff0c;旨在创建3D图形&#xff0c;动画和视觉效果。它支持多种文件格式的导入和导出&#xff0c;包括GLB&#xff0c;GLTF&#xff0c;DAE&#xff0c;OBJ&#xff0c;ABC&#xff0c;USD…

CAD批量转换低版本怎么转?教你一看就会的转换方法

CAD文件需要转换版本是因为不同版本的CAD软件可能不兼容。这意味着&#xff0c;如果在一个版本的CAD软件中创建了一个文件&#xff0c;可能无法在另一个版本的CAD软件中打开它。这可能会导致数据丢失或格式错误。 为了避免这种情况&#xff0c;需要将CAD文件转换为适当的版本以…

短视频seo矩阵系统源码开发与部署全解析

在这个数字化快速发展的时代&#xff0c;短视频已经成为人们获取娱乐&#xff0c;学习&#xff0c;商业信息的主要途径之一。对于企业来说&#xff0c;利用短视频矩阵进行高效且精准的营销推广&#xff0c;无疑是一个重要的战略方向。本文将详细介绍如何进行短视频矩阵源码的开…

【开源】无忧企业文档文库管理界面介绍

无忧企业文档是软开企服研发的一款集知识库、网盘、在线协同为一体的企业级办公软件&#xff0c;有完全免费的开源版&#xff0c;也有功能丰富的商业版。开源版在社区开放了全量源码&#xff0c;商业版支持提供源码&#xff0c;支持二次开发&#xff0c;适合中小企业使用。 文…

企业如何简化线上营销服务流程,让服务更通畅?

在线客服是现代企业服务的重要组成部分&#xff0c;在线客服的质量在很大程度上决定客户的满意度和忠诚度。企业如何简化线上营销服务流程&#xff0c;让服务更通畅&#xff1f;本文将就此探讨。 一、建立流程管理体系 在线上营销服务中&#xff0c;建立流程管理体系可以帮助企…

期权期货品种的交易时间规定与限制

期权和期货品种是在交易所进行交易的&#xff0c;期货交易所有固定的工作时间&#xff0c;并不是24小时都可以交易的&#xff0c;一般国内的期货交易所有日盘和夜盘&#xff0c;不同交易所对交易时间的规定有所不同&#xff0c;交易的期货品种不同&#xff0c;交易时间也是有所…

真实的产品开发中,后端的设计规约可以写哪些

真实的产品开发中&#xff0c;后端的设计规约可以写哪些 产品开发的后端设计规约通常包括以下内容&#xff1a; 数据模型设计&#xff1a;详细描述数据库的结构&#xff0c;包括数据表的设计、字段的定义和关系的设置等。 业务逻辑设计&#xff1a;详细描述后端的业务逻辑&a…

官宣!不藏了~AnyCase 4.0 真“箱”

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 重磅好消息&#xff01;&#xff01;&#xff01; 2023年9月15日&#xff0c;我们正式官宣啦~ 经过持续地升级迭代和精心打磨 箱讯科技AnyCase4.0成功上线&#xff01; 梦想为引&#xff0c;创新为帆&…

STM32F103VET6基于ENC28J60移植LWIP1.4.1(标准库,FreeRTOS)

目录 准备模板LWIP文件夹新建组魔术棒修改lwipopts.h修改sys_arch.h修改sys_arch.c修改LWIP初始化函数中断文件主文件测试源码 在进行移植之前&#xff0c;大家需要学会FreeRTOS的基本使用与无OS移植LWIP的经验&#xff0c;因为基于FreeRTOS移植LWIP需要准备一个FreeRTOS模板项…

从投机走到娱乐——Web3 游戏八月月报

作者&#xff1a;lesleyfootprint.network 8月份&#xff0c;加密市场波动加剧&#xff0c;比特币价格在 23,664 美元到 30,057 美元之间波动。与之相比&#xff0c;游戏领域仍然相对平稳&#xff0c;但从宏观的角度来看&#xff0c;人们对 Web3 游戏的看法正在发生转变。 许…

免费,开源,可批量的离线图片文字提取软件OCR

Umi-OCR 文字识别工具 免费&#xff0c;开源&#xff0c;可批量的离线OCR软件 适用于 Windows7 x64 及以上 免费&#xff1a;本项目所有代码开源&#xff0c;完全免费。方便&#xff1a;解压即用&#xff0c;离线运行&#xff0c;无需网络。批量&#xff1a;可批量导入处理图片…

spring boot项目一次性能测试的总结

满足标准&#xff1a;并发大于等于100 &#xff0c;平均响应时间小于等于3秒 项目在压测过程中并发数只有50&#xff0c;在并发数100的情况下有很多请求链接是失败的 我们该如何入手去处理这些问题并提高并发数呢&#xff1f; 1、首先从压测结果入手&#xff0c;对不满足标准…

淘天集团联合爱橙科技开源大模型训练框架Megatron-LLaMA

9月12日&#xff0c;淘天集团联合爱橙科技正式对外开源大模型训练框架——Megatron-LLaMA&#xff0c;旨在让技术开发者们能够更方便地提升大语言模型训练性能&#xff0c;降低训练成本&#xff0c;并保持和LLaMA社区的兼容性。测试显示&#xff0c;在32卡训练上&#xff0c;相…

分布式事务解决方案之2PC

分布式事务解决方案之2PC 前面已经学习了分布式事务的基础理论&#xff0c;以理论为基础&#xff0c;针对不同的分布式场景业界常见的解决方案有2PC、 TCC、可靠消息最终一致性、最大努力通知这几种。 什么是2PC 2PC即两阶段提交协议&#xff0c;是将整个事务流程分为两个阶段…

力扣题——3.二分查找

下面看几道力扣上面二分查找的题目 先看一下简单的 第704题&#xff1a; 很简单&#xff0c;不多说&#xff0c;直接给出解答&#xff1a; 二分查找的具体讲解可以看我的另一篇博客 第35题&#xff1a; 这题也是比较简单的&#xff0c;直接给出答案&#xff1a; 只需要注意一…

基础面试题

1、面向对象的三个基本特征&#xff1f; 封装&#xff0c;继承&#xff0c;多态&#xff1b; 继承&#xff1a;让某个类型的对象获得另一个类型的对象的属性的方法。继承就是子类继承父类的特征和行为&#xff0c;使得子类对象&#xff08;实例&#xff09;具有父类的实例域和…