- 給標籤增加或移出類名
肯定有人會說,新增類名可以用obj.classList.add
呀,是的,這沒有錯。但我也說了,這些我積累的函式都是相容性極佳的方式,也就是說,不管是 ie 的多低版本,也是沒多大問題的,而且這些自己實現的功能確實對初學者幫助不少。
function addClass(ele, className){
var reg = new RegExp("\b"+className+"\b");
if(!reg.test(ele.className)){
/* 如果元素 ele 不包含 className */
ele.className += " "+className;
};
};
function removeClass(ele, className){
if(ele.className){
var reg = new RegExp("\b"+className+"\b");
var classes = ele.className;
ele.className = classes.replace(reg, "");
if(/^s*$/g.test(ele.className)){
ele.removeAttribute("class");
};
}else{
ele.removeAttribute("class");
}
};
2.滾輪事件
滾輪事件也是 PC 端主流網站必須實現的功能,通常我們會配合我們自己寫的滾動條禁止掉系統的滾動條來使用。但是,滾輪事件跟我們想象的略有不同,它是 firefox 一種繫結,反而 ie 和 chrome 是一樣的。
window.onload = function () {
//ie/chrome
document.onmousewheel = function(event){
scrollMove(event,callback)
}
//firefox
if(document.addEventListener){
document.addEventListener(`DOMMouseScroll`,function(event){
scrollMove(event,callback)
});
}
function scrollMove(event,callback) {
event = event || window.event;
var flag = ``;
if(event.wheelDelta){
//ie/chrome
if(event.wheelDelta > 0){
//上
flag = `up`;
}else {
//下
flag = `down`
}
}else if(event.detail){
//firefox
if(event.detail < 0){
//上
flag = `up`;
}else {
//下
flag = `down`
}
}
switch (flag){
case `up`:
if (callback && callback[`wheelUp`] == `function`) {
callback.wheelUp()
}
break;
case `down`:
break;
}
//取消預設行為
event.preventDefault && event.preventDefault();
return false;
}
};
未完待續 , 有時間就更新