Vue+Element组件修改浏览器滚动条样式

前言:在Vue项目中会有使用到滚动条的情况,但是会遇到原生滚动条的样式不满足UI设计,因此需要改变滚动条的样式,下面使用两种方式来修改滚动条的样式,以Vue项目举例

1.第一种利用Element组件库

  • Vue2.x的项目中我们可以利用Element UI组件el-scrollbar来改变滚动条的样式,虽然API文档中并没有给出el-scrollbar的使用方法,但可以正常使用的,使用方法如下:

    <template><div class="outer"><el-scrollbarstyle="height: 100%;"class="scrollbar-for"><!-- 内容部分 -->...</el-scrollbar></div>
    </template>
    <script lang="less">
    // 设置滚动条
    .scrollbar-for {.el-scrollbar__wrap {overflow-x: hidden; // 底部横向滚动条进行隐藏}
    }
    </script>
    
  • 需要注意的是,使用滚动条组件时将需要滚动展示的内容包进组件内即可,如图中所示左侧的红色框为el-row就是包含在右侧红框内组件el-scrollbarel-scrollbar__view里面,这样在超出指定范围height: 100%的高度时会出现滚动条,这个组件并不是完美的会出现一下小问题,如数据更新后组件未更新的问题,不能像原生一样按住shif键进行左右横向滚动的问题,这也可能是官方没有直接在API文档中给出的原因

  • Vue3.x的项目中,可以配合使用Element Plus组件库中的Scrollbar滚动条组件,也就是el-scrollbar,这次在API文档中给出了明确的文档可以进行参考,详见Scrollbar 滚动条,使用与Element UIel-scrollbar相差无异(使用前记得关注一下组件库版本与安装的版本)

2.利用CSS修改原生滚动条样式

  • 如果使用的是Vue3.x的版本还是推荐使用Element Plus组件库,如果你使用了Ant Design Vue或者其它组件库,没有滚动条的组件库,又或是组件库的滚动条样式不满足设计的需要等原因,这时候就需要修改浏览器的原生滚动条了,下面就仿照el-scrollbar的样式修改原生滚动条并全局使用,代码如下:

    <template><div class="container">...</div>
    </template>
    ...
    <style scoped lang="less">.container {height: 100%;overflow: auto;// 滚动条整体部分&::-webkit-scrollbar {width: 6px;height: 6px;}// 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。&::-webkit-scrollbar-button {display: none;}// 滚动条的轨道(里面装有Thumb)&::-webkit-scrollbar-track {background: transparent;}// 滚动条的轨道(里面装有Thumb)&::-webkit-scrollbar-track-piece {background-color: transparent;}// 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)&::-webkit-scrollbar-thumb {background: rgba(144, 147, 153, 0.3);cursor: pointer;border-radius: 4px;}// 边角,即两个滚动条的交汇处&::-webkit-scrollbar-corner {display: none;}// 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件&::-webkit-resizer {display: none;}}
    </style>
    
  • 通过以上的样式设置在Chrome浏览器上就可以实现和组件库同样效果的滚动条了,而且原生滚动条支持按住shift可以进行横向滚动的操作,效果如下图所示:

  • 但是打开Firefox浏览器后发现滚动条样式并没有生效,火狐提供了自己的CSS样式属性去设置滚动条的样式,比起谷歌可操作空间非常小,加上适配火狐的代码如下:

    <template><div class="container">...</div>
    </template>
    ...
    <style scoped lang="less">.container {height: 100%;overflow: auto;scrollbar-color: rgba(144, 147, 153, 0.3) transparent; /* 滑块颜色  滚动条背景颜色 */scrollbar-width: thin; /* 滚动条宽度有三种:thin、auto、none */// 滚动条整体部分&::-webkit-scrollbar {width: 6px;height: 6px;}// 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。&::-webkit-scrollbar-button {display: none;}// 滚动条的轨道(里面装有Thumb)&::-webkit-scrollbar-track {background: transparent;}// 滚动条的轨道(里面装有Thumb)&::-webkit-scrollbar-track-piece {background-color: transparent;}// 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)&::-webkit-scrollbar-thumb {background: rgba(144, 147, 153, 0.3);cursor: pointer;border-radius: 4px;}// 边角,即两个滚动条的交汇处&::-webkit-scrollbar-corner {display: none;}// 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件&::-webkit-resizer {display: none;}}
    </style>
    
  • 在火狐浏览器上的效果如下:

  • 关于IE的如何设置(就去说服UI吧),当然如果每个页面都要加这些样式属性上去就显得非常臃肿,可以直接在公共样式文件中加上,这里是common.less文件,需要滚动是通过设置overflow的属性值即可,代码如下:

    *{scrollbar-color: rgba(144, 147, 153, 0.3) transparent; /* 滑块颜色  滚动条背景颜色 */scrollbar-width: thin; /* 滚动条宽度有三种:thin、auto、none */// 滚动条整体部分
    }
    *::-webkit-scrollbar {width: 6px;height: 6px;
    }
    // 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
    *::-webkit-scrollbar-button {display: none;
    }
    // 滚动条的轨道(里面装有Thumb)
    *::-webkit-scrollbar-track {background: transparent;
    }
    // 滚动条的轨道(里面装有Thumb)
    *::-webkit-scrollbar-track-piece {background-color: transparent;
    }
    // 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
    *::-webkit-scrollbar-thumb {background: rgba(144, 147, 153, 0.3);cursor: pointer;border-radius: 4px;
    }
    // 边角,即两个滚动条的交汇处
    *::-webkit-scrollbar-corner {display: none;
    }
    // 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件
    *::-webkit-resizer {display: none;
    }
    
  • 这样设置就可以完美解决滚动条样式问题了,至于如何关闭滚动条,代码如下:

    div {scrollbar-width: none;&::-webkit-scrollbar {display: none;}
    }
    

到这里问题就解决了,如果有更好的方式,欢迎补充和讨论

Vue项目修改浏览器滚动条样式相关推荐

  1. 原来如此?修改浏览器滚动条样式

    粘贴复制使用 /* 修改浏览器滚动条样式 */ ::-webkit-scrollbar {width: .4rem;height: .4rem;background: hsla(0, 0%, 100% ...

  2. html5的修改滚动条滑块样式,前端项目修改默认滚动条样式

    前端项目修改默认滚动条样式 写过挺多项目都需要改变滚动条的默认样式 并不想单独下载和引入插件 因此纯css修改默认滚动条的样式 这次算统一整理下方法,直接上代码. &::-webkit-scr ...

  3. vue全局修改设置滚动条样式

    ::-webkit-scrollbar{ /*滚动条整体样式*/width: 10px; /*高宽分别对应横竖滚动条的尺寸*/height: 1px; } ::-webkit-scrollbar-th ...

  4. 修改浏览器滚动条样式(兼容IE)

    通常为了满足页面整体的风格的情况下,需要修改滚动条的颜色,各大视频网站都是以添加自定义滚动条的方式来满足,其实也可以理解,毕竟好像就只要添加一两个而已.如果是做管理系统或者其它需要多处修改浏览器滚动条 ...

  5. css 修改浏览器滚动条样式(火狐Firefox,谷歌google)

    一.修改谷歌google: 修改样式: 1.全局修改,所有滚动条生效: ::-webkit-scrollbar{width:6px;height:6px; background-color: #000 ...

  6. vue项目中改变滚动条样式

    vue项目中改变浏览器滚动条的样式,推荐一个超级好用的vue组件: vuescroll.js

  7. vue项目修改浏览器图标以及标题

    favicon.ico一般用于作为缩略的网站标志,它显示位于浏览器的地址栏或者在标签上,用于显示网站的logo,如图红圈的位置, 目前主要的浏览器都支持favicon.ico图标. 目前vue-cli ...

  8. CSS修改浏览器滚动条样式

    可以修改滚动条的以下样式: 1.颜色: 2.宽度: 3.阴影: 3.边框样式. CSS代码如下: <style> body { height: 3000px; } body::-webki ...

  9. 修改浏览器滚动条样式

    /定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸 兼容谷歌和360/ ::-webkit-scrollbar { width: 16px; height: 16px; background-col ...

最新文章

  1. ie中placeholder字体颜色兼容问题
  2. linux数据库都备份什么,Linux运维学习之数据库备份与恢复
  3. extern c用法解析
  4. Ajax/CSS表格设计汇集
  5. jquery手写轮播图_jquery 实现轮播图详解及实例代码_jquery_脚本之家
  6. UVa11549计算器谜题[floyd判圈]
  7. php随机访问文章,zblog PHP调用热门文章、随机文章和热评文章代码
  8. 记录——《C Primer Plus (第五版)》第八章编程练习第二题
  9. 《Java语言程序设计》(基础篇原书第10版)第十章复习题答案
  10. 原生js获取html根元素,JS获取屏幕高度的简单实现代码
  11. 联想微型计算机如果进入BIos,联想笔记本各机型如何进入bios
  12. NASM 汇编编程(八)int 10h
  13. python的就业方向有哪些城市_【行业分析|听说你选择python后就业迷茫?Python就业方向都有哪些】- 环球网校...
  14. java新手初次面试要注意的事项
  15. 亚马逊多账号怎么管理|亚马逊账号关联
  16. 2023西安交通大学药物分析专业学硕考研上岸经验
  17. 【Go基础】1 - Go Go Go
  18. python程序设计中、文件有哪两种展现形态_智慧职教APPPython程序设计(常州工业职业技术学院)作业期末考试答案...
  19. 今天你吃粽子了吗?快进来看看你都吃过哪一种粽子吧
  20. qt 文件大图标、列表等样式切换_跬步千里,厚积薄发:深度操作系统v15.9版正式发布...

热门文章

  1. abcdCode代码生成器demo
  2. 达内培训c语言怎么样,达内培训 C语言和C++到底有什么关系?
  3. 图像检索中的相似度度量:EMD距离(Earth Mover's Distance)
  4. 同一个SQL引发多个ORA-7445错误
  5. Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器
  6. three.js全景搭建 、锚点标注添加、 OrbitControls 轨道方向控制 、 场景切换
  7. Java经典题目:交通灯系统
  8. android 悬浮按钮 功能实现,怎么在Android中利用FloatingActionButton实现一个悬浮按钮效果...
  9. arcgispro导入rvt数据_BIM
  10. java五子棋游戏设计_基于Java的五子棋游戏的设计