28172 sujets

CSS et mise en forme, CSS3

Bonjour,
J'ai une liste en html et souhaiterai n'afficher que les <li> qui ont un <a> :

<ul>
     <li><a href=".....">Texte 1</a></li>
     <li>Texte 2</li>
     <li>Texte3</li>
</ul>


Je ne souhaiterai afficher que la première ligne, en utilisant les css. J'avais pensé à ça, mais ça ne fonctionne pas :

ul li{
     display:none;
}
ul li a{
     display:inherit;
}


Je ne vois pas du tout comment faire...
Si quelqu'un a la solution, merci d'avance de me dire comment faire...
salut,
Tu pourrais passer par une classe appliquée aux <li> qui doivent être visibles. À noter que question accessibilité, les display:none sont très mauvais.
Peut être comme ça ?
Merci,
Le problème est que je ne peux pas toucher au html, c'est bien là mon soucis... Sinon, j'aurai directement supprimé les <li> dont je n'ai pas besoin....
marmitte a écrit :
Merci,
Le problème est que je ne peux pas toucher au html, c'est bien là mon soucis... Sinon, j'aurai directement supprimé les &lt;li&gt; dont je n'ai pas besoin....


A ma connaissance et après m'être renseigné, sans avoir accès au HTML, je pense que ce n'est pas possible avec uniquement du CSS. Tu vas être obligé de passer par du Javascript.
Alors comme ça. Ce n'est pas du display:none mais "c'est mieux". Le truc c'est que tes <li> qui n'ont pas de liens ne contiennent que du texte et non un élément HTML, ce qui rend le display:none impossible. Mais pourquoi tu ne peux pas toucher au HTML ?
Modérateur
Salut, il te suffit d'utiliser un sélecteur adjacent:

li+li{display:none}


Je te propose de lire ceci Smiley cligne
Modifié par Yordi (04 Jun 2013 - 12:23)
a écrit :
Salut, il te suffit d'utiliser un sélecteur adjacent:

Pas s'il y a d'autres liens qui viendront après Smiley cligne