IPB

Bienvenue invité ( Connexion | Inscription )

> Mise en page animée, Nouveautés de CSS
Options
Anard
posté 23 Jan 2019, 15:37
Message #1


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 659
Inscrit : 7 May 2015
Membre no 195 224



Bonjour à tous. Je viens vous voir pour un assistance cosmétique (et non pas cosmique).

Je suis en train de me remettre un peu au développement web. Depuis le temps que je n'y était pas venu, ça a bien bougé ! On peut maintenant faire des animations en CSS biggrin.gif
Du coup pour mon nouveau site, je voudrais créer une interface adaptative et animée sans utiliser de javascript.

J'ai un menu principal "à la con" avec des chapitres principaux répartis autour d'une image. Le survol d'un chapitre doit faire apparaître un sous menu dans un genre de bulle, si possible de manière animée.
J'ai réussi à mettre en place quelques animations sur la couleur des liens, c'est déjà formidable.
Mais je n'arrive pas à faire apparaître ma box de manière progressive.

La construction du menu repose sur cette syntaxe :
Code
<dl><!-- élément de menu -->
    <dt><!-- titre du menu toujours visible, mais mobile-->
    <dd><ul><!-- sous-menu invisible au départ et qui doit apparaitre -->
        <li><!-- les différentes lignes du sous-menu -->


Pour faire apparaitre un <dd>, j'utilise dans mon css :
Code
dl:hover dd {
    display: inline-block;
}


Malheureusement, je n'arrive pas à animer cette appartition, même en indiquant au préalable
Code
dl dd {
    transition: display 1s;
}

En effet, il semble que la transistion doit s'appliquer à l'élément survolé et non à un sous-élément (en l'occurrence, je veux afficher le <dd> au survol du <dl> parent).
Je ne sais pas si je me fais bien comprendre...

Je découvres ces nouvelles fonctionnalités, alors votre aide serait la bienvenue...

Merci beaucoup. Pour plus d'informations, vous pouvez visualiser l'état des choses ici


--------------------
"iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
scoch
posté 28 Jan 2019, 14:52
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 933
Inscrit : 1 Jul 2010
Membre no 156 073



@Philippe64 Bien d’accord pour limiter l’utilisation de l’attribut id.
Par contre, pas vraiment d’accord quand tu écris que les classes sont là pour simplifier la sélection d’éléments. C’est vrai que l’attribut class simplifie la sélection mais les sélecteurs avancés de CSS sont là pour ça aussi. Le principal avantage des sélecteurs avancés de CSS est d’éviter le mélange structure(HTML)/apparence (CSS) dans le code source HTML. Utiliser les sélecteurs avancés de CSS apporte également davantage de souplesse : cela peut permettre au web designer d’arriver à ses fins sans être complètement tributaire du code généré par le développeur web php par exemple (c’est flagrant dans le cas d’une refonte du design avec une structure HTML inchangée).

Dans le code HTML que tu as posté plus haut, il n’est pas compliqué de cibler les éléments en CSS sans utiliser les attributs class :

- le sélecteur .menu devient nav > ul
- le sélecteur .menu_element devient nav > ul > li
- le sélecteur .sous_menu devient nav > ul > li > ul
- et ses enfants directs li : nav > ul > li > ul > li

Attribuer un nom de classe à la nav peut être justifié dans le cas où il y aurait d’autres éléments nav, et pas de parent permettant de créer un contexte de sélection.
La version simplifiée du HTML et du CSS :

Code
<nav>
    <ul>
        <li>element menu 1
            <ul>
                <li>élément sous menu 1</li>
                <li>élément sous menu 2</li>
                <li>élément sous menu 3</li>
            </ul>
        </li>
        <li>element menu 2
            <ul>
                <li>élément sous menu 1</li>
                <li>élément sous menu 2</li>
                <li>élément sous menu 3</li>
            </ul>
        </li>
        <li>element menu 3
            <ul>
                <li>élément sous menu 1</li>
                <li>élément sous menu 2</li>
                <li>élément sous menu 3</li>
            </ul>
        </li>
    </ul>
</nav>


Code
nav > ul {
    margin: 1em;
    background-color: pink;
}
nav > ul > li {
    margin: 1em;
    background-color: gold;
}
nav > ul > li > ul {
    margin: 1em;
    background-color: cyan;
}
nav > ul > li > ul > li {
    margin: 1em;
    background-color: orange;
}


--------------------
L'homme n'est que poussière... c'est dire l'importance du plumeau ! Alexandre Vialatte
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th July 2025 - 10:34