Détecter la largeur d'un div pour l'attribuer à un autre div

Résolu
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   -  
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je bute sur un problème qui nécessite du javascript, enfin....je pense!

J'ai concrètement un container comprenant:
- 1 image
- 1 div "hover" faisant l'intégralité de la largeur de la page
- 1 div "légende"

Comme ceci:
<div class='container' style="margin:auto;right:0;left:0;">
	<img src="" />
	<div id="hover" style='width:100%'></div>
	<div class=''legende"></div>
</div>


Mon problème est que je voudrai que la div "legende" ait la même largeur que l'image mais comme la div "hover" fait 100%, je n'y parviens pas.

En cherchant un peu partout, je me suis rendu compte que javascript permet de détecter la largeur d'un div comme ceci:

<script type="text/javascript">
function TestHauteur(){
document.getElementById('header').style.width;
}
</script>


Du coup, une fois récupéré, comment faire pour attribuer la valeur de width à ma div "legende"?
A voir également:

6 réponses

Utilisateur anonyme
 
Salut !

Faudrait que tu nous fasse un schéma rapide pour nous indiquer les emplacements, tailles, noms, etc... des divs en question. Ca se trouve pas besoin de js mais de css...

Sinon au niveau du js :
<script type="text/javascript">
    var width_header = document.getElementById('header').style.width;
    document.getElementById('legende').style.width = width_header + 'px';
</script>
0
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci de ton retour! Voilà un schémas plus complet:

<div class='container' style="margin:auto;right:0;left:0;">
         <!-- l'image s'adapte à la taille de l'écran -->
	<img id="current_picture" src="" style="max-width:100%" />
	<div id="hover" style='width:100%'></div>
        <!-- la div a par défaut une largeur de 100% qui est héritée du container -->
	<div class=''legende"></div>
</div>


L'idée est de modifié la largeur de la div "legende" au chargement de la page en reprenant la largeur de l'image "current_picture"

Donc, si je reprends ton code:

var width_header = document.getElementById("current_picture").style.width;
    document.getElementById("legende").style.width = width_header + 'px';


ps: message rédigé de la main droite avec un bébé dans le bras gauche pour cause de femme partie aux soldes!!!
0
Utilisateur anonyme
 
Si l'image a une largeur de 100% et que ta div 'legende' doit être de la même taille que l'image, ta div 'legende' doit faire 100% non ??

Et je ne sais pas si c'est normal, mais il y a deux single quotes à gauche de 'legende'.
0
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 
Désolé pour le single quote, j'ai fait l'erreur en recopiant le code.

Oui, si l'image fait 100% de large (image horizontale), par défaut la div "legende" fait 100% ce qui est bon.

Par contre, dans le cas d'une image verticale, elle ne prendra pas 100% de la largeur alors que la légende oui, ce que je veux corriger. :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 
Oui, mais si j'avais pu résoudre le problème avec du css, je te garantis que je l'aurai fait!

Néanmoins, j'ai finalement réussi avec le script suivant:

var img = document.getElementById("ID_PHOTO");
var obj = document.getElementById("ID_LEGENDE");
obj.style.width = img.width + "px";
obj.style.margin = "auto";
0
Utilisateur anonyme
 
Mais si l'image est plus petite que la hauteur et la largeur du navigateur, il va falloir centrer tout le truc ( img et legende ).

En tout cas, il y a moyen de faire ça proprement en css, avec une bonne réflexion sur papier pour définir les couches et une utilisation efficace des "position: relative" et "position: absolute;".

-1