使用 element-ui 隐藏组件 el-scrollbar 美化滚动条

刚好项目里面一直在使用的都是element,因为原生的滚动条太丑了,发现elementui中有个隐藏的组件,就是element官网使用的滚动条,可以优化滚动条样式。亲测可用,鼠标经过的时候才会显示,简单美观。

代码
layout.vue

<template>
    <div class="lay-out">
        <el-scrollbar class="page-scroll">
            <Header></Header>
            <div class="main">
                <router-view />
            </div>
        </el-scrollbar>
    </div>
</template>

<script>
import Header from "./Header";
export default {
    name: "LayOut",
    components: {Header}
}
</script>

<style lang="less" scoped>
.lay-out{
    height: 100vh;  /* 必须给外层设高度 滚动条才会显示 */
    .page-scroll {
        height: 100%;
        /deep/ .el-scrollbar__wrap{
            overflow-x: hidden;  /* 隐藏横向的原生滚动条 */
        }
    }
}
</style>

### 修改 `element-ui` 中 `el-scrollbar` 滚动条样式的自定义方法 为了实现对 `element-ui` 中 `el-scrollbar` 组件滚动条样式的自定义,可以通过覆盖默认样式来达到目的。具体来说,可以利用 CSS 或者 SCSS 来重写滚动条的相关属性。 #### 使用全局样式文件覆盖默认样式 如果项目中使用的是 Vue CLI 创建的应用程序,则可以在项目的根目录下的 `src/assets/styles/variables.scss` 文件中加入如下代码: ```scss /* 覆盖 el-scrollbar 默认样式 */ .el-scrollbar .el-scrollbar__bar { /* 设置滚动条背景颜色 */ background-color: rgba(0, 0, 0, 0.2); } .el-scrollbar .el-scrollbar__thumb { /* 设置滑块的颜色 */ background-color: #bfbfbf; &:hover, &:active { /* 鼠标悬停或激活时改变颜色 */ background-color: darken(#bfbfbf, 10%); } } ``` 上述代码通过设置 `.el-scrollbar__bar` 和 `.el-scrollbar__thumb` 类的选择器优先级高于框架自带的类选择器,从而实现了对滚动条外观的有效控制[^1]。 #### 在单个页面内局部应用样式 对于只需要在一个特定页面或者组件内部调整滚动条样式的场景,可以直接在该组件对应的 `<style scoped>` 块里面编写相应的CSS/SASS规则: ```vue <template> <!-- ... --> </template> <script setup lang="ts"> // ... </script> <style scoped lang="scss"> @import "~element-plus/packages/theme-chalk/src/mixins/common/var"; .my-custom-scroll-bar ::v-deep(.el-scrollbar__bar), .my-custom-scroll-bar ::v-deep(.el-scrollbar__rail) { opacity: 0 !important; &.is-vertical { width: 8px !important; } &.is-horizontal { height: 8px !important; } } .my-custom-scroll-bar ::v-deep(.el-scrollbar__thumb) { border-radius: 4px; @include scrollbar-thumb(); &:hover { @include scrollbar-thumb-hover(); } } </style> ``` 这里需要注意两点:一是使用了 `::v-deep()` 穿透作用域插件以便能够影响子组件中的元素;二是引入了Element Plus的主题变量以保持一致性并简化编码工作量[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值