> 웹 프론트엔드 > JS 튜토리얼 > javascript YUI 코드 읽기 일기 YAHOO.util.Dom - Part.4_YUI.Ext 관련

javascript YUI 코드 읽기 일기 YAHOO.util.Dom - Part.4_YUI.Ext 관련

WBOY
풀어 주다: 2016-05-16 19:05:44
원래의
1114명이 탐색했습니다.

var getXY = function() {
// IE인지 확인
if (document.documentElement.getBoundingClientRect) {
// 참고 1
return function(el) {
var box = el.getBoundingClientRect();

var rootNode = el.ownerDocument; 🎜> Y.Dom.getDocumentScrollTop(rootNode)];
                            parentNode = el.offsetParent ; > // 결정 Safari에서 노드가 절대인지 여부,
// 상위 요소가 body인지 여부
// 참고 2.
var accountforBody = > Y.Dom.getStyle(el, 'position') == 'absolute ' &&
el.offsetParent == el.ownerDocument.body);

// 부모 요소 자체가 아닌 경우
if (parentNode != el) {
                                ~                      .offsettop; 🎜> y.DOM.GetStyle (Parentnode, 'Position')
== 'Absolute') {
AccountForbody = True;
}
Parentnod e = Parentnode.OffsetParent
}
         }

           // 还是针对 Safari의
          if (accountForBody) { //safari 가 이 경우 두 배가 됩니다.
                pos[0] -= el. ownerDocument.body.offsetLeft;
               pos[1] -= el.ownerDocument.body.offsetTop;
            } 
            parentNode = el.parentNode;

           // 스크롤된 상위 항목에 대한 계정
            ( parentNode.tagName && 
                     !patterns.ROOT_TAG.test(parentNode.tagName ) ) 
            {
              // 오페라 인라인 해결 /table scrollLeft/Top 버그
               // 注3.
              if (Y.Dom.getStyle(parentNode, 'display')
                           .search(/^inline|table-row.*$/i)) {      pos[0] -= parentNode.scrollLeft ;
                    pos[1] -= parentNode.scrollTop;
               }

               parentNode = parentNode.parentNode; 
            }

            반품 pos;
        };
    }
}() // 참고: 로드 시간 분기를 위해 실행 중입니다. 많은 IE의 getBoundingClientRect 방법이 있습니다.
注. Safari의 BUG, ​​详细情况参见这里。
注. 参见老外的原话(出处):
"- 상위 항목이 인라인 또는 테이블이 아닌 한 상위 스크롤을 제거하세요.
Opera 인라인/테이블 스크롤왼쪽/상단 버그를 해결하려면"
Opera 9.5에서 수정되었습니다. (또한 Opera 9.5는 getBoundingClientRect
및 getClientRects를 지원합니다.) 더 많은 DOM 적兼容性,可以参看 PPK 적总结(怎么又是他)。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