由于浏览器自带的滚动条比较不符合设计图,所以在大部分项目中,我们都会自定义滚动条的样式,来还原设计图,让页面更加的美观。
npm i vuescroll@^4.17.0
代码如下(示例):
在main.js引入代码
import vuescroll from 'vuescroll';
// 配置参数
Vue.use(vuescroll, {
ops: {
vuescroll: {
mode: "native",
detectResize: true, //内容是否根据页面调整
},
bar: {
showDelay: 500,
onlyShowBarOnScroll: false, //是否只有滚动的时候才显示滚动条
keepShow: false,
background: '#eeeeee',
opacity: 0.2,
hoverStyle: false,
specifyBorderRadius: false,
minSize: false,
size: '6px',
disable: false,
overflowX: 'hidden',
},
scrollPanel: {
speed: 800, //多长时间内完成一次滚动。 数值越小滚动的速度越快。
easing: 'easeInQuad', //默认动画
}
},
name: 'vueScroll' // 在这里自定义组件名字,默认是vueScroll
});
// 定义全局组件
Vue.component('vueScroll', vuescroll);
在需要自定义的组件中使用 xxx.vue
<div class="more-text-content">
<vue-scroll ref="scrollNoticeDetails">
<div class="details-content">
<div class="details-conten-html" v-html="newsInfoObj.Content"></div>
</div>
</vue-scroll>
</div>
注意:这里父标签(.more-text-content)的高度(height)一定要有值,不然滚动条无法正常渲染。不管是通过哪种方式定义的高度,弹性布局定义的高度(flex: auto;)也可以,不一定非要写成一个死数据。
.more-text-content {
width: 100%;
height: 500px;
overflow: auto;
padding: 1.6875rem 0;
box-sizing: border-box;
.details-content {
width: 100%;
height: auto;
font-size: 1rem;
padding: 0 5.625rem;
line-height: 1.875rem;
color: #fff;
box-sizing: border-box;
}
}
this.$refs.scrollNoticeDetails.scrollTo({y: 0,}, 50);
自定义滚动条老方便了,如有错误还请朋友们帮我补充。