elment ui drawer 页面抖动问题

博客指出drawer打开前页面会抖动且右边留白,原因是滚动条。解决办法是在属性里添加一行代码,即多加一个 :lockScroll=\false\ 。

drawer打开之前 页面会抖动一下 甚至右边会有留白 是因为滚动条所致 我们只需要添加一行代码即可

 <el-drawer
      :visible.sync="drawer"
      :direction="direction"
      :before-close="handleClose"
      :size="size"
      :with-header="false"
      :lockScroll="false"
    >

如上所示 在属性里多加一个 :lockScroll="false"即可

### 如何自定义 Element UI 抽屉组件的样式 Element UI 的 `el-drawer` 组件提供了丰富的配置选项,允许开发者通过多种方式调整其外观和行为。以下是几种常见的方法来自定义抽屉组件的样式。 #### 方法一:使用 Scoped CSS 修改局部样式 可以通过 Vue 单文件组件中的 `<style scoped>` 来限定样式的范围,仅影响当前组件内的抽屉组件。例如: ```html <template> <el-drawer :visible.sync="drawerVisible"> 我是一个抽屉内容 </el-drawer> </template> <style scoped> /* 自定义抽屉内部的内容样式 */ ::v-deep .el-drawer { background-color: #f0f0f0; } /* 调整抽屉标题区域的颜色 */ ::v-deep .el-drawer__header { color: blue; } </style> ``` 这种方法利用了 `::v-deep` 穿透作用域的选择器[^3],可以覆盖默认的类名并应用新的样式。 --- #### 方法二:全局修改抽屉组件的样式 如果希望在整个项目中统一修改抽屉组件的样式,则可以在项目的全局样式文件(如 `src/assets/styles/global.scss` 或 `App.vue` 中引入)中编写通用规则: ```css .el-drawer { /* 设置背景颜色 */ background-color: #ffffff; /* 隐藏滚动条 */ overflow-y: hidden; } /* 调整方向为右侧时的具体宽度 */ .el-drawer.rtl { width: 40%; /* 默认宽度为 30%,可以根据需求更改 */ } ``` 这种方式适用于需要一致性的场景,比如所有的抽屉都需要相同的宽度或背景色[^1]。 --- #### 方法三:动态绑定样式属性 对于更灵活的需求,可以通过 JavaScript 动态设置抽屉的样式。例如,在父组件中传递参数到子组件,并根据这些参数计算具体的样式值: ```javascript <template> <el-drawer :title="title" :visible.sync="drawerVisible" :direction="direction" :size="customSize" > <!-- 抽屉内容 --> </el-drawer> </template> <script> export default { data() { return { drawerVisible: false, title: '自定义标题', direction: 'rtl', // 右侧显示 customSize: '50%' // 动态尺寸 }; } }; </script> ``` 此方法特别适合于需要根据不同条件调整抽屉大小或其他特性的场合[^2]。 --- #### 方法四:增加交互逻辑优化用户体验 除了静态样式外,还可以结合事件监听进一步提升体验。例如,禁用页面滚动条以防止干扰用户的视觉焦点: ```javascript methods: { openDrawer() { document.body.style.overflow = 'hidden'; // 打开抽屉时隐藏滚动条 }, closeDrawer() { document.body.style.overflow = ''; // 关闭抽屉时恢复滚动条 } }, watch: { drawerVisible(newVal) { if (newVal) { this.openDrawer(); } else { this.closeDrawer(); } } } ``` 这种技术能够有效解决因抽屉动画引起的布局抖动问题--- #### 方法五:扩展功能支持拖拽调整宽度 为了增强灵活性,可通过第三方库(如 ResizeObserver API 或 vue-resizable 插件)实现抽屉宽度的手动调节。下面是一段简单的示例代码片段: ```html <template> <el-drawer ref="drawerRef" v-bind="$attrs" @open="onOpen" @close="onClose"> <resizable-area /> </el-drawer> </template> <script> import ResizableArea from './ResizableArea'; export default { components: { ResizableArea }, methods: { onOpen() { console.log('抽屉已打开'); }, onClose() { console.log('抽屉已关闭'); } } }; </script> ``` 更多细节参见相关文档说明[^4]。 --- ### 总结 以上介绍了五种不同的方案用于定制化 Element UI 抽屉组件的表现形式,具体采用哪种取决于实际业务需求以及团队的技术栈偏好。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值