一只斗牛犬
2021-12-23 14:27:01
我有一個(gè)包含多個(gè)部分的網(wǎng)頁(yè)。要從一個(gè)部分切換到另一個(gè)部分,我不使用滾動(dòng),但一切都是通過(guò)單擊來(lái)完成的(菜單、分頁(yè)、箭頭等...)一旦用戶(hù)進(jìn)入一個(gè)部分,背景就會(huì)改變顏色,每個(gè)部分都變成它的顏色。我創(chuàng)建這種函數(shù)沒(méi)有問(wèn)題,但我有一個(gè)性能問(wèn)題?;蛘咭苍S這是我不知道的邏輯問(wèn)題如果我將我的事件綁定在滾動(dòng)條上并在該部分處于正確位置后立即要求更改顏色會(huì)更好window.addEventListener('scroll', requestAnimationFrame(function(){ if ( sectionPosition === 0 ){ // Do something... }}))或者如果我使用事件委托將我的事件綁定在不同的可點(diǎn)擊元素上會(huì)更好 window.addEventListener('click', function(event){ let selector = event.target.getAttribute("href"); if( selector === "#section-one"){ //.... } if(selector === "#section-two"){ //.... }})
1 回答

HUX布斯
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
我認(rèn)為第二個(gè)選項(xiàng)很好,在滾動(dòng)時(shí)添加偵聽(tīng)器會(huì)導(dǎo)致在滾動(dòng)的每個(gè)像素時(shí)調(diào)用回調(diào),因此在許多不需要的調(diào)用中,使動(dòng)作顯式優(yōu)于隱式
最好的情況是,您需要在每個(gè)元素上而不是在整個(gè)窗口上添加單擊事件偵聽(tīng)器,以避免通過(guò)任何單擊觸發(fā)單擊回調(diào)。
在目標(biāo)項(xiàng)目上添加點(diǎn)擊事件
const sectionOneEl = document.querySelector('#section-one');
sectionOneEl.addEventListener('click', ev => {
// section one click handler
});
添加回答
舉報(bào)
0/150
提交
取消