Maison
Components
Menu
CSS-only Tailwind CSS vertical menu for navigation lists. Active, disabled, and icon item states. Size variants. WCAG AA accessible, works with Django, HTMX, Laravel, React, and any stack.
Les composants de menu affichent des listes organisées d'actions ou d'options de navigation. Construit avec des listes HTML sémantiques et des éléments de lien, le système de menus Frutjam prend en charge les dispositions verticales et horizontales, les menus imbriqués, les icônes et les états actifs. Entièrement accessibles grâce à la navigation au clavier, les menus s'intègrent parfaitement aux listes déroulantes, aux barres latérales et aux modèles de navigation contextuels.
CSS uniquement, aucun JavaScript requis. WCAG AA accessible et indépendant du framework – fonctionne avec Django, HTMX, Laravel, React et n'importe quelle pile.
Classe
Taper
Description
menu Base Liste verticale des éléments de navigation ou d'action
menu-item Modificateur Élément cliquable individuel dans le menu
menu-title Modificateur Étiquette de section non interactive
menu-horizontal Modificateur Disposition horizontale
menu-vertical Modificateur Disposition verticale (par défaut)
menu-active Modificateur Force l'état actif/mis en surbrillance sur un élément
menu-disabled Modificateur Apparence désactivée pour un élément de menu
menu-xs Taille Très petit
menu-sm Taille Petit
menu-md Taille Moyen (par défaut)
menu-lg Taille Grand
menu-xl Taille Très grand
Utilisation de base
< ul class = "menu menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
< ul class = "menu menu-vertical" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 < ul class = "menu" >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
Home
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
Search
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
Profile
</ a >
</ li >
</ ul >
Afficher le code
Menu réactif : vertical sur petit écran, horizontal sur grand écran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 < ul class = "menu menu-xs w-56" >
< li >< a class = "menu-item" > Xsmall 1</ a ></ li >
< li >< a class = "menu-item" > Xsmall 2</ a ></ li >
</ ul >
< ul class = "menu menu-sm w-56" >
< li >< a class = "menu-item" > Small 1</ a ></ li >
< li >< a class = "menu-item" > Small 2</ a ></ li >
</ ul >
< ul class = "menu menu-md w-56" >
< li >< a class = "menu-item" > Medium 1</ a ></ li >
< li >< a class = "menu-item" > Medium 2</ a ></ li >
</ ul >
< ul class = "menu menu-lg w-56" >
< li >< a class = "menu-item" > Large 1</ a ></ li >
< li >< a class = "menu-item" > Large 2</ a ></ li >
</ ul >
< ul class = "menu menu-xl w-56" >
< li >< a class = "menu-item" > Xlarge 1</ a ></ li >
< li >< a class = "menu-item" > Xlarge 2</ a ></ li >
</ ul >
Afficher le code
< ul class = "menu w-56" >
< li class = "menu-title" > Title</ li >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
< ul class = "menu w-56" >
< li >
< h2 class = "menu-title" > Title</ h2 >
< ul >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
</ li >
</ ul >
Afficher le code
< ul class = "menu w-56" >
< li >< a class = "menu-item" > Enabled item</ a ></ li >
< li class = "menu-disabled" >< button disabled class = "menu-item" > disabled item</ button ></ li >
< li class = "menu-disabled" >< a class = "menu-item" aria-disabled = "true" > disabled item</ a ></ li >
</ ul >
Afficher le code
< ul class = "menu" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >< a class = "menu-item menu-active" > Item 2</ a ></ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 < ul class = "menu w-56" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< a class = "menu-item" > Parent</ a >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
< li >
< a class = "menu-item" > Parent</ a >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
</ ul >
</ li >
</ ul >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 < ul class = "menu w-56" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent</ summary >
< div class = "accordion-content" >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent</ summary >
< div class = "accordion-content" >
< ul >
< li >< a class = "menu-item menu-active" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu" >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu menu-horizontal" >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu" >
< li >
< a class = "menu-item tooltip tooltip-end" data-tip = "Home" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip tooltip-end" data-tip = "Search" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip tooltip-end" data-tip = "Profile" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 < ul class = "menu menu-horizontal" >
< li >
< a class = "menu-item tooltip" data-tip = "Home" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip" data-tip = "Search" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
</ a >
</ li >
< li >
< a class = "menu-item tooltip" data-tip = "Profile" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
</ a >
</ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 < ul class = "menu menu-vertical lg:menu-horizontal" >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" >
</ path >
</ svg >
Home
< span class = "badge badge-xs" > 99+</ span >
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< path d = "m21 21-4.34-4.34" />
< circle cx = "11" cy = "11" r = "8" />
</ svg >
Search
</ a >
</ li >
< li >
< a class = "menu-item" >
< svg xmlns = "http://www.w3.org/2000/svg" width = "24" height = "24" viewBox = "0 0 24 24"
fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >
< circle cx = "12" cy = "8" r = "5" />
< path d = "M20 21a8 8 0 0 0-16 0" />
</ svg >
Profile
< span class = "badge badge-primary badge-xs badge-circle" ></ span >
</ a >
</ li >
</ ul >
Afficher le code
Arborescence des fichiers
< ul class = "menu menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< a class = "menu-item" > Parent</ a >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
</ ul >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 < ul class = "menu xl:menu-horizontal lg:min-w-max" >
< li >
< a class = "menu-item" > Solutions</ a >
< ul >
< li >< a class = "menu-item" > Design</ a ></ li >
< li >< a class = "menu-item" > Development</ a ></ li >
< li >< a class = "menu-item" > Hosting</ a ></ li >
< li >< a class = "menu-item" > Domain register</ a ></ li >
</ ul >
</ li >
< li >
< a class = "menu-item" > Enterprise</ a >
< ul >
< li >< a class = "menu-item" > CRM software</ a ></ li >
< li >< a class = "menu-item" > Marketing management</ a ></ li >
< li >< a class = "menu-item" > Security</ a ></ li >
< li >< a class = "menu-item" > Consulting</ a ></ li >
</ ul >
</ li >
< li >
< a class = "menu-item" > Products</ a >
< ul >
< li >< a class = "menu-item" > UI Kit</ a ></ li >
< li >< a class = "menu-item" > WordPress themes</ a ></ li >
< li >< a class = "menu-item" > WordPress plugins</ a ></ li >
< li >
< a class = "menu-item" > Open source</ a >
< ul >
< li >< a class = "menu-item" > Auth management system</ a ></ li >
< li >< a class = "menu-item" > VScode theme</ a ></ li >
< li >< a class = "menu-item" > Color picker app</ a ></ li >
</ ul >
</ li >
</ ul >
</ li >
< li >
< a class = "menu-item" > Company</ a >
< ul >
< li >< a class = "menu-item" > About us</ a ></ li >
< li >< a class = "menu-item" > Contact us</ a ></ li >
< li >< a class = "menu-item" > Privacy policy</ a ></ li >
< li >< a class = "menu-item" > Press kit</ a ></ li >
</ ul >
</ li >
</ ul >
Afficher le code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 < ul class = "menu lg:menu-horizontal" >
< li >< a class = "menu-item" > Item 1</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent item</ summary >
< div class = "accordion accordion-flush" >
< ul >
< li >< a class = "menu-item" > Submenu 1</ a ></ li >
< li >< a class = "menu-item" > Submenu 2</ a ></ li >
< li >
< div class = "accordion accordion-flush" >
< details open >
< summary > Parent</ summary >
< div class = "accordion-content" >
< ul >
< li >< a class = "menu-item" > item 1</ a ></ li >
< li >< a class = "menu-item" > item 2</ a ></ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
</ ul >
</ div >
</ details >
</ div >
</ li >
< li >< a class = "menu-item" > Item 3</ a ></ li >
</ ul >
Afficher le code