//获取元素样式的方法(兼容性强)
//参数:
// obj:元素对象.
// sty: 样式
function getstyle(obj ,sty){
if(window.getcomputedstyle){
return getcomputedstyle(obj,null)[样式];
}else{
return obj.currentstyle[sty];
}
}
// 1.事件对象 event ie8及以下是将事件对象作为window的属性进行保存的
// 解决: event = event || window.event
// 2.滚动条 Chrome认为滚动条是body的其他浏览器认为滚动条是html的
// 解决:
// var 变量 =document.body.scrolltop || document.documentElement.scrollTop
// 切记制作div跟随鼠标移动时不要忘记给div添加绝对定位
//事件的绑定
// 参数:
// obj:元素对象
// ev :事件名
//fun :匿名函数
function bind(obj,ev,fun){
if(obj.addeventlistener){
return obj.addeventlistener(ev,fun,false);
}else{
return 元素对象.attachevent("on"+ev,function(){
fun.call(obj);
});
}
}
//创建一个可以执行简答动画的函数
// 参数:
// obj:执行动画的对象
//attr:要执行动画的样式,比如:left top width height
//target:执行动画的目标位置
//speed:移动的速度
//callback:回调函数,这个动画将会在动画执行完毕后执行
function move(obj,attr,target,speed,callback){
//关闭上一个定时器
clearInterval(obj.timer);
//获取元素目前的位置
var current=parseInt(getstyle(obj,attr));
//判断速度的正负值
if(current>target){
//此时速度应为负值
speed=-speed;
}
//开启一个定时器,用来执行动画效果
//向执行动画的对象中添加一个timer属性,用来保存他自己的定时器的标识
obj.timer=setInterval(function(){
//获取box1原来的left的值
var oldvalue=parseInt(getstyle(obj,attr));
//在旧值的基础上增加
var newvalue=oldvalue+speed;
//判断newvalue是否大于800
if(speed<0&& newvalue<target || speed>0 && newvalue>target){
newvalue=target;
}
//将新值设置给box1
obj.style[attr]=newvalue+"px";
//当元素移动到0px时,使其停止动画
if(newvalue==target){
//达到目标,关闭定时器
clearInterval(obj.timer);
callback && callback();
}
},30);
}
//定义一个函数,用来向一个元素中添加指定的class属性值
//参数
// obj :要添加class属性的元素对象
//cn :要添加的class的值
function addClass(obj,cn){
obj.className+=" "+cn;
}
//判断一个元素中是否有指定的class属性值
function hasClass(obj,cn){
var reg=new RegExp("\\b"+cn+"\\b");
return reg.test(obj.className);
}
//删除一个元素中的指定class属性
function removeClass(obj,cn){
var reg=new RegExp("\\b"+cn+"\\b");
obj.className=obj.className.replace(reg,"");
}
//切换一个类
// 如果元素中具有该类,则删除
// 如果元素中没有该类,则添加
function toggleClass(obj,cn){
if(hasClass(obj,cn)){
removeClass(obj,cn);
}else{
addClass(obj,cn);
}
}
js中一些兼容使用的方法
最新推荐文章于 2023-05-19 20:06:28 发布