28172 sujets

CSS et mise en forme, CSS3

Pages :
Salut Dge-06.

Je t'ai fait quelque chose de très basique.
Un ID sur le troisième LI de ta liste fera l'affaire !

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<title>Alignement</title>

<style>
* {
		margin				: 0;
		border				: 0 none;
		padding				: 0;
}

ul {
		background-color		: red;
		list-style-type			: none;
		width				: 648px;
		height				: 143px;
		margin				: 0 auto;
}

ul li {
		float				: left;
		border				: 1px solid red;
		width				: 160px;
		height				: 141px;
}

ul li a {
		display				: table-cell;
		width				: 160px;
		height				: 141px;
		text-align			: center;
		vertical-align			: middle;
}

ul li a#img {
		background			: url(image.png) no-repeat center center;
		width				: 160px;
		height				: 141px;
}

</style>
</head>

<body>
	<ul>
		<li><a href="#1">menu 1</a></li>
		<li><a href="#2">menu 2</a></li>
		<li><a href="#3" id="img"></a></li>
		<li><a href="#4">menu 4</a></li>
	</ul>
</body>
</html>

J'ai repris ton image et j'ai découpé celle qui m'intéressait. La voici :

http://i41.tinypic.com/2rh7l8y.png

J'espère que cela répond à ton attente.

@+
Modifié par tournikoti (07 Oct 2013 - 21:11)
Hello,

Juste en passant, sans regarder le fond, si c'est un logo, il aura préférablement sa place dans le HTML, avec l'alternative textuelle qui va bien Smiley cligne
tournikoti a écrit :

ul li a#img {
		background			: url(image.png) no-repeat center center;
		width				: 160px;
		height				: 141px;
}

Un logo ne devrait pas se trouver dans une feuille de style, mais dans le code html.

edit : grillé
Modifié par benj (07 Oct 2013 - 21:26)
Merci beaucoup pour votre aide, mais en fait, le logo doit être en format image et non en tant qu’arrière plan. L'internaute doit pouvoir cliquer dessus.

Alors j'ai peut-être trouvé une solution, pas très propre Smiley decu

Mettre tout simplement l'image dans un div qui se trouve entre 2 li

<ul class="menu">
<li>menu1</li>
<li>menu2</li>
<li><div="position_logo"><img src="logo.png"></div></li>
<li>menu3</li>
<li>menu4</li>
</ul>


Si quelqu'un a une solution plus propre, je suis preneur Smiley smile
Non, ce n'est pas terrible. Mieux vaut faire 2 liste dans ce cas.

En css, tu peux mettre une marge sur le lien ou tu veux insérer le logo (de la taille du logo).
Le logo sera lui être positionné en postion absolute.
Houais, je pensais aussi à faire 2 listes. Mais j'ai peur de perdre les sitelinks en référencement.
salut,
bin si ton logo est un lien en soi qui renverrait à la page d'accueil (comme cela se fait) tu peux garder la même structure avec une seule liste.

<nav>
	<ul>
		<li><a href="">Menu 1</a></li>
		<li><a href="">Menu 2</a></li>
		<li><a href=""><img src="logo.png" alt="Retour à la page d'accueil" /></a></li>
		<li><a href="">Menu 3</a></li>
		<li><a href="">Menu 4</a></li>
	</ul>
</nav>

Par exemple.
Bonjour à toutes et à tous.

@ Dge-06 : La question posée était :

Dge-06 a écrit :
Salut à tous, voilà je voudrais savoir si quelqu'un sait comment scinder en 2 un menu ul li avec une image ?

J'avais compris que tu désirais insérer une image dans une liste sachant que le reste est en texte.
Comme je n'avais pas d'autres explications, je me suis permis d'interpréter !
Je pense que j'ai répondu à cette question. Est-ce que tu as au moins testé cette solution ?

Dge-06 a écrit :
Merci beaucoup pour votre aide, mais en fait, le logo doit être en format image et non en tant qu’arrière plan. L'internaute doit pouvoir cliquer dessus.

Bien sûr que tu peux cliquer dessus, mais il faut savoir que la pseudo-classe active ne fonctionne pas avec une image.
Voici un lien qui donne une solution de ce genre de problème.
Tout ce que tu peux faire, avec les pseudo-classes, c'est le link, le hover et le visited.

La solution proposé par Zelalsan est tout à fait correcte, mais correspond à une image qui sera figée, c'est-à-dire sans l'usage des pseudo-classes.

