aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2025-11-13 15:49:05 +0100
committerpolo <ordipolo@gmx.fr>2025-11-13 15:49:05 +0100
commit9e28a093480220d63960a4431c2decc354a7c7ca (patch)
treeedadb6ffb78905d73cc0d725c4e518a5d57656c2
parent66913ed4e1c99751c7a250bd6e8657261e98e16f (diff)
downloadcms-9e28a093480220d63960a4431c2decc354a7c7ca.tar.gz
cms-9e28a093480220d63960a4431c2decc354a7c7ca.tar.bz2
cms-9e28a093480220d63960a4431c2decc354a7c7ca.zip
fermer le menu ferme les sous-menus
-rw-r--r--public/css/nav.css29
-rw-r--r--public/js/main.js18
-rw-r--r--src/view/templates/header.php2
3 files changed, 28 insertions, 21 deletions
diff --git a/public/css/nav.css b/public/css/nav.css
index a913da0..a9bddf2 100644
--- a/public/css/nav.css
+++ b/public/css/nav.css
@@ -28,9 +28,6 @@
28 .nav_main ul{ 28 .nav_main ul{
29 padding-left: 0; 29 padding-left: 0;
30 } 30 }
31 .nav_main li{
32 padding: 5px;
33 }
34 .sub-menu{ 31 .sub-menu{
35 border-top: 3px solid #13aff0; 32 border-top: 3px solid #13aff0;
36 } 33 }
@@ -91,19 +88,20 @@
91 .nav_button, .nav_main 88 .nav_button, .nav_main
92 { 89 {
93 position: fixed; 90 position: fixed;
94 left: 50%; /* technique pour centrer un élément positionné */ 91 /* technique pour centrer un élément positionné */
95 transform: translateX(-50%); 92 /*left: 50%;
93 transform: translateX(-50%);*/
96 } 94 }
97 .nav_button{ 95 .nav_button{
98 display: block; 96 display: block;
99 margin-top: 5px; 97 margin: 5px;
100 position: fixed; 98 position: fixed;
101 } 99 }
102 .nav_main{ 100 .nav_main{
103 display: none; 101 display: none;
104 background-color: white; 102 background-color: white;
105 text-align: left; 103 text-align: left;
106 margin: 5px 0; 104 margin: 5px;
107 top: 31px; /* = taille bouton et de sa marge */ 105 top: 31px; /* = taille bouton et de sa marge */
108 106
109 } 107 }
@@ -111,9 +109,6 @@
111 display: block; 109 display: block;
112 } 110 }
113 /*.nav_main > ul{}*/ 111 /*.nav_main > ul{}*/
114 .nav_main li{
115 padding: 5px;
116 }
117 .drop-down{ 112 .drop-down{
118 width: min-content; 113 width: min-content;
119 } 114 }
@@ -121,15 +116,15 @@
121 margin-top: 5px; 116 margin-top: 5px;
122 } 117 }
123 .nav_main ul{ 118 .nav_main ul{
124 padding-left: 20px; 119 padding-left: 25px;
125 padding-right: 20px; 120 padding-right: 5px;
126 } 121 }
127 122
128 /*nav > ul > li > ul{ 123 /*nav > ul > li > ul{
129 margin-left: 0; 124 margin-left: 0;
130 }*/ 125 }*/
131 @media (pointer: fine){ 126 @media (pointer: fine){
132 .nav_main li > a:hover{ 127 .nav_main > ul > li:hover{
133 background-color: yellow; 128 background-color: yellow;
134 } 129 }
135 .drop-right > a > p:after{ 130 .drop-right > a > p:after{
@@ -151,16 +146,16 @@ ul{
151 margin: 0; 146 margin: 0;
152} 147}
153 148
154.nav_main li
155{
156 list-style: none;
157}
158.nav_main p 149.nav_main p
159{ 150{
160 display: inline-block; /* à cause du bouton sub-menu-toggle */ 151 display: inline-block; /* à cause du bouton sub-menu-toggle */
161 margin: 0; 152 margin: 0;
162 /*background-color: #ffffffe1;*/ /* b3 = 179 = 0.7 (x 256) */ 153 /*background-color: #ffffffe1;*/ /* b3 = 179 = 0.7 (x 256) */
163} 154}
155.nav_main li{
156 padding: 5px;
157 list-style: none;
158}
164 159
165.current/* > a > p*/ 160.current/* > a > p*/
166{ 161{
diff --git a/public/js/main.js b/public/js/main.js
index 28a62ae..7020971 100644
--- a/public/js/main.js
+++ b/public/js/main.js
@@ -48,10 +48,19 @@ function controlURL(input){
48 input.value = 'https://' + url; // Cas par défaut 48 input.value = 'https://' + url; // Cas par défaut
49} 49}
50 50
51function toggleTouchMenu(){
52 const nav = document.getElementById('nav_zone').querySelector('.nav_main');
53 const open_state = nav.classList.toggle('show'); // interrupteur
54
55 if(!open_state){
56 nav.querySelectorAll('li').forEach(li => {
57 li.classList.remove('open'); // fermer les sous-menus à la fermeture
58 });
59 }
60}
61
51// exécuté à la fin du chargement de la page 62// exécuté à la fin du chargement de la page
52document.addEventListener('DOMContentLoaded', () => { 63document.addEventListener('DOMContentLoaded', () => {
53 navHeight(); // hauteur de <nav> en fonction de celle du menu en position fixe
54 insertLocalDates();
55 64
56 // ouvrir/fermer les sous-menus avec écran tactile 65 // ouvrir/fermer les sous-menus avec écran tactile
57 document.querySelectorAll('.sub-menu-toggle').forEach(button => { 66 document.querySelectorAll('.sub-menu-toggle').forEach(button => {
@@ -70,13 +79,16 @@ document.addEventListener('DOMContentLoaded', () => {
70 } 79 }
71 }); 80 });
72 81
73 if(!li.classList.toggle('open')){ // fermer sous-menu 82 if(!li.classList.toggle('open')){ // ouvrir ou fermer ce sous-menu
74 li.querySelectorAll('.drop-right').forEach(desc => { 83 li.querySelectorAll('.drop-right').forEach(desc => {
75 desc.classList.remove('open'); // fermer sous-menus enfants 84 desc.classList.remove('open'); // fermer sous-menus enfants
76 }); 85 });
77 } 86 }
78 }); 87 });
79 }); 88 });
89
90 navHeight(); // hauteur de <nav> en fonction de celle du menu en position fixe
91 insertLocalDates();
80}); 92});
81 93
82function navHeight(){ 94function navHeight(){
diff --git a/src/view/templates/header.php b/src/view/templates/header.php
index 9d2f071..b39bdd5 100644
--- a/src/view/templates/header.php
+++ b/src/view/templates/header.php
@@ -4,7 +4,7 @@
4 <header style="background-image: url('<?= $header_background ?? '' ?>');"> 4 <header style="background-image: url('<?= $header_background ?? '' ?>');">
5 <div id="nav_zone"> 5 <div id="nav_zone">
6 <div class="nav_button"> 6 <div class="nav_button">
7 <button onclick="document.getElementById('nav_zone').querySelector('.nav_main').classList.toggle('show');">MENU</button> 7 <button onclick="toggleTouchMenu()">MENU</button>
8 </div> 8 </div>
9 <?= $nav ?> 9 <?= $nav ?>
10 </div> 10 </div>