28173 sujets

CSS et mise en forme, CSS3

Bonjour tout le monde.

J'ai un bug étrange avec Opera 9.10. Pour remplacer text-overflow qui n'est pas encore implémenté je joues sur la visibilité de mes liens, le code vaut mieux qu'un long discours donc ( je vous la page complète car je n'ai pas d'exemple en ligne ) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>CNeo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
div, ul, li, a {margin:0; padding:0; list-style-type: none;}
body {margin:0; background-color: #f0ffe0;}
a {color: #228b22; text-decoration: none; font-weight: bold;}
a:hover {color: #0000bb;}
#menu {position: absolute; top: 20px; left: 5px; width: 150px; padding: 5px; background-color: #ffffff; border: 1px solid #00b440; -moz-border-radius: 15px; border-radius: 15px;}
#menu a {display: list-item; white-space: nowrap; width: 150px; overflow: hidden;}
#menu a:hover {overflow: visible;}
#content {margin: 20px 10px 20px 172px; padding: 5px; text-align: justify; background-color: #ffffff; border: 1px solid #00b440; -moz-border-radius: 15px; border-radius: 15px;}
-->
</style>
</head>
<body>
<div id="menu">
<ul>
 <li><a href="">blabla blabla blabla blabla</a></li>
 <li><a href="">blabla</a></li>
 <li><a href="">blabla</a></li>
 <li><a href="">blabla</a></li>
 <li><a href="">blabla</a></li>
</ul>
</div>
<div id="content">
Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum, dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
</div>
</body>
</html>


Ce qui nous intéresse c'est le menu, si vous passez sur le 1er lien sous Opera vous verrez des barres de défilement s'afficher or normalement le contenu doit juste dépasser sur le corps ...

Le bug se produit-il chez vous ? Si oui, savez-vous pourquoi ?

Nota : toute critique de ce début de design ne concernant pas ce bug est également bienvenue bien sûr. Smiley smile

Edit : petite question supplémentaire : est-ce que je devrait mettre le "overflow: visible" également sur le "a:focus" ou non ?

Merci d'avance.
Modifié par CNeo (03 Feb 2007 - 17:47)
Modérateur
bonjour,

sert toi du display:table; qui implique ton width comme un min-width et applique ce comportement au conteneur li.
garde le a:hover avec un position:relative; pour IE.

<style type="text/css">

<!--

div, ul, li, a {margin:0; padding:0; list-style-type: none;}

body {margin:0; background-color: #f0ffe0;}

a {color: #228b22; text-decoration: none; font-weight: bold;}

a:hover {color: #0000bb;}

#menu {position: absolute; top: 20px; left: 5px; width: 150px; padding: 5px; background-color: #ffffff; border: 1px solid 

#00b440; -moz-border-radius: 15px; border-radius: 15px;}

#menu a {display: list-item; white-space: nowrap;  }
#menu li {width: 150px;overflow: hidden;}

#menu li:hover {display:table;}
#menu a:hover {overflow: visible;position:relative;}/* IE */

#content {margin: 20px 10px 20px 172px; padding: 5px; text-align: justify; background-color: #ffffff; border: 1px solid 

#00b440; -moz-border-radius: 15px; border-radius: 15px;}

-->

</style>


ça passe dans ma version 9.02 de opera et IE6. tester sur le pouce ... Smiley smile

GC
En effet çà marche, merci. C'est quand même dommage qu'Opera réagisse comme çà à une propriété simple ...

Edit : pour ceux qui en aurait besoin un jour, le "position: relative" doit être appliqué uniquement à IE car il crée un bug sous Firefox 2.
Modifié par CNeo (03 Feb 2007 - 18:10)