[HTML/CSS]Problème de positionment avec IE, trou de 1px

Problème de positionment avec IE, trou de 1px [HTML/CSS] - HTML/CSS - Programmation

Marsh Posté le 14-02-2006 à 15:32:03    

Salut,
J'ai maintes fois rencontré des problèmes par le passé, et j'avais posté sur ce forum, mais personne n'avait pu m'aider.
 J'ia finalement réussi à isoler mon problème de manière extrêmement claire.
 
En fait, il se trouve qu'IE a du mal à positioner de manière précise et absolue un élément par rapport à un autre élément, lorsque la taille de l'élément parent est impaire. Bref, peu importe les détails, regardez cet exemple pour vous en convaincre:
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
 <title>Test!</title>
</head>
<body>
 <div style="position: relative; background-color: #ff0; width: 50%; font-size: 1%; height: 30px; border: 2px solid #00f;">
  <div style="position: absolute; height: 100%; font-size: 1%; width: 2px;; top: 0; right: 0; background-color: #f00;"></div>
 </div>
</body>
</html>


 
Essayez sous IE, en redimensionnant votre fenêtre et vous verrez qu'il y aura par moment un trou de 1px entre l'élément postionné en absolu en rouge sur la droite du conteneur jaune et la bordure noire de ce même élement jaune.
 
Bref, je suis assez content d'avoir pu isoler ce problème, et je comprends mieux pourquoi j'avais tant de mal avec certains de mes éléments.
 
Auriez vous une idée pour savoir comment je pourrais éviter ce problème, c'est à dire pouvoir caler de manière précise mon élément rouge par rapport à la droite de mon élément jaune. (le but étant de faire une bordure arrondie, mais peu importe)
 
Merci.


Message édité par Yoyo@ le 14-02-2006 à 15:34:26
Reply

Marsh Posté le 14-02-2006 à 15:32:03   

Reply

Marsh Posté le 14-02-2006 à 16:16:30    

comme ca ca marche !! :D  
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html>
  3. <head>
  4. <title>Test!</title>
  5. </head>
  6. <body>
  7. <div style="position: relative; background-color: #ff0; width: 50%; font-size: 1%; height: 30px; border: 2px solid #00f;">
  8.   <div style="position: absolute; height: 100%; font-size: 1%; width: 2px;; top: 0px; right: -1px; background-color: #f00;"></div>
  9. </div>
  10. </body>
  11. </html>


 
Va falloir faire comme j'ai fait pour mon pb d'image, detecter le navigateur et et changer le parametre right en javascrit  :fou:


Message édité par nlc le 14-02-2006 à 16:16:49
Reply

Marsh Posté le 14-02-2006 à 16:19:59    

Strictement impossible, car la largeur n'est pas fixe... Donc, si la largeur du div parent est paire, alors IE semble ne pas créer de décalage, alors que si elle est impaire, le décalage est créé... Mais je ne connais pas cette largeur...

Reply

Marsh Posté le 14-02-2006 à 16:46:03    

On doit pouvoir la recuperer en javascript en donnant un nom au div et en recuperant le parametre adequat de l'objet.
En gros faut recuperer l'evenement du redimensionnement de la fenetre, recuperer la largeur du div (si on peut) et regler le right a 0 ou -1.
 
C'est ce que je disais dans mon autre post : on passe notre temps a essayer de resoudre un probleme qui n'existerait pas si IE respectait un peu les standards. C'est lassant. :(
 

Reply

Marsh Posté le 14-02-2006 à 18:13:03    

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  2.   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Test!</title>
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. #boite1{
  9.     position: relative;
  10.     background-color: #ff0;
  11.     width: 455px;
  12.     font-size: 1px;
  13.     height: 61px;
  14.     border: 2px solid #00f;
  15. }
  16. #boite2{
  17.     position: absolute;
  18.     height: 30px;
  19.     font-size: 1px;
  20.     width: 30px;
  21.     bottom: 0;
  22.     right: 0;
  23.     background-color: #f00;
  24. }
  25. /*]]>*/
  26. </style>
  27. </head>
  28. <body>
  29. <div id="boite1"><div id="boite2"></div></div>
  30. </body>
  31. </html>


 
même pour le vertical ca passe pas non plus
j'ai déjà eu ce problème en voulant mettre des corners

Reply

Marsh Posté le 14-02-2006 à 18:18:01    

Vivement le css3 qui permettra de mettre des corners proprement sans rajouter pleins de div partout du moins dans les navigateurs qui le géreront comme il faut.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed