28172 sujets

CSS et mise en forme, CSS3

Hello!

J'ai un problème très simple mais très compliqué! Smiley lol

Le but est tout simplement d'afficher un div quand on clique sur un lien.

Voici le source:
css

#panel{
  font-size: 12px;
  background-color: #eee;
}
.ligne{
  width: 600px;		
  position: relative;
}
.erreur{
  display: none;
  position: relative;
}

javascript

function display(){
  document.getElementById('lig2').style.display = 'block';
}

html

<div id="panel">
  <div id="lig1" class="ligne">ligne 1</div>
  <div id="lig2" class="erreur">erreur</div>
  <div id="lig3" class="ligne">ligne 3</div>
  <div id="lig4" class="ligne"><a href="javascript:display();">clic!</a></div>
</div>


Voilà, ca casse pas 3 pattes à un canard!

Normalement, quand je clique sur 'clic!' le texte 'erreur' apparait sous 'ligne 1' et 'ligne 3' se décale vers le bas.
Avec FF, ça marche bien.
Avec IE7, ça marche pas: le texte 'erreur' chevauche 'ligne 3'.

Ce qui me stupéfait, c'est que si je supprime background-color ou width dans le css, ça remarche!
Par ailleurs, si je mets display: block en dur dans le css, ça marche aussi.

Est-ce que quelqu'un pourrait éclairer ma lanterne sur le pourquoi du comment svp?

Merci d'avance.
Merci pour ta réponse.
Effectivement, j'avais aussi remarqué qu'en enlevant relative, ça marche.

Mais:
1- Je comprend pas pourquoi...
2- J'ai montré ici un cas simpliste mais dans la réalité, j'ai besoin de 'relative' car j'ai d'autres div positionnés à l'intérieur.

D'ailleurs, si je ne m'abuse, 'relative' est la valeur par défaut.
Donc, c'est encore + bizarroïde Smiley biggol ...
baubbelayponge a écrit :
Enlève position:relative.