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