第一步:安装better-scroll:npm install better-scroll --save-dev
第二步:在项目中引入better-scroll对象import Bscroll from 'better-scroll'
代码结构如下:
<div class="person-wrap" ref="personWrap">
<ul class="person-list" ref="personTab">
<li class="person-item">1</li>
<li class="person-item">2</li>
<li class="person-item">3</li>
<li class="person-item">4</li>
<li class="person-item">5</li>
</ul>
</div>
以上有三个点需要注意,第一个点是外部div是滚动的整个区域,需要通过ref获取dom;
第二点是ul元素包裹子元素li的父元素,它的宽度是动态的,根据N个子元素的宽度计算得来,
因此也需要通过ref获取dom;第三点是li元素在实际开发中是不确定的,它的个数以及宽度
时刻影响着父元素的宽度。
最后,我们再来看看核心代码
import BScroll from "better-scroll";
export default {
name: "ReserveInfo",
data() {
return {};
},
created() {
this.$nextTick(() => {
this.personScroll();
});
},
methods: {
personScroll() {
// 默认有六个li子元素,每个子元素的宽度为120px
let width = 6 * 120;
this.$refs.personTab.style.width = width + "px";
// this.$nextTick 是一个异步函数,为了确保 DOM 已经渲染
this.$nextTick(() => {
if (!this.scroll) {
this.scroll = new BScroll(this.$refs.personWrap, {
startX: 0,
click: true,
scrollX: true,
// 忽略竖直方向的滚动
scrollY: false,
eventPassthrough: "vertical"
});
} else {
this.scroll.refresh();
}
});
}
}
}
在html中dom全部渲染完毕后,调用this.personScroll()方法,该方法首先为ul父元素的宽
度动态赋值;接着定义滚动区域对象,设置相关的属性即可。
使用vue+better-scroll实现横向滚动效果
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...