@ 6L20 : je ne comprends pas le terme : "l'alternative textuelle qui va bien" ?

@ Benji : je ne comprends pas ta remarque :
"Benji" a écrit :
Un logo ne devrait pas se trouver dans une feuille de style, mais dans le code html.

Un logo, avant tout, est une image. En quoi est-ce une erreur de mettre une image en tant que background dans une liste ?

@ Tous : l'important est d'avoir un sujet de discussion. D'où ma proposition d'une solution, même si elle est imparfaite !

@+
Modifié par tournikoti (08 Oct 2013 - 20:05)
Bonsoir Benji.

Je viens de relire l'article de Raphaël et je comprends mieux ce que tu veux dire !
En fait, il y a une ambiguïté dans la demande formulé Dge-06.
Si l'image est porteuse d'une information pour la compréhension de la page HTML alors OUI, je suis d'accord pour quelle soit dans la partie déclarative (html).

Mais comme cette image participe à la fonctionnalité de la liste et que Dge-06 désire aussi cliquer dessus, en supposant qu'il désire utiliser les pseudo-classes, je pense qu'elle a sa place dans la partie présentation (css).

J'ai tendance à oublier que le site web ne s'adresse pas toujours à des personnes qui ont la pleine capacité de leurs sens (audition et vision).

@+
Modifié par tournikoti (08 Oct 2013 - 20:04)
Zelalsan a écrit :
salut,
bin si ton logo est un lien en soi qui renverrait à la page d'accueil (comme cela se fait) tu peux garder la même structure avec une seule liste.

&lt;nav&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;a href=&quot;&quot;&gt;Menu 1&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;&quot;&gt;Menu 2&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;&quot;&gt;&lt;img src=&quot;logo.png&quot; alt=&quot;Retour à la page d'accueil&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;&quot;&gt;Menu 3&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;&quot;&gt;Menu 4&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/nav&gt;

Par exemple.


J'y ai pensé, mais le logo est assez grand, il faut donc que je le mette dans une div afin de le remonter un peu. C'est pourquoi je pensais mettre un div dans le li, mais c'est pas top.


Mais j'ai trouvé un site qui fait exactement ce que je veux. Je crois que c'est un site de test. Je vais éplucher le code source de celui-ci pour voir comment c'est foutu.

http://finecookies.fr/
Le menu est ici placé en position absolute sous le logo.
C'est un peu la solution que je te proposait plus tôt (le logo en absolute sur le menu).
Bonjour,

tournikoti a écrit :
Bonsoir Benji.
Je viens de relire l'article de Raphaël et je comprends mieux ce que tu veux dire !
En fait, il y a une ambiguïté dans la demande formulé Dge-06.
Si l'image est porteuse d'une information pour la compréhension de la page HTML alors OUI, je suis d'accord pour quelle soit dans la partie déclarative (html).

C'est très souvent le cas d'un logo Smiley cligne
tournikoti a écrit :
Mais comme cette image participe à la fonctionnalité de la liste et que Dge-06 désire aussi cliquer dessus, en supposant qu'il désire utiliser les pseudo-classes, je pense qu'elle a sa place dans la partie présentation (css).

Pour les effets de styles et puisque l'image devra se trouver dans le HTML (puisque porteuse d'informations), on s'occupera de cela via JavaScript.
tournikoti a écrit :

J'ai tendance à oublier que le site web ne s'adresse pas toujours à des personnes qui ont la pleine capacité de leurs sens (audition et vision).
@+

Plus généralement, l'accessibilité concerne l'ensemble des internautes, comme le rappelle Raphaël dans son astuce :
a écrit :
les feuilles de style sont/peuvent être désactivées, ou lors d'un rendu sur un navigateur non graphique ou un média différent de l'écran (navigateur textuel, imprimante, plage braille, synthèse vocale, etc.), les images d'arrière-plan ne sont pas restituées, contrairement aux éléments <img> qui font partie intégrante du document. Seuls les éléments <img> ont un mécanisme permettant de les remplacer par leur alternative textuelle lorsqu'elles ne sont pas restituées (l'attribut alt).

La feuille de styles peut ne pas être servie par le serveur, et l'on perd alors une information importante si l'on passe par une image d'arrière plan, etc...
6l20 a écrit :
C'est très souvent le cas d'un logo Smiley cligne

Oui d'accord, mais comme je le dis, un logo, c'est aussi une image.

6l20 a écrit :
Pour les effets de styles et puisque l'image devra se trouver dans le HTML (puisque porteuse d'informations), on s'occupera de cela via JavaScript.

