28173 sujets

CSS et mise en forme, CSS3

Pages :
Bonjour à tous,

J'ai un doute, je ne me souviens pas qu'il y est une méthode pour centrer verticalement les puces d'une liste par rapport à la hauteur des éléments contenus dans la liste.

les miennes viennent se coller en bas.

exemple en image upload/319-pics.jpg

Une idée ?

Merci et bonne journée.
Modifié par ernstein (22 Oct 2007 - 12:26)
C'est juste une liste ordonnée.


<ol>
<li>élément 1</li>
<li>élément 2</li>
</ol>


Je ne crois pas que CSS permette de centrer verticalement la puce. Là est mon doute Smiley smile
Yep il me semble aussi,

Du coup je me demande si supprimer la puce niveau CSS et la réintégrer via :before aurait un sens Smiley smile
ernstein a écrit :
Du coup je me demande si supprimer la puce niveau CSS et la réintégrer via :before aurait un sens Smiley smile

Je vais peut-être dire une bêtise, mais il me semble que ça a du sens. Par contre, tu devras gérer indépendamment chaque numéro, non ?
Modifié par Julien Royer (18 Oct 2007 - 17:34)
C'est liste générée dynamiquement via un recordset, je pourrais donc publier le numéro de cette manière Smiley smile

et donc avoir un contenu classique à manipuler via CSS d'un coté et sémantique Sans CSS de l'autre.
ernstein a écrit :
et donc avoir un contenu classique à manipuler via CSS d'un coté et sémantique Sans CSS de l'autre.

D'un autre côté, ça va t'obliger à gérer le cas des navigateurs qui ne supportent pas :before.

Peut-être qu'il est plus simple (et plus robuste) d'utiliser une liste <ul> avec les numéros en dur dans le HTML ?
Modifié par Julien Royer (18 Oct 2007 - 17:42)
+1 pour la solution de Julien, lorsque l'on atteint certaines limitations techniques, il peut être de bon ton d'oublier un tantinet cette soi-disant sémantique optimale. Smiley cligne

Pour le geste, tout de même, tu pourras rechercher une solution dans la voie des listes ordonnées générées par un compteur.
Modifié par Benjamin D.C. (18 Oct 2007 - 23:11)
ernstein a écrit :
Promis demain, je me remet dessus Smiley smile

Bon, j'ai pas pu m'en empêcher, le petit "défi" me turlupinait trop… Smiley ravi


[#black][b]XHTML[/b][/#]

<ol>
	<li>
		<img src="image.png" alt="" />
		<em>Avec le vent</em>		
	</li>
	<li>
		<img src="image.png" alt="" />
		<em>Le Pingouin</em>		
	</li>
	<li>
		<img src="image.png" alt="" />
		<em>Titre musical…</em>		
	</li>
</ol>



[#black][b]CSS[/b][/#]

ol {list-style:none; counter-reset:playlistOrder;}
li:before {content:counter(playlistOrder); counter-increment:playlistOrder;}
li {padding:1em 0;}
li * {vertical-align:middle; margin-left:15px;}
Hello hello,


J'ai un doute sur le bout de code CSS..

playlistOrder c'est quoi ?
Modifié par ernstein (22 Oct 2007 - 10:35)
Et sinon, ça vous dit une solution simple et pas prise de tête, hum?

<!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>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Test</title>
	<style type="text/css">
	li img {vertical-align: middle; margin: 4px;}
	</style>
</head>
<body>
<ol>
	<li>
		<img src="image.png" alt="" />
		<em>Avec le vent</em>
	</li>
	<li>
		<img src="image.png" alt="" />
		<em>Le Pingouin</em>
	</li>
	<li>
		<img src="image.png" alt="" />
		<em>Titre musical…</em>
	</li>
</ol>
</body>
</html>

Une ligne de CSS, qui dit mieux?

Ceci dit, si on doit avoir plusieurs lignes de texte après l'image (ou si on risque de...), il sera peut-être nécessaire de faire un tableau à deux cellules, par exemple.
Ben en fait pour le coup les données présentes dans les <li> sont effectivement dans des petit tableaux car ça se justifie.

Donc pour l'image est les textes y'a pas de souci.
Mais pour cette valeur playlistOrder, dis moi c'est le contenu d'une variable, c'est quoi, je suis un peu perdu, j'ai jamais vu ce genre de code, j'ai regardé la spécification , ais ça ne me semble pas clair Smiley decu , enfin en fait je ne comprends pas Smiley smile
playlistOrder est un identifiant. Ça aurait pu être "choucroute" ou "panierGarni".

Un exemple rapide:
<!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>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Test</title>
	<style type="text/css">
	ol#test {list-style: none; counter-reset: choucroute;}
	ol#test li {counter-increment: choucroute 4;}
	ol#test li:before {content: counter(choucroute) ")";}
	</style>
</head>
<body>
<ol id="test">
	<li>
		<em>Avec le vent</em>
	</li>
	<li>
		<em>Le Pingouin</em>
	</li>
	<li>
		<em>Titre musical…</em>
	</li>
</ol>
</body>
</html>


Explications pour le CSS:

ol#test {counter-reset: choucroute;}
À chaque occurence d'un élément ol ayant pour identifiant "test" (normalement, une seule occurrence par document), le compteur nommé "choucroute" est remis à zéro.

ol#test li {counter-increment: choucroute 4;}
À chaque occurrence d'un li descendant d'ol#test, le compteur nommé "choucroute" est incrémenté de 4.

ol#test li:before {content: counter(choucroute) ")";}
Pour chaque li descendant d'ol#test, on génère un contenu avant qui utilise notamment la valeur courante du compteur "choucroute".

On notera qu'on n'a pas eu besoin de déclarer le compter "choucroute" nulle part dans le CSS: on l'a directement mis à zéro, incrémenté, utilisé.
Modifié par Florent V. (22 Oct 2007 - 11:30)
Florent V. a écrit :
Et sinon, ça vous dit une solution simple et pas prise de tête, hum?

Ouais mais non, c'est pas drôle ça! Smiley biggol

Bon on va dire que ma solution a au moins eu le mérite de faire découvrir les compteurs à notre ami (on se rattrape comme on peut Smiley ravi ).
C'est vrai !

@Raphaël : Il ne me semble pas qu'il en soit fait mention dans CSS2 Pratique du design web.

à moins que pour la 3éme edition Smiley smile

Enfin merci à vous.
Pages :