28172 sujets

CSS et mise en forme, CSS3

Salut,

Je pense que ce n'est pas possible, mais je pose la question au cas où...

J'ai un menu, sous cette forme par exemple :


<ol>
  <li>Home page</li>
  <li>Tutoriel
    <ol>
      <li class="active">1er tuto</li>
    </ol>
  </li>
</ol>

Imaginons qu'un sous menu soit actif (page courante), et que je désire appliquer un style sur son <li> parent, comment puis je faire ?

Je peux affecter une classe au parent et un stylé, mais comment appliquer ce style uniquement si un de ses enfants est "active" ?

Faut obligatoirement passer par JS ou j'ai loupé quelque chose ?

Une solution en CSS3 me conviendrait, c'est pour une démo, rien à foutre d'IE.

Merci de votre aide.
++
Modifié par Olivier69 (28 Mar 2011 - 16:12)
Administrateur
Bonjour,

tu ne peux pas écrire de sélecteurs CSS pour cibler un élement en fonction d'un élément qui va suivre (que ce soit un descendant ou frère-qui-vient-après) dans le code HTML.

JS est une solution, l'autre est de rajouter côté serveur une classe sur le parent qui t'intéresse, ex :

<ol>
  <li>Home page</li>
  <li class="a_un_enfant_actif">Tutoriel
    <ol>
      <li class="active">1er tuto</li>
    </ol>
  </li>
</ol>
Salut,

C'est ce qui me semblait malheureusement, je vais essayer de gérer ça côté serveur, mais c'est vraiment un truc qui manque à CSS, des règles du type si X a des enfants, on applique un style.

C'est possible en JS, mais pas en CSS, dommage...

En j'en ai pas vu trace dans les spécifications CSS3 à priori Smiley decu

Merci de ton éclairage,
Bonne soirée.
OK, j'ai réglé le problème en ajoutant une classe .selectedparent aux balises <li> qui possèdent des enfants actifs, de manière à gérer toutes les notions de surbrillance et affichage/masquage de menus.

Ça complique bien la vie cette affaire... Smiley ohwell

Mais bon c'est fait.

Merci pour le coup de main.