Quand je préconise une solution en JavaScript, la plupart du temps, on m'insulte avec des arguments du genre "et si on désactive JavaScript, plus rien ne fonctionne".

Je pense qu'il faut trouver un juste milieux entre l'usine à gaz et enfreindre une loi d'éthique !
Donc je ne vois pas l'intérêt de mettre le logo dans le HTML, si cela vient compliquer grandement la mise en place de la fonctionnalité désirée.
J'essaye de rester simple. C'est cela ma règle de base.

6l20 a écrit :
La feuille de styles peut ne pas être servie par le serveur, et l'on perd alors une information importante si l'on passe par une image d'arrière plan, etc...

Oui, avec des SI on met Paris en bouteille. Et si, et si, et si ...
Avec de tels arguments, on finit par ne plus rien faire !

Je te rassure, tu seras combler car ton logo fournira l'information que tu souhaites, mais rien ne fonctionnera !

Ce sont des règles absurdes qui finissent par compliquer la création des sites sans apporter un quelconque avantage, aussi bien aux malvoyants qu'aux autres.

@+
Dge-06 a écrit :


J'y ai pensé, mais le logo est assez grand, il faut donc que je le mette dans une div afin de le remonter un peu. C'est pourquoi je pensais mettre un div dans le li, mais c'est pas top.

http://finecookies.fr/


Franchement c'est sérieux tout ça ? Y'a autant de posts pour un truc aussi simple. C'est quoi le rapport entre mettre un <div> et "remonter un élément" comme tu dis ? Pourquoi aussi passer par des positions absolues ?
Je pense qu'un exemple sera plus explicite.
PS: ne pas oublier d'ajouter un descriptif dans l'attribut alt quand il n'y a qu'une image dans une balise <a>.
Bonjour à toutes et à tous.

Zelalsan a écrit :
Franchement c'est sérieux tout ça ?

Je suis entièrement d'accord avec toi.

Un logo, c'est une image porteuse d'information que l'on place dans dans le HTML. Exemple : dans l'en-tête du site. Je n'appelle pas cela un logo si c'est une image dans une liste.
Si j'ai proposé de mettre l'image en tant que background, c'est uniquement pour conserver la fonctionnalité de la liste. C'est-à-dire faire l'usage des pseudo-classes.

Maintenant si l'on veut obligatoirement mettre le logo (je devrais dire l'image) dans le HTML, alors je ne crée pas de liste, et je fais simplement l'usage des balises <a> avec, à l'intérieur, la balise <img>, lorsque cela est nécessaire, et ainsi tout le monde sera satisfait !


<div id="menu">
<a href="#1">un lien</a>
<a href="#2"><img src="image.jpg" alt="c'est un logo" /></a>
<a href="#3">un autre lien</a>
</div>

C'est le compromis afin de satisfaire toutes les remarques !

@+
Reprenons calmement Smiley sweatdrop
tournikoti a écrit :

Oui d'accord, mais comme je le dis, un logo, c'est aussi une image.

Oui, et alors ?
Si cette image définit l'identité d'une société, d'une entreprise, d'une association, elle est porteuse d'information(s), et les informations jusqu'à preuve du contraire, c'est le boulot d'HTML.
tournikoti a écrit :

Quand je préconise une solution en JavaScript, la plupart du temps, on m'insulte avec des arguments du genre "et si on désactive JavaScript, plus rien ne fonctionne".

JavaScript utilisé à bon escient est une bonne chose, ceux qui te disent le contraire sont des c* !
JavaScript désactivé ? La belle affaire, Il s'agit d'une surcouche cosmétique, d'une interaction sympathique qui amène un peu de dynamisme à la page, rien d'obligatoire ni de vitale, seule l'information compte, et il me semble que c'est le cas ici, une telle image dans la feuille de styles et c'est un risque accru de perdre cette information...
tournikoti a écrit :

Je pense qu'il faut trouver un juste milieux entre l'usine à gaz et enfreindre une loi d'éthique !
Donc je ne vois pas l'intérêt de mettre le logo dans le HTML, si cela vient compliquer grandement la mise en place de la fonctionnalité désirée.
J'essaye de rester simple. C'est cela ma règle de base.

Le risque, avéré, maintes fois rencontré, reproductible, et confirmé, c'est de perdre une information essentielle, voire vitale.
Je ne vois pas en quoi cela complexifie quoique ce soit ?!
Il ne s'agit aucunement d'éthique, mais d'accessibilité, de bonnes pratiques...
Après, chacun voit midi à sa porte et je ne force personne à rien.
tournikoti a écrit :

