문제

효과적으로 JS에서 해야 할 일은 절대 위치에 있는 모든 요소를 ​​x 픽셀만큼 아래로 이동하는 것입니다.모든 요소를 ​​반복하면서 요소가 절대적으로 배치되었는지 알아내야 합니까?아니면 더 좋은 방법이 있나요?

고마워요, 말라

업데이트: 특정한:어떤 페이지에든 JS를 삽입하기 위해 북마크릿을 사용하고 있습니다. 따라서 어떤 방식으로든 마크업이나 실제 CSS 파일을 변경할 수 없습니다.이 북마크릿은 무엇보다도 절대 위치에 있는 모든 요소를 ​​155픽셀 아래로 이동해야 합니다.

도움이 되었습니까?

해결책

다음과 같이 해야 합니다.

function getStyle(el, prop) {
  var doc = el.ownerDocument, view = doc.defaultView;
  if (view && view.getComputedStyle) {
    return view.getComputedStyle(el, '')[prop];
  }
  return el.currentStyle[prop];
}
var all = document.getElementsByTagName('*'), i = all.length;
while (i--) {
  var topOffset = parseInt(all[i].style.top, 10);
  if (getStyle(all[i], 'position') === 'absolute') {
    all[i].style.top = isNaN(topOffset) ? '155px' : (topOffset + 155) + 'px';
  }
}

다른 팁

특정 클래스 이름으로 절대 위치에 있는 모든 요소에 태그를 지정하고 getElementsByClassName ~에 대부분의 브라우저.그 외에는 루핑이 유일한 옵션입니다.

JQuery 기반의 Phoenix 솔루션:

var nodes = document.getElementsByTagName("*");
node.foreach(function(n){ // can use foreach since this is FF only
    if(n.style.position=="absolute"){
        n.style.top += parseInt(n.style.top || 0, 10) +"px";
    }
}

CSS 문이 있습니다 position: fixed - 그게 당신이 원하는 대로 될 수도 있겠네요...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top