الحصول على عنصر نمط أنماط العنصر في جافا سكريبت

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

  •  23-08-2019
  •  | 
  •  

سؤال

لقد كنت تستخدم جون ريسج getStyle وظيفة من تقنيات جافا سكريبت برو للحصول على أسلوب العناصر:

function getStyle(elem, name) {
    // J/S Pro Techniques p136
    if (elem.style[name]) {
        return elem.style[name];
    } else if (elem.currentStyle) {
        return elem.currentStyle[name];
    }
    else if (document.defaultView && document.defaultView.getComputedStyle) {
        name = name.replace(/([A-Z])/g, "-$1");
        name = name.toLowerCase();
        s = document.defaultView.getComputedStyle(elem, "");
        return s && s.getPropertyValue(name);
    } else {
        return null;
    }
}

ومع ذلك، ترجع هذه الطريقة الأنماط الافتراضية لعنصر إذا لم يتم تحديد أي نمط:

http://johnboxall.github.com/test/getstyle.html.

النص البديل http://img.skitch.com/20081227-8QHXIE51PY21YXUQ7SCY32635A.png.

هل من الممكن الحصول على أنماط StyleSheet فقط من عنصر (وإرجاع NULL إذا كان النمط غير محدد)؟

تحديث:

لماذا أحتاج إلى مثل هذا الوحش؟ أنا أقوم ببناء مكون صغير يسمح للمستخدمين بالعناصر النمط. واحدة من الأساليب التي يمكن تطبيقها هي text-align - left, center, right - استخدام getStyle عناصر غير مؤلمة الافتراضي ل center. وبعد هذا يجعل من المستحيل معرفة ما إذا كان العنصر يتركز لأن المستخدم يريد أن يتركز أو يتركز لأن هذا هو النمط الافتراضي.

هل كانت مفيدة؟

المحلول

هل من الممكن الحصول على أنماط StyleSheet فقط من عنصر (وإرجاع NULL إذا كان النمط غير محدد)؟

هذا بفعالية ما يتم ذلك بواسطة الروتين الذي تقدمه. المشكلة هي، في معظم السيناريوهات، معظم الأساليب ليس غير محدد - إنهم موروثة و / أو تعريفها بواسطة ورقة الأنماط الداخلية للمتصفح الفردي.

يمكنك، مع الكثير من الجهد، تكرر الكل من القواعد التي تحدد النمط المعني، في الكل من الأرقام "الأرقام" في العرض الحالي للمستند، قم بتقييمها للعنصر المعني، وإذا لم يطبق أي شيء ... وإذا لم يكن أي منها مطبق على أحد الوالدين (أو هذا النمط بالذات غير موروث) ... ثم اعتبره غير محدد. هذا سيكون بطيئا، و بشكل لا يصدق معرض للخطأ. لن أوصي بمحاولة ذلك.

ربما كنت تفعل أفضل للتراجع واسأل لماذا كنت بحاجة إلى مثل هذا الشيء؟

نصائح أخرى

هل يمكن أن يفول مكونك الأنماط التي تتحكم فيها؟ ثم عند تعيين نمط من خلال المكون، يعرف المكون ما يريده المستخدم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top