28173 sujets

CSS et mise en forme, CSS3

Bonjour,
j'utilise fréquemment sur mon site un dispositif d'affichage particulier utilisant javascript et offrant un aspect appréciable. Ce dispositif se compose de deux éléments : Une liste ordonnée et une 'div' servant de conteneur à l'information. Grace à javascript, le survol des éléments de la listes modifie le contenu de la 'div'. Or après la lecture de cet article, j'ai décidé de modifier ce dispositif en vue de permettre aux visiteurs utilisant ff mais ne disposant pas de l'environnement javascript de pouvoir accéder aux informations qu'il contient. Voici le résultat :
<ol class="LAD">
   <li onmouseover="this.className='Active';" onmouseout="this.className='';">
      <h3>Titre1</h3>
      <div>Infos1</div>
   </li>
   <li onmouseover="this.className='Active';" onmouseout="this.className='';">
      <h3>Titre2</h3>
      <div>Infos2</div>
   </li>
   <li onmouseover="this.className='Active';" onmouseout="this.className='';">
      <h3>Titre3</h3>
      <div>Infos3</div>
   </li>
</ol>

En ce qui concerne la feuille de style, les éléments apparant de la liste se présente à gauche - il y a également un menu de 200px de largueur aligné à droite - et l'information se place au centre en prenant la place restante. Voici le résultat :
ul.LAD li
{
	list-style:	none;
}
ul.LAD li h3
{
	text-align:	right;
	width:		175px;
}
ul.LAD li div		
{
	position:	absolute;
	top:		515px;
	left:		0;
	width:		auto;
	padding:	0 20px;
	margin:		0 195px 0 175px;
	display:	none;
}
ol.LAD li:hover div,
ol.LAD li.Active div
{
	display:	block;
}

Bien que le résultat soit probant sous ff comme ie, je rencontre quelques problemes :
# D'abord un décalage de position du titre inférieurau survol des éléments des la liste sous ie. J'ai constaté que ce probleme ne se posait pas lorsque que le bord de li était définit à 1px ou plus ce qui n'est pas une solution en soit.
# Ensuite je désire insérer des fieldsets flottantes dans les divs d'information et faisant 50% de la taille du conteneur. Malheureusement, je ne trouve pas de solution satisfaisantes à ce probleme.

Voila. Si vous voyez des solutions ou au moins des conseils pour ces deux problemes, merci de vos réponses. Et bien sûr, si vous avez une idée pour faire cela autrement, you're welcome!
Bonjour,

Démarche à reprendre en totalité:
- établir une base HTML nue cohérente et rigoureuse (pas de titrage hn dans des listes)
- établir une présentation CSS suffisante sans JS (pas de display:none par défaut dans la CSS)
- après seulement, définir la couche js, de manière non obstructive (fonctionnalité indépendante du périphérique, donc gestion du clavier). Et en s'étant interrogé sur le niveau d'ergonomie, qui est très médiocre pour un système au survol, et déjà plus probant pour un système qui serait basé sur le clic (pour lequel les scripts nécessaires sont d'ailleurs légions).

En l'état, c'est inutilisable et inaméliorable, sorry Smiley cligne
Modifié par Laurent Denis (21 Feb 2007 - 11:18)
Pour ce qui est du html, les hns ne sont pas vraiment difficiles a remplacer; Il me semblait simplement plus cohérent de préciser leur nature de titre... De plus, si je me fis aux recommandations vis-à-vis des listes, les div ne sont pas non plus appropriées dans ce contexte. A l'exception des spans, que peut-on placer entre deux li ?

Pour ce qui est du css, je ne vois pas trop comment repondre au cahier des charges sans display:none... En effet, l'interet de ce dispositif est d'étendre l'accessibilitée du site vis-à-vis de son prédécesseur quand au besoin de l'environnement javascript. Sans cet atout, le nouveau dispositif est une régression par rapport à son predesseur qui se contentait d'afficher le contenu brut en l'absence de l'environnement javascript...

Donc, dans l'état, je viens de perdre 1h de mon temps... Smiley lol
Reprenons: Smiley cligne

- ce ne sont pas les titres qu'il faut enlever, mais la liste <ol>. Si des regroupements d'éléments sont nécessaires, les éléments <div> sont là pour ça, au contraire.

- c'est la présentation par défaut sans javascript qui ne doit pas utiliser display:none. Celui-ci, évidemment nécessaire, interviendra uniquement via javascript, par le simple ajout d'une classe au onload.

Suivre le mode d'emploi en commençant par la première étape (le HTML). Sur le fond, il n'y a rien de bien compliqué, mais juste un impératif de rigueur.
Modifié par Laurent Denis (21 Feb 2007 - 12:14)
L'interet des modifications apporté à ce dispositif était de permettre aux utilisateurs - ne disposant pas de l'environnement javascript mais d'un navigateur gérant l'attribut hover de css - de naviguer comme ceux disposant de j.c. . Le fait est que pour cela il faut définir le display:none autrement que via javascript - via un hack css éventuellement.
Heu... Comment redire ? Smiley cligne

La priorité est déjà de concevoir une page XHTML CSS fonctionnelle et accessible sans javascript. Puis de réaliser une surcouche javascript accessible. Mais pas de fragiliser le tout avec cette idée d'exploiter le :hover comme solution de rattrapage en l'absence de js.

Permettre aux utilisateurs ayant désactivé javascript de reproduire via CSS une fonctionnalité basée sur javascript est une acrobatie inutile (Ne serait qu'en raison de l'impossibilité dans IE).
Modifié par Laurent Denis (21 Feb 2007 - 14:04)
Il me semble que nous sommes d'accord... Simplement j'y ai passé du temps et je me rend compte que j'ai mal appréhendé le projet.

{edit} Et merci de me l'avoir mis en évidence ^^
Modifié par ramy (21 Feb 2007 - 14:27)