سؤال

على نحو فعال ما يجب أن أقوم به في 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 في معظم المتصفحات. وبعد بخلاف ذلك، الحلقات هو الخيار الوحيد.

حلول فينيكس un 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