Oui, avec des SI on met Paris en bouteille. Et si, et si, et si ...
Avec de tels arguments, on finit par ne plus rien faire !

Que dire ? Smiley rolleyes
tournikoti a écrit :

Je te rassure, tu seras combler car ton logo fournira l'information que tu souhaites, mais rien ne fonctionnera !

Si le but d'un site web est de fournir une information, ce que j'ai la faiblesse de croire, alors, je ne vois pas ce qui ne fonctionne pas avec une solution universelle, reconnue par le plus grand nombre ?...
Et pour information, nous sommes bien loin de ce qui me comble Smiley cligne
tournikoti a écrit :

Ce sont des règles absurdes qui finissent par compliquer la création des sites sans apporter un quelconque avantage, aussi bien aux malvoyants qu'aux autres.

Fin de digression en ce qui me concerne, je suis à cours d'arguments là Smiley eek
Bonjour 6L20.

6l20 a écrit :
Reprenons calmement Smiley sweatdrop

Je suis calme ! Je suis serein ! Je reste zen ! Mais j'ai des arguments.

6l20 a écrit :
Oui, et alors ?
Si cette image définit l'identité d'une société, d'une entreprise, d'une association, elle est porteuse d'information(s), et les informations jusqu'à preuve du contraire, c'est le boulot d'HTML.

Mais je n'ai jamais dit le contraire !

Ce n'est pas l'image qui fait le logo, mais c'est le rôle qu'on lui fait jouer qui devient ou logo ou image. Si elle est logo alors elle a sa place dans le html. Si c'est une image, je ne vois pas pourquoi, je devrais m'interdire de la mettre dans le CSS. Et pourtant dans les deux cas, c'est la même image.

6l20 a écrit :
JavaScript utilisé à bon escient est une bonne chose, ceux qui te disent le contraire sont des c* !

Je ne peux que t'approuver !

6l20 a écrit :
JavaScript désactivé ? La belle affaire, Il s'agit d'une surcouche cosmétique, d'une interaction sympathique qui amène un peu de dynamisme à la page, rien d'obligatoire ni de vitale, seule l'information compte, et il me semble que c'est le cas ici, une telle image dans la feuille de styles et c'est un risque accru de perdre cette information...

C'est là où nous divergeons dans notre culture de l'informatique. Un site c'est un tout et non de l'à-peu-près. Car si tu supposes que l'on peut désactiver une partie des fonctionnalités, tu considères qu'elles ne sont pas essentielles. Mais dans ce cas là, pourquoi les utilises-tu ?

Au départ, avant d'être du HTML, c'était du SGML. Et on se servait de cela pour faire de la documentation en ligne. C'était basique et on n'en demandait pas plus. Je pense que tu es resté avec cette conception que l'information prime sur tout le reste.

6l20 a écrit :
Le risque, avéré, maintes fois rencontré, reproductible, et confirmé, c'est de perdre une information essentielle, voire vitale.
Je ne vois pas en quoi cela complexifie quoique ce soit ?!
Il ne s'agit aucunement d'éthique, mais d'accessibilité, de bonnes pratiques...
Après, chacun voit midi à sa porte et je ne force personne à rien.

La complexité vient de la mauvaise gestion des priorités.

6l20 a écrit :
Que dire ? Smiley rolleyes

Rien !

6l20 a écrit :
Si le but d'un site web est de fournir une information, ce que j'ai la faiblesse de croire, alors, je ne vois pas ce qui ne fonctionne pas avec une solution universelle, reconnue par le plus grand nombre ?...

Tu me fais un syllogisme là ou quoi ?

6l20 a écrit :
Et pour information, nous sommes bien loin de ce qui me comble Smiley cligne

Nous sommes sur un forum de discussions.
Le but est-il de satisfaire le membre qui pose maladroitement une question ou d'imposer des règles qui n'ont de valeurs que pour celui qui les expose ?

6l20 a écrit :
Fin de digression en ce qui me concerne, je suis à cours d'arguments là Smiley eek

Si tu affirmes cela, c'est que tes arguments ne sont pas suffisamment fort pour me convaincre du bien fondé qu'il représente.

Fin de la digression qui n'a pas sa place dans ce sujet !

@+
Modifié par tournikoti (09 Oct 2013 - 19:58)
Pages :