更新時(shí)間:2023-09-14 來(lái)源:黑馬程序員 瀏覽量:
classList屬性是HTML5新增的一個(gè)屬性,返回元素的類(lèi)名。但是ie10以上版本支持。該屬性用于在元素中添加,移除及切換 CSS 類(lèi)。classList的常見(jiàn)操作方法如下:
添加類(lèi):
element.classList.add(’類(lèi)名’);
focus.classList.add('current');
移除類(lèi):
element.classList.remove(’類(lèi)名’);
focus.classList.remove(‘current’);
切換類(lèi):
element.classList.toggle(’類(lèi)名’);
focus.classList.toggle(‘current’);
注意以上方法里面,所有類(lèi)名都不帶點(diǎn)。
移動(dòng)端 click 事件會(huì)有 300ms 的延時(shí),原因是移動(dòng)端屏幕雙擊會(huì)縮放(double tap to zoom) 頁(yè)面。解決方案有兩種:
1. 禁用縮放。 瀏覽器禁用默認(rèn)的雙擊縮放行為并且去掉 300ms 的點(diǎn)擊延遲。
<meta name="viewport" content="user-scalable=no">
2. 利用touch事件自己封裝這個(gè)事件解決 300ms 延遲。
原理就是:
1. 當(dāng)我們手指觸摸屏幕,記錄當(dāng)前觸摸時(shí)間
2. 當(dāng)我們手指離開(kāi)屏幕, 用離開(kāi)的時(shí)間減去觸摸的時(shí)間
3. 如果時(shí)間小于150ms,并且沒(méi)有滑動(dòng)過(guò)屏幕, 那么我們就定義為點(diǎn)擊
//封裝tap,解決click 300ms 延時(shí) function tap (obj, callback) { var isMove = false; var startTime = 0; // 記錄觸摸時(shí)候的時(shí)間變量 obj.addEventListener('touchstart', function (e) { startTime = Date.now(); // 記錄觸摸時(shí)間 }); obj.addEventListener('touchmove', function (e) { isMove = true; // 看看是否有滑動(dòng),有滑動(dòng)算拖拽,不算點(diǎn)擊 }); obj.addEventListener('touchend', function (e) { if (!isMove && (Date.now() - startTime) < 150) { // 如果手指觸摸和離開(kāi)時(shí)間小于150ms 算點(diǎn)擊 callback && callback(); // 執(zhí)行回調(diào)函數(shù) } isMove = false; // 取反 重置 startTime = 0; }); } //調(diào)用 tap(div, function(){ // 執(zhí)行代碼 });