You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
// 引入bindingx, 此库类似于微信小程序wxs, 目的是让js运行在视图层, 减少视图层和逻辑层的通信折损
const BindingX = uni . requireNativePlugin ( 'bindingx' )
export default {
methods : {
// 此处不写注释,请自行体会
nvueScrollHandler ( e ) {
const anchor = this . $refs [ 'u-scroll-list__scroll-view' ] . ref
const element = this . $refs [ 'u-scroll-list__indicator__line__bar' ] . ref
const scrollLeft = e . contentOffset . x
const contentSize = e . contentSize . width
const { scrollWidth } = this
const barAllMoveWidth = this . indicatorWidth - this . indicatorBarWidth
// 在安卓和iOS上, 需要除的倍数不一样, iOS需要除以2
const actionNum = uni . $u . os ( ) === 'ios' ? 2 : 1
const expression = ` (x / ${ actionNum } ) / ${ contentSize - scrollWidth } * ${ barAllMoveWidth } `
BindingX . bind ( {
anchor ,
eventType : 'scroll' ,
props : [ {
element ,
property : 'transform.translateX' ,
expression
} ]
} )
}
}
}