- //操作样式类,实现方法是对元素的className属性进行操作
- //className属性,相当于元素的class属性,但不可以对class属性直接操作
- //因为这样会出现浏览器的兼用性问题(IE中设置class属性后,并不会主动重新渲染样式)
- //添加样式类
- //obj为要添加样式类的DOM对象,className为样式类名称
- //className可为多个class,之间用空格分开
- function addClass(obj, className){
- obj.className += " "+className;
- }
- //删除样式类
- //obj为要删除样式类的DOM对象,className为样式类名称
- //className可为多个class,之间用空格分开
- function removeClass(obj, className){
- var classNameArray = className.split(" ");
- for(var i = 0; i < classNameArray.length; i++)
- obj.className = obj.className.replace(
- new RegExp(classNameArray[i], "g"), "");
- }
- //读取、设置CSS属性
- //当value参数为undefined时进行读取操作
- //进行读取操作时,obj.style[property]不是obj样式属性的真实反映
- //因为通过CSS文件渲染的属性并没有更新到style属性中
- //在IE中我们可以通过currentStyle来获得
- //在支持W3C标准的浏览器中(如FireFox),
- //可以通过对document的defaultView属性的一些操作来获得
- function css(obj, property, value){
- if(!value){
- return obj.style[property] || obj.currentStyle[property] ||
- document.defaultView.getComputedStyle(obj, null)[property];
- }else{
- obj.style[property] = value;
- }
- }
- //在实现自定义的工具提示和进行Windows窗口模拟等操作时,
- //我们常需要获得元素的一些布局的信息,
- //有时这些信息不能通过CSS的属性直接获得,比如要获取元素的width,
- //若其width样式属性设置为auto,直接读取CSS属性就无法得到元素的实际width了.
- //获取绝对的Top
- //当display为none时offsetParent为null
- function getTop(obj){
- var res = 0;
- //任何显示元素都有offsetParent,即布局父元素
- //offsetTop是相对offsetParent的
- //而offsetParent相对与它的offsetParent也有offsetTop
- res += obj.offsetTop
- var p = obj.offsetparent;
- //要获得绝对的Top,就要不断的回溯offsetParent
- //直到offsetParent为body才停止
- //利用body.offsetParent是null特点来进行判定是否该结束回溯
- while(p){
- res += p.offsetTop;
- p = p.offsetParent;
- }
- return res;
- }
- //获取绝对的Left
- function getLeft(obj){
- var res = 0;
- res += obj.offsetLeft
- var p = obj.offsetparent;
- while(p){
- res += p.offsetLeft;
- p = p.offsetParent;
- }
- return res;
- }
- //获取Width Height
- //obj.offsetWidth 包括边框以内的宽度
- //obj.offsetHeight 包括边框以内的长度
- //obj.clientWidth 边框以内(不包括边框)的宽度
- //obj.clientHeight 边框以内(不包括边框)的长度
- //obj.clientTop obj的client相对于obj的顶部偏移
- //obj.clientWidth obj的client相对于obj的左部偏移
- //获取窗口的文档显示区的高度和宽度
- //IE中的window.innerHeight和window.innerWidth是未定义的
- //所以要使用document.documentElement属性(HTML)或document.body属性(XHTML)
- function getViewHeight(){
- return window.innerHeight || document.documentElement.clientHeight ||
- document.body.clientHeight;
- }
- function getViewWidth(){
- return window.innerWidth || document.documentElement.clientWidth ||
- document.body.clientWidth;
- }
- //MouseEvent的位置
- //screenX 相对于屏幕
- //screenY
- //clientX 相对于接受鼠标事件的对象
- //clientY