Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Bonjour,
Je cherche depuis un petit moment comment redimensionner la largeur d'une div pour qu'elle s'aligne sur la largeur d'un autre div, qui est au-dessus d'elle à l'affichage.
L'affichage suivant :
+----+-----------------+
+logo+ +
+----+-----------------+
+ nav + +
+------+---------------+
doit devenir cela :
+------+---------------+
+ logo + +
+------+---------------+
+ nav + +
+------+---------------+
Le code javascript est :
var postformatting = function()
{
var logo = document.getElementById('logo') ;
var nav = document.getElementById('nav') ;
if(nav.offsetWidth > logo.offsetWidth)
logo.style.width = nav.offsetWidth ;
else if(nav.offsetWidth < logo.offsetWidth)
nav.style.width = logo.offsetWidth ;
}
J'ai déjà essayé d'assigner la valeur de l'offset à l'autre offset (mais la propriété est en lecture seule), et j'ai essayé d'affecter la valeur à l'attribut width de l'élément.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Cosmétique ? :) Si tu as d'autres solutions en CSS, je suis preneur. Je n'utilise le javascript que pour les aspect cosmétiques et l'ergonomie avancée.
Je dis juste ça comme cela ! Cela dépend de l'avi de chacun ! Mais je pense tout de même qu'il est préférable de faire en sorte qu'un visiteur refusant le javascript doit pouvoir naviguer sans aucun souci sur le site. Le js n'est là que pour le confort !
Par exemple, la vérification de formulaire ne se fait pas coté client mais coté serveur ! Vérifier les formulaires en javascript n'est pas terrible.
Et pourtant, on voit cela de plus en plus. Le fameu => formulaire.submit() ! Je trouve ça honteu !!! Le visiteur refusant le javascript ne peut même pas valider le formulaire !!!!
Ah! J'ai passé mon cou de gueulle ! Sa va mieu tout d'un cou !!!
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Mais on est entièrement d'accord. Tu remarqueras que le javascript que je proposais ne fait qu'améliorer la mise en page.
Jamais un javascript ne sera contraignant.
D'ailleurs, comme tu peux le voir dans mon petit doc sur les regex, j'ai fais en sorte que l'exemple de validation de courriel se fasse quoiqu'il arrive du côté serveur. Mais du côté client, on peut améliorer l'ergonomie en rajoutant quelque javascript. Ça ne mange pas de pain.
Cette fonction retourne l'object direct de la balise souhaité à partir de son nom (name)
function getElt (eltID) {
if (document.layers) return document.layers[eltID+'C'].document.layers[eltID];
if (document.getElementById) return document.getElementById(eltID);
if (document.all) return document.all[eltID];
if (document[eltID+'C']) return document[eltID+'C'].document[eltID];
alert('Rien ne marche avec ce navigateur');
return false;
}
Cette fonction permet de cacher une balise grace à un parametre => le nom de la balise. Elle fait appel à la première fonction pour récupérer l'object de la balise.
function hideElt (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = 'none';
}
Idem mais pour faire apparaitre la balise:
function showElt (eltID,disp) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
myelt.display = disp;
}
Permet de tester si la balise est caché ou non. Elle utilise comme paramètre toujours le nom de la balise (name="le_nom") et fait appel aussi à la toute première fonction afin de récupérer l'object.
function isHide (eltID) {
var myelt = getElt(eltID);
if (myelt.style) myelt = myelt.style;
return myelt.display == 'none' ? true : false;
}
Cette fonction réuni les trois dernières. A chaque appel, elle affiche ou bien cache à tour de role le div. Elle fait donc appel à toute les autres fonctions et ne demande qu'un seul paramètre le même (name).
function switchElt (eltID,disp) {
if (isHide(eltID)) showElt(eltID,disp);
else hideElt(eltID);
}
Cette fonction déplace le div. Elle à besoin de trois parametres: le "name" de la balise, et les coordonnées sur X et Y !!! Elle fait appel tjrs à la toute première fonction afin de de récupérer l'object du div