IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Obtenir le style CSS d'un objet


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut Obtenir le style CSS d'un objet
    Salut!

    Je cherche le moyen d'afficher à l'écran (avec alert), le style d'un objet dont les propriétés sont définies avec CSS... Dans le code suivant, le 1er div possède un style défini directement dans sa balise et là, aucun problème pour obtenir ses propriétés. Dans le 2ème div, il n'ya aucun style défini dans la balise, seulement le style CSS est bien appliqué à l'objet. Malgré tout, impossible d'obtenir l'affichage de ses propriétés...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <html> 
    <head>
    <style>
    div { background-color:white;border:11px solid red; }
    </style>
    </head>
     
    <body>
    <div id="d1" style="border:10px solid lime;">1</div>
    <div id="d2">2</div>
     
    <script type="text/javascript">
    <!--
      alert(document.getElementById('d1').style.border);
      alert(document.getElementById('d2').style.border);
    //-->
    </script>
     
    </body>
    </html>
    [EDIT]
    J'ai essayé avec getAttribute(), mais la valeur renvoyé est une chaine vide...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      alert(document.getElementById('d2').style.getAttribute('border',''));
    Merci d'avance pour votre aide.
    De retour parmis vous après 10 ans!!

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    salut

    pour Ffx:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur=window.getComputedStyle(élément_cible, pseudo_élément css ou null).propriété_recherchée;
    pour IE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur=élément_cible.currentStyle.propriété_recherchée;

    fastidieux, isn't it?

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    De retour parmis vous après 10 ans!!

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!
    Citation Envoyé par javatwister
    fastidieux, isn't it?
    En effet !!

    Dans mon programme, j'ai besoin de savoir si le webmaster a définit ou non un style CSS pour un type d'objet (TD & TABLE). Le problème avec currentStyle, c'est qu'il me retourne les valeurs par défaut si le style n'est pas définit... Il me retourne également les valeurs du style défini directement dans les balises, mais ça ne me dérange pas trop car là je sais comment le détecter. Par contre, comment faire pour savoir ce qu'il ya entre les balises <style> et </style> sans le confondre avec les valeurs par défaut ?

    En résumé, que je ne mette rien dans les balises <style></style>, ou que je déclare un style, je n'arrive pas à savoir si le webmaster à définit un style ou non pour ce type d'objet...

    Autre question : Existe-t-il un moyen d'obtenir la valeur en pixel des épaisseurs thin, medium et thick svp ?

    Merci d'avance pour votre aide.
    De retour parmis vous après 10 ans!!

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Apparemment, j'ai trouvé une solution qui fonctionne mais je ne vous raconte pas le bricolage que c'est !!
    Il s'agit de comparer chaque propriétés à celles de l'objet document.body (en admettant que cet objet me retourne bien les propriétés de style par défaut).

    Dans ce cas précis, j'ai besoin de savoir si la bordure d'un objet est celle par défaut ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function IsMyBorder(d){
      var def_b,def_s=null,db=document.body;
     
      if(d.currentStyle)
        def_b=d.currentStyle.borderLeftWidth+
          d.currentStyle.borderTopWidth+
          d.currentStyle.borderRightWidth+
          d.currentStyle.borderBottomWidth+
          d.currentStyle.borderStyle;
      else
        def_b=window.getComputedStyle(d,null).getPropertyValue('border-left-width')+
          window.getComputedStyle(d,null).getPropertyValue('border-top-width')+
          window.getComputedStyle(d,null).getPropertyValue('border-right-width')+
          window.getComputedStyle(d,null).getPropertyValue('border-bottom-width')+
          window.getComputedStyle(d,null).getPropertyValue('border-style');
     
      if(db.currentStyle)
        def_s=db.currentStyle.borderLeftWidth+
          db.currentStyle.borderTopWidth+
          db.currentStyle.borderRightWidth+
          db.currentStyle.borderBottomWidth+
          db.currentStyle.borderStyle;
      else
        def_s=window.getComputedStyle(db,null).getPropertyValue('border-left-width')+
          window.getComputedStyle(db,null).getPropertyValue('border-top-width')+
          window.getComputedStyle(db,null).getPropertyValue('border-right-width')+
          window.getComputedStyle(db,null).getPropertyValue('border-bottom-width')+
          window.getComputedStyle(db,null).getPropertyValue('border-style');
     
      return (def_b!=def_s);
    }
    Le hic c'est que document.body me retourne la couleur #000000 pour le cadre et que par défaut, la couleur du cadre est #cdcdcd...

    Entre nous, j'espère que vous avez une meilleure solution à me proposer...
    De retour parmis vous après 10 ans!!

Discussions similaires

  1. Attribuer une feuille de style CSS à un objet crée dynamiquement
    Par Sergejack dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/10/2007, 10h23
  2. Réponses: 17
    Dernier message: 04/04/2005, 17h50
  3. Conflit dans les styles CSS
    Par Nerva dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/03/2005, 22h56
  4. Comment appliquer un style CSS ?
    Par adameteve dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 10/03/2005, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo