10
votes

Valeurs de CSS héritées via JavaScript

sur ma page Je change des styles CSS via JavaScript. Lorsque j'essaie de tirer une valeur héritée - il arrive en blanc. Considérez les éléments suivants:

<div class="Sliding" id="FilterBox">
        <h3>Test Form</h3>
        This is a test/<br />
        12345
</div>


1 commentaires

Merci tout le monde. L'utilisation de GeComp dépendant est aidé à résoudre mon problème. Je prends que getElementyid (). Style est juste utilisé pour les paramètres de style individuels - pas ceux définis par une classe ou une carte d'identité.


4 Réponses :



12
votes

Vous voudrez utiliser getcomputedstyle .

Le .style est un moyen d'accéder à un style en ligne et de réglage (c'est-à-dire comme l'attribut de style).

Note, cependant, que votre exemple n'a rien à faire avec héritage. Juste des règles qui s'appliquent directement aux éléments qui vous intéressent. L'héritage est quand un élément prend le même style que son parent via le mot clé hériter xxx

getcomputedstyle donnera la valeur calculée finale cependant, de sorte qu'il récupérera également les valeurs héritées.


3 commentaires

getcomputedstyle () ne fonctionne pas dans tous les navigateurs populaires (sans nommer)


Vous pouvez maintenant utiliser en toute sécurité getcomputedstyle Caniuse.com/#feat=getComputeDstyle


Connexes: Pourquoi GestCompuTeDstyle ne revient pas à l'affichage: Aucun pour un élément caché par un parent?



2
votes

Votre deuxième règle CSS:

.Sliding #FilterBox
{
    height: 185px;
    background-color: Fuchsia;
}


2 commentaires

Bien sûr, mais vous pouvez le pointer un million de fois vers le style calculé, mais si le CSS est incorrect, c'est une perte de temps


Étant donné que la deuxième règle ne touche pas la propriété d'affichage, elle n'aurait aucun impact s'il était écrit pour s'appliquer à cet élément.



1
votes
if (!window.getComputedStyle) 
{
    window.getComputedStyle = function(el, pseudo) 
    {
        this.el = el;
        this.getPropertyValue = function(prop) {

        var re = /(\-([a-z]){1})/g;
        if (prop == 'float') 
            prop = 'styleFloat';
        if (re.test(prop)) 
        {
            prop = prop.replace(re, function () {

            return arguments[2].toUpperCase();
           });
        }

        return el.currentStyle[prop] ? el.currentStyle[prop] : null;
      }

      return this;
   }
}

function GetCompStyle()
{   
    var compStyle = window.getComputedStyle(document.getElementById('FilterBox'), "");
    alert(compStyle.getPropertyValue("display"));   
}

0 commentaires