Javascript для изменения всех абсолютно позиционированных элементов

StackOverflow https://stackoverflow.com/questions/1287066

Вопрос

Фактически, что мне нужно сделать в 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 в большинство браузеров.Кроме этого, единственным вариантом является зацикливание.

решение phoenix без jQuery-ifed:

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