JavaScript之处理CSS

  1. //操作样式类,实现方法是对元素的className属性进行操作
  2. //className属性,相当于元素的class属性,但不可以对class属性直接操作
  3. //因为这样会出现浏览器的兼用性问题(IE中设置class属性后,并不会主动重新渲染样式)
  4. //添加样式类
  5. //obj为要添加样式类的DOM对象,className为样式类名称
  6. //className可为多个class,之间用空格分开
  7. function addClass(obj, className){
  8.     obj.className += " "+className;
  9. }
  10. //删除样式类
  11. //obj为要删除样式类的DOM对象,className为样式类名称
  12. //className可为多个class,之间用空格分开
  13. function removeClass(obj, className){
  14.     var classNameArray = className.split(" ");
  15.     for(var i = 0; i < classNameArray.length; i++)
  16.         obj.className = obj.className.replace(
  17.             new RegExp(classNameArray[i], "g"), "");            
  18. }
  19.             
  20. //读取、设置CSS属性
  21. //当value参数为undefined时进行读取操作
  22. //进行读取操作时,obj.style[property]不是obj样式属性的真实反映
  23. //因为通过CSS文件渲染的属性并没有更新到style属性中
  24. //在IE中我们可以通过currentStyle来获得
  25. //在支持W3C标准的浏览器中(如FireFox),
  26. //可以通过对document的defaultView属性的一些操作来获得
  27. function css(obj, property, value){
  28.     if(!value){
  29.         return obj.style[property] || obj.currentStyle[property] || 
  30.             document.defaultView.getComputedStyle(obj, null)[property];
  31.     }else{
  32.         obj.style[property] = value;
  33.     }
  34. }
  35. //在实现自定义的工具提示和进行Windows窗口模拟等操作时,
  36. //我们常需要获得元素的一些布局的信息,
  37. //有时这些信息不能通过CSS的属性直接获得,比如要获取元素的width,
  38. //若其width样式属性设置为auto,直接读取CSS属性就无法得到元素的实际width了.
  39. //获取绝对的Top 
  40. //当display为none时offsetParent为null
  41. function getTop(obj){
  42.     var res = 0;
  43.     //任何显示元素都有offsetParent,即布局父元素
  44.     //offsetTop是相对offsetParent的
  45.     //而offsetParent相对与它的offsetParent也有offsetTop
  46.     res += obj.offsetTop
  47.     var p = obj.offsetparent;
  48.     //要获得绝对的Top,就要不断的回溯offsetParent
  49.     //直到offsetParent为body才停止
  50.     //利用body.offsetParent是null特点来进行判定是否该结束回溯
  51.     while(p){
  52.         res += p.offsetTop;
  53.         p = p.offsetParent;
  54.     }
  55.     return res;
  56. }
  57. //获取绝对的Left
  58. function getLeft(obj){
  59.     var res = 0;
  60.     res += obj.offsetLeft
  61.     var p = obj.offsetparent;
  62.     while(p){
  63.         res += p.offsetLeft;
  64.         p = p.offsetParent;
  65.     }
  66.     return res;
  67. }
  68. //获取Width Height
  69. //obj.offsetWidth 包括边框以内的宽度
  70. //obj.offsetHeight 包括边框以内的长度
  71. //obj.clientWidth 边框以内(不包括边框)的宽度
  72. //obj.clientHeight 边框以内(不包括边框)的长度
  73. //obj.clientTop  obj的client相对于obj的顶部偏移
  74. //obj.clientWidth obj的client相对于obj的左部偏移
  75.             
  76. //获取窗口的文档显示区的高度和宽度
  77. //IE中的window.innerHeight和window.innerWidth是未定义的
  78. //所以要使用document.documentElement属性(HTML)或document.body属性(XHTML)
  79. function getViewHeight(){
  80.     return window.innerHeight || document.documentElement.clientHeight || 
  81.         document.body.clientHeight;
  82. }
  83. function getViewWidth(){
  84.     return window.innerWidth || document.documentElement.clientWidth || 
  85.         document.body.clientWidth;
  86. }
  87.             
  88. //MouseEvent的位置
  89. //screenX 相对于屏幕
  90. //screenY
  91. //clientX 相对于接受鼠标事件的对象
  92. //clientY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值