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 :

Récupérer la width d'une table pour définir max-width sur éléments suivants


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    725
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 725
    Par défaut Récupérer la width d'une table pour définir max-width sur éléments suivants
    Bonjour,

    J'ai une table dont la largeur dépend du contenu.

    Je veux récupérer la width effective de la table et l'affecter comme valeur max-width à certains éléments plus bas dans la page.

    Chose infaisable en CSS, sauf trucs tordus.

    Je me dis qu'une minuscvule fonction javascript peut faire l'affaire mais à vrai dire je connais très mal javascript.

    Pouvez-vous m'orienter vers une bonne source ou peut-être me donner les deux lignes de code ?

    Merci d'avance.

  2. #2
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    Bonjour,

    Pour récupérer une propriété css en JQuery par exemple, avec cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var width = $(element).css("width")
    Puis pour ajouter un style à un élément c'est la même méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(element).css("max-width", width)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    725
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 725
    Par défaut
    Merci beaucoup.

    Je profite du week-end allongé pour mes tests, je te tiens au courant.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    725
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 725
    Par défaut
    Bonjour,

    J'ai ajouté dans le HEAD de ma page html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript">
    <!--
    var width = $(table.compcab).css("width")
    $(ul.bul).css("max-width", width)
    //-->
    </script>
    Tu devines que l'élément dont je veut le width est <tabla class="compcab"> pour l'appliquer à <ul class="bul">

    Ca ne donne rien du tout...

    Qu'en penses-tu ?

  5. #5
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,
    je suis débutant en JS, mais j'ai eu un besoin semblable :
    HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <body>
    	<div id="DivCanvas">
    		<!-- <canvas id="canvas" width=”800” height=”600”></canvas> En fait canvas est créé en javascript dans Astro.js sinon PB proportions -->
    		<img src="./images/doudou.bmp" id="doudou"/>
    	</div>
     
    	<div id="AutreDivFlotant">
    		<p>Le Div s'élargie au fur et à messure qu'on ajoute du texte...</p>
    		<textarea id="textarea" name="Message"></textarea>
    	</div>
    </body>
    CSS :
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #DivCanvas {
    	width: 800px;
    	height: 800px;
    }
    #AutreDivFlotant {
    	position: fixed; top: 2px; right: 4px;
    	float: right;
    	width: auto;
    	height: 800px;
    	border: 1px solid blue;
    }
    canvas {
    	border: 1px solid black;
    	background-color: #FCFAE1;
    }

    JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var DivFloat = document.getElementById('AutreDivFlotant');
    var WidthDivFloat = document.getElementById('AutreDivFlotant').offsetWidth;
    alert ("WidthDivFloat="+ WidthDivFloat);
    DivFloat.setAttribute('width-max', WidthDivFloat);
    alert ("Taille du Div flottant="+ document.getElementById('AutreDivFlotant').offsetWidth );
    [EDIT 06:50] Et en largeur, le textarea ne va plus au delà de la longueur du texte

    On doit pouvoir faire la même chose sur le Width d'une table...
    Mais sous toutes réserves en attendant l'avis d'experts...

  6. #6
    Membre actif
    Homme Profil pro
    Futur développeur, étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Futur développeur, étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Par défaut
    Bonjour,

    Le code que t'a donné Rpass est du JQuery. Il faut donc importer la librairie si tu veux que ce code fonctionne.

    Ensuite, voici des morceaux de code :
    - Pour récupérer la width de ton objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var width = document.getElementByClass('compcab').style.width;
    Le getElementByClass n'est pas toujours bien vu, donc si c'est pour un exam, tu devrais ajouter un attribut id="compcab" à ton table, puis utilise getElementById('compcab') à la place de getElementByClass.

    -Pour définir le max-width d'un objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementByClass('bul').style.maxWidth = width;
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var bul = document.getElementByClass('bul');
    bul.style.maxWidth = width;
    ce qui te permet d'éviter de réécrire le long document.get...style... si tu as besoins de faire d'autres ajouts de style sur ce même objet.
    Ici encore, il serait mieux de mettre un id à ton ul afin de pouvoir utiliser le getElementById. Mais bon, ça c'est toi qui voit.

    J'espère avoir pu t'aider

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/07/2013, 08h23
  2. [Toutes versions] Récupérer les valeurs d'une table pour une autre table
    Par spacesheep dans le forum Access
    Réponses: 3
    Dernier message: 29/03/2013, 17h06
  3. Réponses: 11
    Dernier message: 22/06/2009, 09h58
  4. Réponses: 62
    Dernier message: 16/04/2009, 10h09
  5. Réponses: 2
    Dernier message: 18/02/2007, 21h30

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