当前位置:首页 > VUE

vue实现侧边抽屉

2026-03-07 22:30:05VUE

Vue 实现侧边抽屉的方法

使用 Vue 原生实现

通过 Vue 的 v-ifv-show 控制抽屉的显示与隐藏,结合 CSS 过渡动画实现平滑效果。

<template>
  <div>
    <button @click="toggleDrawer">Toggle Drawer</button>
    <div class="drawer" v-show="isOpen">
      <div class="drawer-content">
        <!-- 抽屉内容 -->
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isOpen: false
    }
  },
  methods: {
    toggleDrawer() {
      this.isOpen = !this.isOpen
    }
  }
}
</script>

<style>
.drawer {
  position: fixed;
  top: 0;
  left: 0;
  width: 300px;
  height: 100%;
  background: #fff;
  box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s ease;
  transform: translateX(-100%);
}

.drawer-content {
  padding: 20px;
}

.drawer.v-show {
  transform: translateX(0);
}
</style>

使用第三方库

Element UI、Vuetify 等流行 UI 框架都提供了现成的抽屉组件。

vue实现侧边抽屉

Element UI 示例:

<template>
  <el-button @click="drawer = true" type="primary">
    Open Drawer
  </el-button>

  <el-drawer
    title="Title"
    :visible.sync="drawer"
    direction="ltr"
    size="50%">
    <span>Drawer Content</span>
  </el-drawer>
</template>

<script>
export default {
  data() {
    return {
      drawer: false
    }
  }
}
</script>

Vuetify 示例:

vue实现侧边抽屉

<template>
  <v-app>
    <v-navigation-drawer v-model="drawer" absolute temporary>
      <v-list>
        <v-list-item>
          <v-list-item-content>
            <v-list-item-title>Drawer Content</v-list-item-title>
          </v-list-item-content>
        </v-list-item>
      </v-list>
    </v-navigation-drawer>

    <v-btn @click="drawer = !drawer">Toggle Drawer</v-btn>
  </v-app>
</template>

<script>
export default {
  data() {
    return {
      drawer: false
    }
  }
}
</script>

动画优化

为抽屉添加更丰富的动画效果,可以结合 Vue 的 <transition> 组件:

<template>
  <div>
    <button @click="showDrawer = !showDrawer">Toggle</button>
    <transition name="slide">
      <div v-if="showDrawer" class="drawer">
        <!-- 内容 -->
      </div>
    </transition>
  </div>
</template>

<style>
.slide-enter-active, .slide-leave-active {
  transition: transform 0.3s;
}
.slide-enter, .slide-leave-to {
  transform: translateX(-100%);
}
</style>

响应式处理

根据屏幕尺寸自动调整抽屉行为:

export default {
  data() {
    return {
      isMobile: false
    }
  },
  mounted() {
    this.checkMobile()
    window.addEventListener('resize', this.checkMobile)
  },
  methods: {
    checkMobile() {
      this.isMobile = window.innerWidth < 768
    }
  }
}

标签: 侧边抽屉
分享给朋友:

相关文章

vue实现抽屉组件

vue实现抽屉组件

实现抽屉组件的基本思路 抽屉组件通常用于从屏幕边缘滑出的交互式面板,常见于移动端或后台管理系统。Vue中可以通过动态CSS和过渡动画实现这一效果。 基础HTML结构 <template&g…

vue实现侧边栏

vue实现侧边栏

Vue 侧边栏实现方法 基础结构搭建 使用Vue Router和动态组件可以实现一个灵活的侧边栏。以下是一个基础模板结构: <template> <div class="app…

react 侧边栏路由实现

react 侧边栏路由实现

使用 React Router 实现侧边栏路由 安装 React Router 依赖包 npm install react-router-dom 创建基础路由结构 import { Browser…

jquery 侧边栏

jquery 侧边栏

使用 jQuery 创建侧边栏 基本 HTML 结构 创建一个简单的侧边栏结构,包含触发按钮和侧边栏内容。 <button id="sidebar-toggle">Toggle Si…

vue实现抽屉

vue实现抽屉

Vue 实现抽屉组件 在 Vue 中实现抽屉效果可以通过多种方式完成,以下是几种常见的方法: 使用第三方库(如 Element UI) Element UI 提供了现成的抽屉组件 el-drawer…

vue抽屉组件实现

vue抽屉组件实现

Vue 抽屉组件实现 使用 Element UI 实现抽屉组件 安装 Element UI 库: npm install element-ui 在 main.js 中引入 Element UI:…