diff options
| author | polo <ordipolo@gmx.fr> | 2025-11-13 15:49:05 +0100 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-11-13 15:49:05 +0100 |
| commit | 9e28a093480220d63960a4431c2decc354a7c7ca (patch) | |
| tree | edadb6ffb78905d73cc0d725c4e518a5d57656c2 | |
| parent | 66913ed4e1c99751c7a250bd6e8657261e98e16f (diff) | |
| download | cms-9e28a093480220d63960a4431c2decc354a7c7ca.tar.gz cms-9e28a093480220d63960a4431c2decc354a7c7ca.tar.bz2 cms-9e28a093480220d63960a4431c2decc354a7c7ca.zip | |
fermer le menu ferme les sous-menus
| -rw-r--r-- | public/css/nav.css | 29 | ||||
| -rw-r--r-- | public/js/main.js | 18 | ||||
| -rw-r--r-- | src/view/templates/header.php | 2 |
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 | ||
| 51 | function 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 |
| 52 | document.addEventListener('DOMContentLoaded', () => { | 63 | document.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 | ||
| 82 | function navHeight(){ | 94 | function 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> |
