nav.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //导航固定
  2. var FixedBox=function(el){
  3. this.element=el;
  4. this.BoxY=getXY(this.element).y;
  5. }
  6. FixedBox.prototype={
  7. setCss:function(){
  8. var windowST=(document.compatMode && document.compatMode!="CSS1Compat")? document.body.scrollTop:document.documentElement.scrollTop||window.pageYOffset;
  9. if(windowST>this.BoxY){
  10. this.element.style.cssText="position:fixed;top:0px;width:100%;z-index:100;left:0px;padding-bottom:0px;margin-top:0;opacity: .8;filter: alpha(opacity=80);";
  11. }else{
  12. this.element.style.cssText="";
  13. }
  14. }
  15. };
  16. //添加事件
  17. function addEvent(elm, evType, fn, useCapture) {
  18. if (elm.addEventListener) {
  19. elm.addEventListener(evType, fn, useCapture);
  20. return true;
  21. }else if (elm.attachEvent) {
  22. var r = elm.attachEvent('on' + evType, fn);
  23. return r;
  24. }
  25. else {
  26. elm['on' + evType] = fn;
  27. }
  28. }
  29. //获取元素的XY坐标;
  30. function getXY(el) {
  31. return document.documentElement.getBoundingClientRect && (function() {//取元素坐标,如元素或其上层元素设置position relative
  32. var pos = el.getBoundingClientRect();
  33. return { x: pos.left + document.documentElement.scrollLeft, y: pos.top + document.documentElement.scrollTop };
  34. })() || (function() {
  35. var _x = 0, _y = 0;
  36. do {
  37. _x += el.offsetLeft;
  38. _y += el.offsetTop;
  39. } while (el = el.offsetParent);
  40. return { x: _x, y: _y };
  41. })();
  42. }
  43. //实例化;
  44. var divA=new FixedBox(document.getElementById("headnav"));
  45. addEvent(window,"scroll",function(){
  46. divA.setCss();
  47. });