28173 sujets

CSS et mise en forme, CSS3

Pages :
jpv a écrit :

e sélecteur enfant adjacent permets, comme son nom l'indique, d'atteindre l'enfant adjacent d'un element, à la condition qu'ils aient un parent commun.
...
Ca fonctionne sur Gecko, Opera, Safari et... IE7, mais pas IE6 ... Ce qui le rends inexploitable actuellement.


1. Merci pour la précision, quel fonctionnement passionnant !!! Vraiment.

Je vais faire moi même le test bien sur mais ce serait intéressant de savoir ce qui est visé par ce sélecteur. J'aurai tendance à dire intuitivement que c'est le <div> adjacent au <a>, mais comme dans ton exemple tu mets un display:block; que div a déjà par défaut je dois me tromper.

2. Pour IE ba on sera patient, les carences de ce navigateur sur les sélecteurs étaient tellement énormes que déjà c'est très bien que ça s'apprête à bouger.

3. Sur l'histoire du focus, oui c'est vraiment pénible si la dernière version du navigateur est restée hors jeu de cet aspect des choses et j'imagine bien ton agacement en tant que veilleur technologique sur l'accessibilité (et je sais bien que tu es plus qu'un simple veilleur).


Sinon,
a écrit :

On se demande à quoi ils pensent chez nanosoft....


la réponse est évidente mais ne peut être donnée qu'un Vendredÿ...
... Donc là encore ... Patience Smiley lol
Modérateur
bonsoir,

En fait moi j'arrive toujours pas a comprendre pourquoi 3 liens pour une info bulle qui mêment tous aux même endroits ,
Mon intervention et ma remarque sur js et <a> detourné etait une suite au topic mis en lien et pas un conseil.


<a href="ancre#x" >18<span>adress nom <img ..>...<br > rue </span></a>

... devrait suffire a faire une info bulle qui se maintient affiché a l'opposé d'un title fuyant et non stylable.




a {
position:relative;
}
a span {
position:absolute;
height:0;
width:0;
overflow:hidden; /* je l'avais oublié */
z-index:-1/* opera */
}
a:hover span {
height:auto;
width:6em;
left:-2.5em;
top:1em;
/* + la mise en forme  pour le span devenu une boite 
par le positionneemnt absolu */
}


code approximatif , pas tester , on se passe de tableaux de 2 liens en surplus et javascript.
Ou bien une fois de plus , je n'ai pas tout vu du resultat escompté.

++

<edit> a la lecture du post de jpv , j'en vient a me poser si la question d'un display:none sur le span ne deviendrais pas une alternative, en renseignant le title correctement et succintement.
Les images peuvent passer en fond , bien sur Smiley cligne .
Modifié par gcyrillus (21 Nov 2006 - 00:34)
bonjour,

a écrit :
Je vais faire moi même le test bien sur mais ce serait intéressant de savoir ce qui est visé par ce sélecteur. J'aurai tendance à dire intuitivement que c'est le <div> adjacent au <a>, mais comme dans ton exemple tu mets un display:block; que div a déjà par défaut je dois me tromper.


Non, tu ne te trompes pas, le display:block est juste là pour rendre visible le bloc préalablement caché par display:none.

Ceci dit la technique display:none/block est à éviter au profit d'une technique dérivée de celle de Paul Bohman qui consiste à positionner l'élément caché en dehors du wiewport (comme le fait ghost par exemple).

Je n'ai pas voulu trop compliqué la sauce pour Tof qui à du chemin à faire... Smiley smile

@ghost : La structure que tu proposes pose quelques soucis :
- L'utilisation d'un em pour encapsuler ton couple image+texte n'est pas très pertinente du point de vue de sémantique.
- L'utilisation d'un élement a comme boite contener pour quelque chose qui n'est pas un lien est là aussi peut pertinente comme tu le soulignes d'ailleurs.

En audit on parlerais sans coup férir d'un détournement de balisage...

Cela pose un autre problème, plus épineux qui est la longueur des liens, franchement très excessive.

Un utilisateur de lecteur d'écran à la possibilité de lister tous les liens de la page, c'est une fonctionnalité particulièrement importante pour lui.

En produisant des liens aussi longs, avec, en outre, des descriptions alternatives d'images "innoportunes", tu vas gravement polluer cette liste de liens et la rendre difficilement utilisable...

<edit >@gcyrillus : Non parce que l'élément a est destiné à contenir le lien vers une ressource et pas un autre chose...
En utilisant deux éléments adjacents, un lien de type ancre qui pointe vers le texte "caché", on respecte le rôle de l'élément a et on donne la possibilité aux utilisateurs de lecteurs d'écrans d'atteindre les textes "cachés" à partir de la liste des liens de la page, ce qui est exactement ce qu'on est en droit d'attendre d'un fonctionnement de ce type...
</edit>

La technique à base d'éléments adjacents, quitte à utiliser du javascript est moins problématique même si cela ne résoud pas le problème de la désactivation de javascript...

Au final, ce genre de construction de cartes interactives sont assez difficiles à envisager du point de vue de l'accessibilité.

Le choix se porte plutôt à trouver la technique "la moins mauvaise" de la classique image map aux structures css enfants adjacents javascriptées ou non.

Pour ce qui est du manque de support de focus sur un enfant adjacent, j'en reste coi et passablement dérouté car cela tue un des principaux intérêts de ce sélecteur.

Si quelqu'un à un retour différent sur ce sujet je suis client... Smiley smile

Jean-pierre
Modifié par jpv (21 Nov 2006 - 00:34)
Re,

Effectivement, il n'y pas je crois de solution miracle pour ce type de production dans la limite des possibilités des navigateurs actuels (!) On navigue entre le sémantiquement (accessibité) incorrect et le problème lié au JS. Le mieux se serait de s'en passer ! Mais c'est sans compter sur la pression du client qui à vu cette option sur le site lambda et qui reste suffisament sourd aux problèmes d'accessibilité ...
Modérateur
Merci de l'info et explication tres interessantes JPV,

a écrit :
... on respecte le rôle de l'élément a et on donne la possibilité aux utilisateurs de lecteurs d'écrans d'atteindre les textes "cachés" à partir de la liste des liens de la page, ...


bon c'est mon analyse qui est mauvaise alors , et je ne focalise que sur le probleme de la puce rouge numerotée du lien.

ou l'on trouve pour affiché l'adresse et repeté 3 fois le même lien (destination).

J'aurais presqu'etait jusqu'a analyser ça comme ça:

<address>
<a href="ancre33" title ="l'epi d'or">15
<span>l'epi d'or<br>
15 rue des blés<br>
75 001 paris
</span>
</a>
</adress>

ou peut-etre selon le principe des selecteurs adjacents:


<ul>
<li>
<address>
<a href="ancre33" title ="l'epi d'or">15</a>
<p>l'epi d'or<br>
15 rue des blés<br>
75 000 paris
</p>
</adress>
</li>

etc ...


Je ne suis pas têtu , mais perdu , il me semblait plus judicieux de limiter la redondance de lien vers des destinations uniques et la possibilité de conserver l'infobulle css dans le dit lien .
L'info n'est autres que le nom de l'etablissement , certes pour le moment il n'y a que le premier etablissement de la liste qui donne plus a lire que l'adresse.

hmm ... Ou bien ces 3 liens seraient en final differents et menerait vers 3 destinations distinctes :

le tableau bas de page
la "visite" de l'etablissement
La carte du quartier ou se situe l'etablissement.

du coup on retombe sur un "petit menu" un premier lien avec un sous menu a 2 liens cliquables ....

Je m'enmêle les pinceaux dans cette histoire.

bonsoir
Bonjour,

Ha, désolé je n'avais pas vu cette histoire de liens redondants.... Smiley smile

Oui dans le cas de la carte de Tof "l'infobulle" est effectivement constituée de trois liens ancres qui menent vers une destination identique.

C'est une erreur, on ne devrait avoir qu'un seul lien.

Mon exemple ne prenait pas en compte le contenu des textes cachés, mais juste montrer un principe, parmis d'autres, de la construction de ce genre de structures réactives.

Je comprends mieux ta proposition maintenant qui serait effectivement une solution.

Désolé de mon erreur d'interprétation...

Donc re-exemple en utilisant un seul lien conteneur pour l'ensemble images + description des hôtels :

<!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=iso-8859-1" />
<meta http-equiv="Content-style-type" content="text/css" />
<meta http-equiv="Content-language" content="fr" />
<title>Untitled</title>
<style type="text/css">
a{
	text-decoration:none;
}
img{
	border:none;
}
#div1{
	position:absolute;
  top:0;
  left:0;
  width:300px;
  height:300px;
  background-color:#ff6600;	
}
#liste{
	margin:0;
  padding:0;
}
#liste li{
	list-style-type:none;
}
#h1{
	margin-top:20px;
  margin-left:20px;
}
#h2{
	margin-top:0px;
  margin-left:40px;
}
#h3{
	margin-top:-20px;
  margin-left:60px;
}
#h4{
	margin-top:-10px;
  margin-left:80px; 
}
.hotel{
	position:absolute;
  width:100px;
  height:40px;
  margin-top:-1000px;
  background-color:#ffffff;
  font-size:0.8em;
}
.titre{
	display:block;
	border-bottom:2px solid #990033;
}
#liste li a:hover .hotel{
	display:block;
  margin-top:-5px;
  margin-left:10px;
}
</style>
</head>
<body>
<div id="div1">
	la carte
	<ul id="liste">
  	<li id="h1">
    	<a href="#hotel1"><img src="pastille.gif" width="10" height="10" alt="" />
      	<span class="hotel">
        	<span class="titre">Hotel machin</span> adresse 
        </span>
      </a>
    </li>
  	<li id="h2" >
    	<a href="#hotel2"><img src="pastille.gif" width="10" height="10" alt="" />
      <span class="hotel">
      	<span class="titre">Hotel truc</span> adresse
      </span>
      </a>
    </li>
  	<li id="h3" >
    	<a href="#hotel3"><img src="pastille.gif" width="10" height="10" alt="" />
      <span class="hotel">
      	<span class="titre">Hotel bidule</span> adresse
      </span>
      </a>
    </li>
  	<li id="h4" >
    	<a href="#hotel4"><img src="pastille.gif" width="10" height="10" alt="" />
      <span class="hotel">
      	<span class="titre">Hotel trucmuche</span> adresse
      </span>
      </a>
    </li>            	             
  </ul>      
