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 :

Définir une règle Css avec Javascript


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Points : 5 443
    Points
    5 443
    Par défaut Définir une règle Css avec Javascript
    Bonjour, je suis au tout début de la découverte de javascript et je viens vers vous pour trouver des réponses.
    J'ai cru que je n'aurais pas besoin de javascript jusqu'à ce que les Css (que je maitrise) atteignent leurs limites. Je n'aurais jamais cru que je me lancerais sur l'apprentissage de ce langage car je ne m'en sentais vraiment pas capable.
    J'ai donc suivi la formation lumineuse de M.Mouronval (javascript) sur Video2Brain et je suis actuellement sur un livre d'apprentissage des bases.

    Pardonnez mes questions trop triviales mais je ne parviens pas à m'en sortir.
    Je cherche à définir une propriété css via javascript.

    En fait je souhaiterais que ma valeur du margin-top de ma balise id=nav soit celle d'une hauteur ou largeur de div quelconque.
    J'ose vous présentez ce que j'ai déjà fait...
    je souhaiterais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('nav').style.marginTop = document.getElementById('lambda').style.Height
    J'ai pensé utiliser inserRule mais je coince quand je veux paramétrer margin-top dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insertRule('#nav{margin-top: '+i+';}', 0);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var i= document.getElementById('lambda').style.Height
    J'ai pas mal ratissé la toile avant de poster ce message...
    Suis-je sur le bonne voie?

    Merci pour vos réponses éclairées.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour

    document.getElementById('lambda').style.Height
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('lambda').style.height
    et insertRule est une méthode qui devrait être appelé à partir du styleSheet cible.

    A+.

  3. #3
    Expert confirmé
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Points : 5 443
    Points
    5 443
    Par défaut
    Merci pour la réponse, j'avais fait une erreur pour la majuscule du height en recopiant le code pour le message.

    Mais mon problème provient du paramétrage de margin-top dans insertRule

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonsoir,
    tu ne peux avoir accès à objet.style.height que si le style est inline, déclaré dans la balise, ou si tu l'as déjà affectée via javascript.
    Si celle ci est déclarée dans la partie style du document il te faut passer par un getComputedStyle, ou encore currentStyle pour IE<9.

    Concernant l'utilisation de la méthode insertRule il faut l'appliquer sur un styleSheet object, comme te l'a indiqué andry.aime.

    Donc la syntaxe sera du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oSheet.insertRule('#nav{margin-top:' +hauteur +';}', 0);

  5. #5
    Expert confirmé
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Points : 5 443
    Points
    5 443
    Par défaut
    Height est déclaré pour la balise image (id="apple") en question

    voici la portion de code qui ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var u = document.images.apple.height;
    document.styleSheets[0].insertRule('#nav{margin-top: '+u+';}', 0);
    J'ai déjà essayé avec getComputedStyle....
    C'est: ' +hauteur +' qui ne veut pas fonctionner.
    J'espère que je ne pose pas de questions redondantes.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    pour récupérer la hauteur à coup sûr il est suffisant de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var hauteur = document.getElementById('lambda').offsetHeight;
    et pour l'affecter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('nav').style.marginTop = hauteur +'px'; // IMPORTANT NE PAS OMETTRE L'UNITE

  7. #7
    Expert confirmé
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Points : 5 443
    Points
    5 443
    Par défaut
    Merci NoSmoking;

    C'est parfaitement ce que je cherchais.

    Bravo!
    Bonne soirée.

    PS:je ne sais pas si on peut marquer le message comme résolu.

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585

  9. #9
    Expert confirmé
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Points : 5 443
    Points
    5 443
    Par défaut
    Vous êtes efficace sur ce forum:
    première visite réussie...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affectation d'une règle CSS externe avec javascript
    Par DexterV dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/04/2010, 17h46
  2. Eviter le scintillement lors de manip css avec javascript...
    Par MasterOfChakhaL dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/04/2006, 20h11
  3. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/02/2006, 14h50
  4. une "division flottante" avec javascript
    Par maniaco_jazz dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2005, 11h32
  5. Définir une appli JEE avec JB7 Entreprise
    Par polo54 dans le forum JBuilder
    Réponses: 4
    Dernier message: 10/06/2003, 11h48

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