export const sliderDom = {
mounted(el, binding) {
addEventListener(el, binding)
},
unmounted(el) {
removeEventListener(el)
}
}
function removeEventListener(el) {
el.removeEventListener('touchstart', () => {})
el.removeEventListener('touchmove', () => {})
el.removeEventListener('touchend', () => {})
}
function addEventListener(el, { value }) {
const { leftDisabled = false, rightDisabled = false, elId, handleChange } = value
// 縱向滑動(dòng)時(shí)禁止水平滑動(dòng)侍瑟,水平滑動(dòng)時(shí)禁止縱向滑動(dòng)倔丈;
// 水平滑動(dòng)結(jié)束超過屏幕二分之一時(shí)則toggle;
// 最大可滑動(dòng)不超過屏幕的三分之二瓦呼;
let startX = 0
let startY = 0
let endX = 0
let endY = 0
let dValueX = 0
let dValueY = 0
let horizontalMoved = false
let verticalMoved = false
const filterEl = e => {
return e.target.id === elId
}
const onTouchStart = e => {
if (filterEl(e)) {
startX = e.targetTouches[0].pageX
startY = e.targetTouches[0].pageY
}
}
const onTouchMove = e => {
if (filterEl(e)) {
endX = e.targetTouches[0].pageX
endY = e.targetTouches[0].pageY
dValueX = Math.abs(startX - endX)
dValueY = Math.abs(startY - endY)
// 水平滑動(dòng)長(zhǎng)度大于縱向滑動(dòng)長(zhǎng)度背率,選擇水平滑動(dòng)
if (dValueX > dValueY) {
if (verticalMoved) {
e.preventDefault()
return
} else horizontalMoved = true
e.preventDefault()
} else {
if (horizontalMoved) e.preventDefault()
else verticalMoved = true
verticalMoved = true
}
}
}
const onTouchEnd = e => {
if (filterEl(e)) {
// const range = window.screen.width / 3
const range = 100
if (horizontalMoved) {
if (dValueX > range) {
if (startX > endX) {
// console.log('向左劃')
if (!leftDisabled) handleChange('left')
} else if (startX < endX) {
// console.log('向右劃')
if (!rightDisabled) handleChange('right')
}
}
}
if (verticalMoved) {
// 處理縱向滑動(dòng)邏輯
}
horizontalMoved = false
verticalMoved = false
startX = endX = 0
startY = endY = 0
}
}
el.addEventListener('touchstart', onTouchStart)
el.addEventListener('touchmove', onTouchMove)
el.addEventListener('touchend', onTouchEnd)
}
vue3通過指令判斷頁(yè)面向左或者向右滑動(dòng)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門蜡豹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來麸粮,“玉大人,你說我怎么就攤上這事余素”荩” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵桨吊,是天一觀的道長(zhǎng)威根。 經(jīng)常有香客問我,道長(zhǎng)视乐,這世上最難降的妖魔是什么洛搀? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮佑淀,結(jié)果婚禮上留美,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好谎砾,可當(dāng)我...
- 文/花漫 我一把揭開白布逢倍。 她就那樣靜靜地躺著,像睡著了一般景图。 火紅的嫁衣襯著肌膚如雪较雕。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼趁怔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了闰蛔?” 一聲冷哼從身側(cè)響起痕钢,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎序六,沒想到半個(gè)月后任连,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡例诀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年随抠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片繁涂。...
- 正文 年R本政府宣布矿酵,位于F島的核電站唬复,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏全肮。R本人自食惡果不足惜敞咧,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辜腺。 院中可真熱鬧休建,春花似錦乍恐、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至邑彪,卻和暖如春瞧毙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寄症。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像悲没,于是被迫代替她去往敵國(guó)和親篮迎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- vue3項(xiàng)目想修改頁(yè)面中項(xiàng)目標(biāo)題示姿,搜索后發(fā)現(xiàn)標(biāo)題是通過文件public - index.html中的htmlWeb...
- 如何實(shí)現(xiàn)連續(xù)向左滑動(dòng) 解決辦法:循環(huán)滑動(dòng)即可 如上圖代碼:循環(huán)可以加在方法上-》調(diào)三次方法也可以加在滑動(dòng)動(dòng)作上如下...
- process.env 在node中栈戳,有全局變量process表示的是當(dāng)前的node進(jìn)程岂傲。process.env包...