</div>
</body>
</html>


Ce qui se justifie car on utilise bien le lien pour pointer une ressource et ce qui est intéressant évidemment car on économise la couche javascript mais devient difficilement envisageables si on produit des liens trops longs...

Pas trop longs c'est 80 caractères pour Accessiweb par exemple.

Du coup je continue à conseiller à Tof l'utilisation d'éléments adjacents javascriptés, car la liste des hotels qui reprends les informations des textes cachés est une parfaite alternative lorsque javascript est désactivé.

De cette manière on limite la charge sur la liste des liens qui seront du type "hotel truc" et on assure néanmoins l'accès à l'info par la liste des hotels dans tous les cas.

Jean-pierre

Jean-pierre
Modifié par jpv (21 Nov 2006 - 04:55)
Oulala ! Je ne viens pas pendant 1 jour et c'est la ribambelle de posts !

Merci à tous pour vous être penché sur mon problème mais j'ai enfin trouvé ma solution ! Un des premiers posts de jpv qui m'expliquait que "le fait de déclarer mes boites en position absolue détermine le contexte de mise en forme de tous ses enfants" m'a mis la puce à l'oreille.
Ainsi, je me suis que j'allais tester de discocier les <div> permettant d'afficher les puces rouges de celles affichant les informations de l'hotel.

Ainsi, la position de la description de l'hotel ne se trouve pas affectée par la position de la puce rouge.

Je suis conscient que cela n'est pas forcément très propre et c'est de loin une méthode de bricolage mais tant que cela marche, mon patron est content ^^. Me concernant, je vais suivre vos précieux conseils et me pencher plus sérieusement sur ce que j'appelle le "NEW HTML" Smiley murf .

Pour revenir sur mon triple lien dans mon tableau descriptif, une fois de plus, c'était effectivement une bidouille de ma part. J'ai désormais enlever ces triples liens, le véritable lien étant la puce rouge.

Je n'ai testé ce code que sur IE 6 et Firefox 1.5, qui sont les priorités dans ma société.
Je vous mets le lien, pour que vous puissiez apprécier le résultat final: ICI.

Voilà, une fois de plus, merci à tous et à bientôt sur Alsacreations Smiley ravi
Pages :