1<!DOCTYPE html> 2<html dir="ltr" lang="fr" xmlns:ff4j="http://www.w3.org/1999/xhtml" xmlns:esi="http://www.edge-delivery.org/esi/1.0"> 3 <head> 4 <title> 5 Commune de Villainville - Villainville-site officiel-2022 </title> 6 7
7<script src="/lib/tarteaucitron/tarteaucitron.js"></script>
7 8
8<script> 9 var tarteaucitronExpireInDay = true, tarteaucitronForceExpire = 183; 10 11 tarteaucitron.init({ 12 "privacyUrl": "", /* Privacy policy url */ 13 14 "hashtag": "#tarteaucitron", /* Open the panel with this hashtag */ 15 "cookieName": "tarteaucitron", /* Cookie name */ 16 17 "orientation": "bottom", /* Banner position (top - bottom) */ 18 19 "showAlertSmall": false, /* Show the small banner on bottom right */ 20 "cookieslist": true, /* Show the cookie list */ 21 22 "showIcon": false, /* Show cookie icon to manage cookies */ 23 // "iconSrc": "", /* Optionnal: URL or base64 encoded image */ 24 "iconPosition": "BottomRight", /* Position of the icon between BottomRight, BottomLeft, TopRight and TopLeft */ 25 26 "adblocker": false, /* Show a Warning if an adblocker is detected */ 27 28 "DenyAllCta": true, /* Show the deny all button */ 29 "AcceptAllCta": true, /* Show the accept all button when highPrivacy on */ 30 "highPrivacy": true, /* HIGHLY RECOMMANDED Disable auto consent */ 31 32 "handleBrowserDNTRequest": false, /* If Do Not Track == 1, disallow all */ 33 34 "removeCredit": false, /* Remove credit link */ 35 "moreInfoLink": true, /* Show more info link */ 36 "useExternalCss": false, /* If false, the tarteaucitron.css file will be loaded */ 37 38 //"cookieDomain": ".my-multisite-domaine.fr", /* Shared cookie for subdomain website */ 39 40 "readmoreLink": "", /* Change the default readmore link pointing to tarteaucitron.io */ 41 42 "mandatory": true, /* Show a message about mandatory cookies */ 43 44 "listCookieByService": false, /* Show a message about list cookie by service */ 45 46 }); 47 </script>
47 48 49 50 51 <meta name="Description" content="Site officiel de la commune de Villainville 76280, Normandie France"> 52 <meta name="Keywords" content="Villainville Normandie France site officiel village"> 53 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 54 <meta charset="UTF-8"> 55 56 <!-- Matomo -->
57<script> 58 var _paq = window._paq = window._paq || []; 59 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ 60 _paq.push(['trackPageView']); 61 _paq.push(['enableLinkTracking']); 62 (function() { 63 var u="//matomo-client.neopse.com/"; 64 _paq.push(['setTrackerUrl', u+'matomo.php']); 65 _paq.push(['setSiteId', '459']); 66 var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 67 g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); 68 })(); 69</script>
69 70<!-- End Matomo Code --> 71 72 73 74 75 76 77 <link rel="apple-touch-icon" href="https://static.neopse.com/thumbs/p/2755/site/c9/59/be/c959be76e2df582a172b31c468cded04436ad684.png?v=v1"> 78 <link rel="icon" href="https://static.neopse.com/thumbs/p/2755/site/c9/59/be/c959be76e2df582a172b31c468cded04436ad684.png?v=v1"> 79 80 <link rel="preconnect" href="https://fonts.googleapis.com"> 81 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 82 <link href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700|Material+Icons" rel="stylesheet"> 83 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Jost:wght@400;700&family=Lato:wght@400;700&family=Lora:wght@400;700&family=Merriweather:wght@400;700&family=Montserrat:wght@400;700&family=Nunito:wght@400;700&family=Open+Sans:wght@400;700&family=Outfit:wght@400;700&family=Roboto:wght@400;700&family=Roboto+Condensed:wght@400;700&family=Roboto+Slab:wght@400;700&display=swap" rel="stylesheet"> 84 85 <link href='/dist/owlcarousel/css/owl.carousel.min.css' rel='stylesheet' type='text/css'> 86 <link href='/dist/owlcarousel/css/owl.theme.default.min.css' rel='stylesheet' type='text/css'> 87 <link href='/dist/slick/slick.css' rel='stylesheet' type='text/css'> 88 <link href='/dist/slick/slick-theme.css' rel='stylesheet' type='text/css'> 89 <link href='/dist/scrollbar/jquery.scrollbar.css' rel='stylesheet' type='text/css'> 90 <link href='/dist/fullcalendar/fullcalendar.min.css' rel='stylesheet' type='text/css'> 91 <link rel="stylesheet" 92 href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css"> 93 <link href="/tpl/1/css/style.css" rel="stylesheet" type='text/css'> 94 <link rel="stylesheet" 95 href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css"/> 96 97 <link href="/lib/splide-4.0.1/css/splide.min.css" rel="stylesheet" type="text/css"/> 98 <link href="/lib/splide-4.0.1/css/splide-custom.css" rel="stylesheet" type="text/css"/> 99 <style class="notranslate" title="customCss" type="text/css" 100 rel="stylesheet">.bg_bloc { background-color: #90E193 !important; } .table td, .table, .table thead th { border-color: #90E193 !important; } .bg_bloc .dropdown-toggle, .bg_bloc .dropdown-menu {background-color: #90E193 !important;border-color: #90E193 !important;} .fc-unthemed th, .fc-unthemed td, .fc-unthemed thead, .fc-unthemed tbody, .fc-unthemed .fc-divider, .fc-unthemed .fc-row, .fc-unthemed .fc-content, .fc-unthemed .fc-popover, .fc-unthemed .fc-list-view, .fc-unthemed .fc-list-heading td{border-color: #90E193 !important;} .fc-unthemed thead.fc-head, .fc-unthemed .fc-popover .fc-header{ background-color: #90E193 !important; } .fc-unthemed td.fc-today{background: #90E193 !important;} .cookies .btn{ color: #90E193 !important; }body { background-color: #FFFFFF; }.bg_wrapper { background-color: #52AF43 !important; }.c_btn, .c_btn:hover, .c_btn:focus, .c_btn:active { color: #A70F24; } .c_btn:before { background-color: #A70F24 !important; } .owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span, .carousel-indicators .active {background: #A70F24;opacity: 1;} .carousel-indicators li, .owl-theme .owl-dots .owl-dot span{background-color: #A70F24;opacity: 0.5;} .fc-event{ color: #A70F24 !important;}.text_bloc {color:#FFFFFF !important;} .text_bloc .title:before {background-color:#FFFFFF!important;} .bg_bloc .c_text {color:#FFFFFF !important;} .bg_bloc .dropdown-toggle, .bg_bloc .dropdown-menu, .bg_bloc.bootstrap-select .dropdown-toggle::after {color:#FFFFFF !important;} .fc-unthemed thead.fc-head{ color: #FFFFFF !important; } .fc-unthemed td.fc-today{color: #FFFFFF !important;} .cookies .btn{ background-color: #FFFFFF !important; }.footer.bg { background-color: #52AF43; }nav.navbar.bg { background-color: #52AF43; }nav.navbar.bg { background-image: url(https://static.neopse.com/assets/img/textures/black-thread-light.png?v=v1); background-position: center; background-repeat: repeat; }body, .c_text, .container, .carousel-caption .title, .dropdown-item.c_text, .newsletter .requirements { color: #000000; } .slick-prev:before, .slick-next:before { color: #000000; } .c_text.navbar-toggler{ border-color: #000000 !important; } .title:before{ background-color: #000000 !important; } .intern-page .en-tete{ border-left-color: #000000;} .bootstrap-select .dropdown-menu li a{color: #000000;} .bootstrap-select .dropdown-toggle::after{color: #000000;} .fc-button{color: #000000 !important;}.footer .c_btn, .footer .c_btn:hover, .footer .c_btn:focus, .footer .c_btn:active { color: #E9BB0A; } .footer .c_btn:before { background-color: #E9BB0A !important; }nav.navbar .c_btn, nav.navbar .c_btn:hover, nav.navbar .c_btn:focus, nav.navbar .c_btn:active { color: #FFFFFF; }nav.navbar .dropdown-menu { background-color: #52AF43; }.footer .c_text { color: #FFFFFF; }nav.navbar .c_text { color: #FFFFFF; }nav.navbar .h_text:hover { color: #FFFFFF; }.footer .c_title { color: #FFFFFF; } .footer .c_title:before { background-color: #FFFFFF !important; }.breadcrumb.bg { background-color: #A70F24; }nav.navbar .dropdown-menu .c_text { color: #FFFFFF; }nav.navbar .dropdown-menu .h_text:hover { color: #FFFFFF; }nav.navbar .h_text:hover { background-color: #90E193; }body .bg_btn { background-color: #FFFFFF; } body .bg_btn:hover, body .bg_btn:active, body .bg_btn:focus { background-color: #FFFFFF; } .fc-event{ background-color: #FFFFFF !important; border-color: #FFFFFF !important; }#w_headline { background-color: #A70F24; }#w_0zt4n7hl8 .bg { background-color: #90E193; }#w_0zt4n7hl8 .bg { background-image: url(https://static.neopse.com/assets/img/textures/diagonales-decalees.png?v=v1); background-position:center; background-repeat: repeat;}#w_429770mmd .bg { background-color: #A70F24; }#w_429770mmd .bg { background-image: url(https://static.neopse.com/assets/img/textures/black-thread-light.png?v=v1); background-position: center; background-repeat: repeat; }#w_5yupcqsm2 .bg { background-color: #E9BB0A; }#w_5yupcqsm2 .bg { background-image: url(https://static.neopse.com/assets/img/textures/cubes.png?v=v1); background-position: center; background-repeat: repeat; }#w_aosbsketb .bg { background-color: #A70F24; }#w_fs59045t0 .bg { background-color: #A70F24; }#w_fs59045t0 .bg { background-image: url(https://static.neopse.com/assets/img/textures/black-thread-light.png?v=v1); background-position: center; background-repeat: repeat; }#w_headline .c_btn, #w_headline .c_btn:hover, #w_headline .c_btn:focus, #w_headline .c_btn:active { color: #A70F24; } #w_headline .c_btn:before { background-color: #A70F24 !important; } #w_headline .owl-theme .owl-dots .owl-dot.active span,#w_headline .owl-theme .owl-dots .owl-dot:hover span, #w_headline .carousel-indicators .active {background: #A70F24;opacity: 1;} #w_headline .carousel-indicators li, #w_headline .owl-theme .owl-dots .owl-dot span{background-color: #A70F24;opacity: 0.5;}.breadcrumb.bg .c_text { color: #FFFFFF; }nav.navbar .bg_btn, nav.navbar .bg_btn:hover, nav.navbar .bg_btn:active, nav.navbar .bg_btn:focus{ background-color: #90E193; }nav.navbar .dropdown-menu .h_text:hover { background-color: #A70F24; }#w_429770mmd .c_btn, #w_429770mmd .c_btn:hover, #w_429770mmd .c_btn:focus, #w_429770mmd .c_btn:active, #w_429770mmd .card-icon-date .day { color: #E9BB0A; border-color: #E9BB0A; } #w_429770mmd .c_btn:before, #w_429770mmd .owl-theme .owl-dots .owl-dot.active span, #w_429770mmd .owl-theme .owl-dots .owl-dot:hover span, #w_429770mmd .slick-dots .slick-active button:before, #w_429770mmd .card-icon-date .month {background-color: #E9BB0A !important;opacity: 1;} #w_429770mmd .carousel-indicators li, #w_429770mmd .owl-theme .owl-dots .owl-dot span, #w_429770mmd .slick-dots li button:before {background-color: #E9BB0A; opacity: 0.5;}#w_5yupcqsm2 .c_btn, #w_5yupcqsm2 .c_btn:hover, #w_5yupcqsm2 .c_btn:focus, #w_5yupcqsm2 .c_btn:active { color: #000000; } #w_5yupcqsm2 .c_btn.dark:before { background-color: #000000 !important; } #w_5yupcqsm2 .owl-theme .owl-dots .owl-dot.active span, #w_5yupcqsm2 .owl-theme .owl-dots .owl-dot:hover span {background: #000000;opacity: 1;} #w_5yupcqsm2 .carousel-indicators li, #w_5yupcqsm2 .owl-theme .owl-dots .owl-dot span{background-color: #000000;opacity: 0.5;}#w_headline .c_text { color: rgb(167,15,36); } #w_headline .title.c_text:before { background-color: rgb(167,15,36) !important; }.breadcrumb.bg .c_title { color: #FFFFFF; } .breadcrumb.bg .c_title:before { background-color: #FFFFFF !important; }#w_0zt4n7hl8 .c_text { color: #FFFFFF; }#w_429770mmd .c_text { color: #FFFFFF; }#w_5yupcqsm2 .c_text { color: #000000; }#w_0zt4n7hl8 .c_title { color: #A70F24; } #w_0zt4n7hl8 .c_title:before { background-color: #A70F24 !important; }#w_429770mmd .c_title { color: #FFFFFF; } #w_429770mmd .c_title:before { background-color: #FFFFFF !important; }#w_5yupcqsm2 .c_title { color: #FFFFFF !important; } #w_5yupcqsm2 .c_title.dark:before { background-color: #FFFFFF !important; }#w_aosbsketb .c_title { color: #FFFFFF; } #w_aosbsketb .c_title:before { background-color: #FFFFFF !important; }#w_fs59045t0 .c_title { color: #FFFFFF; } #w_fs59045t0 .c_title:before { background-color: #FFFFFF !important; }#w_0zt4n7hl8 .c_title { display: inline-block; }#w_aosbsketb .c_title { display: inline-block; }#w_429770mmd .bg_text { background-color: #FFFFFF; }#w_headline .c_text_responsive { color: #A70F24; } #w_headline .title.c_text_responsive:before { background-color: #A70F24 !important; }/*np-dropdowns*/.bootstrap-select{background-color:#90E193!important;}.bootstrap-select .dropdown-menu{background-color:#90E193!important;border-color:#90E193!important;}.bootstrap-select .dropdown-menu .dropdown-item,.bootstrap-select .dropdown-menu li a,.bootstrap-select .dropdown-menu .dropdown-item:hover,.bootstrap-select .dropdown-menu .dropdown-item:focus,.bootstrap-select .dropdown-menu .dropdown-item.active,.bootstrap-select .dropdown-menu .dropdown-item.selected{background-color:#90E193!important;}.bootstrap-select,.bootstrap-select .dropdown-toggle,.bootstrap-select .dropdown-toggle::after,.bootstrap-select .dropdown-menu,.bootstrap-select .dropdown-menu .c_text,.bootstrap-select .dropdown-menu .dropdown-item,.bootstrap-select .dropdown-menu .dropdown-item:hover,.bootstrap-select .dropdown-menu .dropdown-item:focus,.bootstrap-select .dropdown-menu .dropdown-item.active,.bootstrap-select .dropdown-menu .dropdown-item.selected,.bootstrap-select .dropdown-menu li a,.bootstrap-select .dropdown-menu .text{color:#FFFFFF!important;}</style> 101 102 <meta property="og:url" content=""> 103 <meta property="og:type" content="website"> 104 <meta property="og:title" content="Commune de Villainville"> 105 <meta property="og:description" content="Site officiel de la commune de Villainville 76280, Normandie France"> 106 107
107<script src="/js/vendor/jquery-3.2.1.min.js"></script>
107 108
108<script>tarteaucitron.user.matomoHost = '//matomo.neopse.com/';</script>
108 109 </head> 110 <body> 111 112 <header role="banner"><!-- Top navbar --> 113<nav role="navigation" class="navbar fixed-top navbar-expand-lg bg"> 114 <div class="ov"></div> 115 <div class="container"> 116 <a class="navbar-brand c_text" aria-label="Accueil" href="/fr/"> 117 <h1 class="img"> 118 <picture> 119 <source media="(max-width: 991.98px)" srcset="https://static.neopse.com/medias/p/2755/site/4c/9d/96/4c9d9637b5fb19a3313641044b5569ea550e9329.png"> 120 <img role="img" src="https://static.neopse.com/medias/p/2755/site/4c/9d/96/4c9d9637b5fb19a3313641044b5569ea550e9329.png" alt="Logo Commune de Villainville" loading="eager"> 121 </picture> 122 <span>Commune de Villainville</span> 123 </h1> 124 </a> 125 <button class="navbar-toggler c_text h_text" type="button" data-toggle="collapse" 126 data-target="#navbarNavDropdown" 127 aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation" style="z-index: 100;"> 128 <span class="navbar-toggler-icon"> 129 <i class="material-icons notranslate">menu</i> 130 </span> 131 </button> 132 <div class="collapse navbar-collapse" id="navbarNavDropdown"> 133 <ul class="navbar-nav ml-auto"> 134 <li class="nav-item dropdown"> 135 <a class="nav-link c_text h_text px-3" href="/" role="button"> 136 <i class="material-icons">home</i> 137 </a> 138 </li> 139 <li class="nav-item dropdown"> 140 <a class="nav-link c_text h_text dropdown-toggle" href="#" id="menuDropdown0" role="button" 141 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 142 Accueil 143 </a> 144 <div class="dropdown-menu container bg_text" aria-labelledby="menuDropdown0"> 145 <div class="dropdown-menu-image" aria-hidden="true" 146 style="background-image: url(https://static.neopse.com/thumbs/p/2755/site/10/91/9e/10919e0e43fdd55f9e6909d14a62e544e85636e3.png?v=v1);"></div> 147 148 <div class="container mega-dropdown-menu"> 149 <div class="divider"> 150 151 152 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 153 href="/fr/ct/1722346/contacts-1074"> 154 Contacts 155 </a> 156 157 158 159 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 160 href="/fr/rb/1292449/presentation-de-villainville"> 161 Présentation de Villainville 162 </a> 163 164 165 166 167 168 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 169 href="/fr/tb/1723087/le-conseil-municipal-55"> 170 Le conseil municipal 171 </a> 172 173 174 175 176 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 177 href="/fr/nw/1722424/actualites-1186"> 178 Actualités 179 </a> 180 181 182 183 184 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 185 href="/fr/lk/1722541/les-partenaires-de-la-commune"> 186 Les partenaires de la commune 187 </a> 188 189 190 191 192 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 193 href="/fr/rp/1722892/comptes-rendus-706"> 194 Comptes rendus 195 </a> 196 197 198 199 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem"
200 href="/fr/rb/1577474/plan-local-durbanisme-plu-27"> 201 Plan Local d'Urbanisme (PLU) 202 </a> 203 204 205 206 </div> 207 </div> 208 </div> 209 </li> 210 211 212 <li class="nav-item dropdown"> 213 <a class="nav-link c_text h_text dropdown-toggle" href="#" id="menuDropdown1" role="button" 214 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 215 Les partenaires 216 </a> 217 <div class="dropdown-menu container bg_text" aria-labelledby="menuDropdown1"> 218 <div class="dropdown-menu-image" aria-hidden="true" 219 style="background-image: url(https://static.neopse.com/thumbs/p/2755/site/01/0d/85/010d85908e7bb3ce846804514da827ded2d1d483.png?v=v1);"></div> 220 221 <div class="container mega-dropdown-menu"> 222 <div class="divider"> 223 224 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 225 href="/fr/rb/1291916/les-partenaires-publics"> 226 Les partenaires publics 227 </a> 228 229 230 231 232 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 233 href="/fr/rb/1298234/les-artisans-de-villainville"> 234 Les artisans de Villainville 235 </a> 236 237 238 239 </div> 240 </div> 241 </div> 242 </li> 243 244 245 <li class="nav-item dropdown"> 246 <a class="nav-link c_text h_text dropdown-toggle" href="#" id="menuDropdown2" role="button" 247 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 248 Vie pratique 249 </a> 250 <div class="dropdown-menu container bg_text" aria-labelledby="menuDropdown2"> 251 <div class="dropdown-menu-image" aria-hidden="true" 252 style="background-image: url(https://static.neopse.com/thumbs/p/2755/site/5b/e2/40/5be24085a12ce2edea4fc9073268c799a75eb9f3.png?v=v1);"></div> 253 254 <div class="container mega-dropdown-menu"> 255 <div class="divider"> 256 257 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 258 href="/fr/rb/1291994/se-deplacer-26"> 259 Se déplacer 260 </a> 261 262 263 264 265 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 266 href="/fr/rb/1292072/ou-se-loger-2"> 267 Où se loger ? 268 </a> 269 270 271 272 273 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 274 href="/fr/rb/1291968/gestion-des-dechets-75"> 275 Gestion des déchets 276 </a> 277 278 279 280 281 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 282 href="/fr/rb/1292358/les-demarches-administratives-4"> 283 Les démarches administratives 284 </a> 285 286 287 288 289 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 290 href="/fr/rb/1292033/les-marches-autour-de-villainville"> 291 Les marchés autour de Villainville... 292 </a> 293 294 295 296 297 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 298 href="/fr/rb/1292085/assistantes-maternelles-46"> 299 Assistantes maternelles 300 </a> 301 302 303 304 305 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 306 href="/fr/rb/1292098/la-salle-polyvalente"> 307 La salle polyvalente 308 </a> 309 310 311 312 313 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 314 href="/fr/rb/1292124/eglise-cimetiere-1"> 315 Ãglise-Cimetière 316 </a> 317 318 319 320 321 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem"
322 href="/fr/rb/1509536/communications-1"> 323 Communications 324 </a> 325 326 327 328 329 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 330 href="/fr/rb/1510316/sante-93"> 331 Santé 332 </a> 333 334 335 336 337 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 338 href="/fr/rb/1510381/au-jardin"> 339 Au jardin... 340 </a> 341 342 343 344 </div> 345 </div> 346 </div> 347 </li> 348 349 350 <li class="nav-item dropdown"> 351 <a class="nav-link c_text h_text dropdown-toggle" href="#" id="menuDropdown3" role="button" 352 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 353 Autour de l'école 354 </a> 355 <div class="dropdown-menu container bg_text" aria-labelledby="menuDropdown3"> 356 <div class="dropdown-menu-image" aria-hidden="true" 357 style="background-image: url(https://static.neopse.com/thumbs/p/2755/site/92/65/b8/9265b80c4e8c9818d27114a5e3a419773d26daaa.png?v=v1);"></div> 358 359 <div class="container mega-dropdown-menu"> 360 <div class="divider"> 361 362 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 363 href="/fr/rb/1292228/garderie-periscolaire-19"> 364 Garderie périscolaire 365 </a> 366 367 368 369 370 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 371 href="/fr/rb/1292267/restauration-scolaire-70"> 372 Restauration scolaire 373 </a> 374 375 376 377 378 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 379 href="/fr/rb/1292319/vie-de-lecole"> 380 Vie de l'école 381 </a> 382 383 384 385 </div> 386 </div> 387 </div> 388 </li> 389 390 391 <li class="nav-item dropdown"> 392 <a class="nav-link c_text h_text dropdown-toggle" href="#" id="menuDropdown4" role="button" 393 data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 394 Services aux habitants 395 </a> 396 <div class="dropdown-menu container bg_text" aria-labelledby="menuDropdown4"> 397 398 <div class="container mega-dropdown-menu"> 399 <div class="divider"> 400 401 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem"
402 href="/fr/rb/1515490/maisons-du-territoire-1"> 403 Maisons du territoire 404 </a> 405 406 407 408 409 <a class="dropdown-item c_text h_text bg_h_text" role="menuitem" 410 href="/fr/rb/1515516/facilitez-vos-paiements"> 411 Facilitez vos paiements 412 </a> 413 414 415 416 </div> 417 </div> 418 </div> 419 </li> 420 421 422 423 <li class="nav-item"> 424 <a href="#search-form-collapse" role="button" class="search-button btn c_text h_text" data-toggle="collapse" 425 data-target="#search-form-collapse" aria-expanded="false"> 426 <i class="material-icons">search</i> 427 </a> 428 </li> 429 <form action="/fr/search" class="form-inline nav-link c_text" method="post"> 430 <div class="toggled row collapse" id="search-form-collapse"> 431 <input id="search-form" class="form-control col-lg-8 col-8" type="search" placeholder="Recherche" 432 aria-label="Search" name="keywords"> 433 <button type="submit" class="form-control col-lg-4 col-4 bg_btn c_btn"><i class="material-icons notranslate">search</i></button> 434 </div> 435 </form> 436 437 <li class="nav-item position-relative"> 438 <div role="button" class="cursor-pointer nav-link c_text" data-toggle="collapse" 439 data-target="#google_translate_element" aria-expanded="false" aria-label="Choisir la langue du site" 440 aria-controls="google_translate_element"><i class="material-icons notranslate">language</i> 441 </div> 442 <div id="google_translate_element" class="collapse"> 443 <div id="google_translate"></div> 444 <div class="google_translate_consent" style="width: 200px; height: 60px;"></div> 445 </div> 446 </li> 447 448 </ul> 449 </div> 450 </div> 451</nav> 452</header> 453 454 <main role="main"> 455 <div class="main home"> 456 457 <div id="w_headline"> 458 <!-- A la une - slider --> 459<header class="container slider"> 460 <div id="carouselIndicators" class="carousel slide" data-ride="carousel"> 461 <!-- Bullet navigation --> 462 <ol class="carousel-indicators"> 463 <li data-target="#carouselIndicators" data-sli
463de-to="0" class="active"></li> 464 <li data-target="#carouselIndicators" data-slide-to="1"></li> 465 <li data-target="#carouselIndicators" data-slide-to="2"></li> 466 <li data-target="#carouselIndicators" data-slide-to="3"></li> 467 <li data-target="#carouselIndicators" data-slide-to="4"></li> 468 </ol> 469 470 <div class="carousel-inner"> 471 <div class="carousel-item overlay active"> 472 <img role="img" class="d-block w-100" src="https://static.neopse.com/thumbs/p/2755/site/e3/08/c8/e308c86c138f294f88a8ddbfb3f941670d877080.png?v=v1" alt="urbanisme"/> 473 <div class="carousel-caption"> 474 <h2 class="title c_text"> 475 <a href="https://villainville.fr/fr/rb/1510225/urbanisme-4" class="c_text"> 476 urbanisme 477 </a> 478 </h2> 479 <p class="lead c_text">Guides</p> 480 <a href="https://villainville.fr/fr/rb/1510225/urbanisme-4" class="btn-line light c_btn"> 481 482 Voir plus 483 </a> 484 </div> 485 </div> 486 <div class="carousel-item overlay"> 487 <img role="img" class="d-block w-100" src="https://static.neopse.com/thumbs/p/2755/site/d3/3c/47/d33c4709acc0ff5b78d73cfd76dd0bea0589f896.png?v=v1" alt="Panneau Pocket ..."/> 488 <div class="carousel-caption"> 489 <h2 class="title c_text"> 490 <a href="https://www.panneaupocket.com" class="c_text" target="_blank" > 491 Panneau Pocket ... 492 </a> 493 </h2> 494 <p class="lead c_text">à télécharger sur vos portables !</p> 495 <a href="https://www.panneaupocket.com" class="btn-line light c_btn" target="_blank" > 496 497 Voir plus 498 </a> 499 </div> 500 </div> 501 <div class="carousel-item overlay"> 502 <img role="img" class="d-block w-100" src="https://static.neopse.com/thumbs/p/2755/site/c6/2b/1f/c62b1f72ced5b09fe067f664d23e2d1898637d37.png?v=v1" alt="PLUI"/> 503 <div class="carousel-caption"> 504 <h2 class="title c_text"> 505 <a href="/fr/nw/1722424/1223211/plan-local-durbanisme-intercommunal-plui-1" class="c_text"> 506 PLUI 507 </a> 508 </h2> 509 <p class="lead c_text">Concertation</p> 510 <a href="/fr/nw/1722424/1223211/plan-local-durbanisme-intercommunal-plui-1" class="btn-line light c_btn"> 511 512 Voir plus 513 </a> 514 </div> 515 </div> 516 <div class="carousel-item overlay"> 517 <img role="img" class="d-block w-100" src="https://static.neopse.com/thumbs/p/2755/site/c2/2e/ff/c22eff5c4bcf26d08dca6d5e8215ba015aa1e7f1.png?v=v1" alt="Contrôle d'accès aux centres de recyclage"/> 518 <div class="carousel-caption"> 519 <h2 class="title c_text"> 520 <a href="/fr/nw/1722424/1211745/ouverture-d-un-nouveau-centre-de-recyclage-ainsi-que-d-une-recyclerie" class="c_text"> 521 Contrôle d'accès aux centres de recyclage 522 </a> 523 </h2> 524 <p class="lead c_text">Dès Janvier 2023 !</p> 525 <a href="/fr/nw/1722424/1211745/ouverture-d-un-nouveau-centre-de-recyclage-ainsi-que-d-une-recyclerie" class="btn-line light c_btn"> 526 527 Voir plus 528 </a> 529 </div> 530 </div> 531 <div class="carousel-item overlay"> 532 <img role="img" class="d-block w-100" src="https://static.neopse.com/thumbs/p/2755/site/37/fd/a6/37fda6d9b898b39aa1d6bba2a68097241d508586.png?v=v1" alt="Des réponses pour votre habitat"/> 533 <div class="carousel-caption"> 534 <h2 class="title c_text"> 535 <a href="/fr/nw/1722424/1951601/caue-communique" class="c_text"> 536 Des réponses pour votre habitat 537 </a> 538 </h2> 539 <p class="lead c_text">CAUE</p> 540 <a href="/fr/nw/1722424/1951601/caue-communique" class="btn-line light c_btn"> 541 542 Voir plus 543 </a> 544 </div> 545 </div> 546 547 </div> 548 </div> 549</header> 550 551 </div> 552 553 <div id="w_5yupcqsm2"> 554 <!-- Actualités --> 555<section class="bg actu"> 556 <div class="ov"></div> 557 <div class="container"> 558 <div class="clearfix"> 559 <h2 class="title dark c_title d_title">Actualités</h2> 560 <a href="/fr/nw/1722424/actualites-1186" class="btn-line dark float-right c_btn" aria-label="Voir tout">Voir tout</a> 561 </div> 562 563 <div class="carousel-3 owl-carousel owl-theme"> 564 <a href="/fr/nw/1722424/2868504/transport-scolaire-nomad-rentree-2026-2027" class="card item" aria-label="Actualité: Transport scolaire NOMAD-rentrée 2026-2027"> 565 <div class="card-button black card-button-no"> 566 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/89/6a/89/896a898bf5d9259713a52ccb13a26367f4c231fc.png?v=v1" alt=""> 567 </div> 568 <div class="card-body card-body-no"> 569 <h3 class="card-title c_text">Transport scolaire NOMAD-rentrée 2026-2027</h3> 570 <p class="card-text c_text"></p> 571 </div> 572 </a> 573 <a href="/fr/nw/1722424/2294710/ateliers-numeriques-26" class="card item" aria-label="Actualité: Ateliers Numériques"> 574 <div class="card-button black card-button-no"> 575 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/57/f9/59/57f959c400c01971da3f3a55684f210cc0cf0c2b.png?v=v1" alt=""> 576 </div> 577 <div class="card-body card-body-no"> 578 <h3 class="card-title c_text">Ateliers Numériques</h3> 579 <p class="card-text c_text">2ème trimestre 2026</p> 580 </div> 581 </a> 582 <a href="/fr/nw/1722424/1223211/plan-local-durbanisme-intercommunal-plui-1" class="card item" aria-label="Actualité: Plan Local dâUrbanisme intercommunal (PLUi)"> 583 <div class="card-button black card-button-no"> 584 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/f3/cb/05/f3cb05787f73ae8981787ac724c3a8a380a375f1.png?v=v1" alt=""> 585 </div> 586 <div class="card-body card-body-no"> 587 <h3 class="card-title c_text">Plan Local dâUrbanisme intercommunal (PLUi)</h3> 588 <p class="card-text c_text">Le Plan Local Dâurbanisme intercommunal (PLUi) Le Havre Seine Métropole est disponible !</p> 589 </div> 590 </a> 591 <a href="/fr/nw/1722424/1211745/ouverture-d-un-nouveau-centre-de-recyclage-ainsi-que-d-une-recyclerie" class="card item" aria-label="Actualité: Ouverture d'un nouveau centre de recyclage ainsi que d'une recyclerie"> 592 <div class="card-button black card-button-no"> 593 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/d1/fb/fe/d1fbfee100b1979d03d81dfbefc3ab10e154f755.png?v=v1" alt=""> 594 </div> 595 <div class="card-body card-body-no"> 596 <h3 class="card-title c_text">Ouverture d'un nouveau centre de recyclage ainsi que d'une recyclerie</h3> 597 <p class="card-text c_text">A partir du 13 avril 2026</p> 598 </div> 599 </a> 600 <a href="/fr/nw/1722424/2782067/inscriptions-pour-la-rentree-2026" class="card item" aria-label="Actualité: inscriptions pour la rentrée 2026"> 601 <div class="card-button black card-button-no"> 602 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/af/79/59/af7959829df005f5a468a169af69f92763f930e1.png?v=v1" alt=""> 603 </div> 604 <div class="card-body card-body-no"> 605 <h3 class="card-title c_text">inscriptions pour la rentrée 2026</h3> 606 <p class="card-text c_text"></p> 607 </div> 608 </a> 609 <a href="/fr/nw/1722424/2780910/conseil-municipal-dinstallation-6" class="card item" aria-label="Actualité: Conseil Municipal d'installation"> 610 <div class="card-button black card-button-no"> 611 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/d8/73/dc/d873dcf59a66530a73b644d138da054a097f31fd.png?v=v1" alt=""> 612 </div> 613 <div class="card-body card-body-no"> 614 <h3 class="card-title c_text">Conseil Municipal d'installation</h3> 615 <p class="card-text c_text">L'installation du nouveau conseil municipal, suivie de l'élection du maire et des adjoints se tiendra le vendredi 20 mars 2026 à 19h00 à la mairie.</p> 616 </div> 617 </a> 618 <a href="/fr/nw/1722424/1951601/caue-communique" class="card item" aria-label="Actualité: CAUE communique..."> 619 <div class="card-button black card-button-no"> 620 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/fc/aa/59/fcaa59f4ae88f0ec92bd5d22a35424910a70bf9d.png?v=v1" alt=""> 621 </div> 622 <div class="card-body card-body-no"> 623 <h3 class="card-title c_text">CAUE communique...</h3> 624 <p class="card-text c_text">Des conseils gratuits pour votre habitat</p> 625 </div> 626 </a> 627 <a href="/fr/nw/1722424/1223146/des-conteneurs-a-verre-connectes" class="card item" aria-label="Actualité: De
627s conteneurs à "verre" connectés !!!"> 628 <div class="card-button black card-button-no"> 629 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/d0/58/62/d05862047e9110eab7cf5c4b680d890993388303.png?v=v1" alt=""> 630 </div> 631 <div class="card-body card-body-no"> 632 <h3 class="card-title c_text">Des conteneurs à "verre" connectés !!!</h3> 633 <p class="card-text c_text">Nouveau à Villainville</p> 634 </div> 635 </a> 636 <a href="/fr/nw/1722424/1129962/filbus-document" class="card item" aria-label="Actualité: Filbus : document"> 637 <div class="card-button black card-button-no"> 638 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/7b/c5/9d/7bc59d43d2588c82380cec07ee3644eb6af47b55.png?v=v1" alt=""> 639 </div> 640 <div class="card-body card-body-no"> 641 <h3 class="card-title c_text">Filbus : document</h3> 642 <p class="card-text c_text">Septembre 2022</p> 643 </div> 644 </a> 645 <a href="/fr/nw/1722424/971531/les-jeux-du-parcours-sante-sont-installes-dans-le-verger" class="card item" aria-label="Actualité: Les jeux du parcours santé sont installés dans le Verger"> 646 <div class="card-button black card-button-no"> 647 <img role="img" class="card-img-top img-fluid" src="https://static.neopse.com/thumbs/p/2755/site/ca/d6/86/cad686b34860ffe39439b2ea2057219839552fee.png?v=v1" alt=""> 648 </div> 649 <div class="card-body card-body-no"> 650 <h3 class="card-title c_text">Les jeux du parcours santé sont installés dans le Verger</h3> 651 <p class="card-text c_text">à vos baskets !!!</p> 652 </div> 653 </a> 654 </div> 655 </div> 656</section> 657 658 </div> 659 <div id="w_fs59045t0"> 660 <div class="map bg"> 661 <div class="ov"></div> 662 <div class="d-flex justify-content-center align-items-center"> 663 <div class="btn-container"> 664 <a href="/fr/ap/1723048/plan-acces-754" class="d-flex justify-content-center align-items-center"> 665 <h2 class="title btn-line light large c_title"> 666 Plan/Accès 667 </h2> 668 </a> 669 </div> 670 671 <div id="access-plan-map-container" class="overlay"> 672 <div id="access-plan-geoloc-map" class="overlay"></div> 673 <a href="https://www.openstreetmap.org/copyright" class="osm-copyright" target="_blank"> © OpenStreetMap</a> 674 </div> 675 </div> 676 <link href="/lib/leaflet/leaflet.css" rel="stylesheet" type='text/css'> 677 <link rel="stylesheet" href="/lib/leaflet-markers/leaflet.awesome-markers.css"> 678
678<script src="/lib/leaflet/leaflet-src.js"></script>
678 679
679<script src="/lib/leaflet-markers/leaflet.awesome-markers.js"></script>
679 680 <style> 681#access-plan-map-container { 682 width: 100%; 683 } 684 #access-plan-geoloc-map { 685 height: 25rem; 686 width: 100%; 687 z-index: 0; 688 } 689 </style> 690
690<script> 691 $(document).ready(function () { 692 var myAccessPlanLatLng = [49.660800, 0.243611]; 693 var accessPlanMap = L.map('access-plan-geoloc-map').setView(myAccessPlanLatLng, 17); 694 695 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 696 maxZoom: 18, 697 attribution: false, 698 id: 'mapbox.streets' 699 }).addTo(accessPlanMap); 700 701 var myAccessIcon = L.divIcon({ 702 className: 'material-icons mapMarkers', 703 html: 'location_on', 704 iconAnchor: [16, 32] 705 }); 706 707 L.marker(myAccessPlanLatLng, {'icon':myAccessIcon}).addTo(accessPlanMap); 708 709 var currentMarker = $('#access-plan-geoloc-map').find('.mapMarkers'); 710 711 var currentStyle = currentMarker.attr('style'); 712 currentStyle += 'color:#990000 !important;'; 713 currentMarker.attr('style',currentStyle); 714 }); 715 </script>
715 716 </div> 717 718 </div> 719 720 721 </div> 722 723 </main> 724 725 <div id="previewModalImage" class="modal"> 726 727 <!-- The Close Button --> 728 <span id="closePreviewImage" class="close">×</span> 729 730 <!-- Navigation Buttons --> 731 <a id="prevImage" class="modal-nav prev" href="javascript:void(0)">❮</a> 732 <a id="nextImage" class="modal-nav next" href="javascript:void(0)">❯</a> 733 734 <!-- Image Counter --> 735 <div id="imageCounter" class="image-counter"></div> 736 737 <!-- Modal Content (The Image) --> 738 <div id="containerPreviewImage"><img role="img" class="modal-content" alt=""></div> 739 740 <!-- Modal Caption (Image Text) --> 741 <div id="captionPreviewImage"></div> 742 </div> 743 744
744<script> 745 (function() { 746 // Get the modal elements 747 const modal = document.getElementById('previewModalImage'); 748 const modalImg = modal.querySelector('img'); 749 const captionText = document.getElementById('captionPreviewImage'); 750 const closePreviewImage = document.getElementById('closePreviewImage'); 751 const prevBtn = document.getElementById('prevImage'); 752 const nextBtn = document.getElementById('nextImage'); 753 const imageCounter = document.getElementById('imageCounter'); 754 755 let currentImages = []; 756 let currentIndex = 0; 757 758 // Helper function to check if element is visible 759 function isVisible(element) { 760 return element && element.offsetParent !== null; 761 } 762 763 // Helper function to toggle element visibility 764 function toggleElement(element, show) { 765 if (element) { 766 element.style.display = show ? 'block' : 'none'; 767 } 768 } 769 770 // Function to update the modal with a specific image 771 function updateModal(index) { 772 if (currentImages.length === 0) return; 773 774 currentIndex = index; 775 const img = currentImages[currentIndex]; 776 modalImg.setAttribute('src', img.src); 777 modalImg.setAttribute('alt', img.alt || ''); 778 captionText.innerHTML = img.alt || ''; 779 780 // Update counter 781 imageCounter.textContent = (currentIndex + 1) + ' / ' + currentImages.length; 782 783 // Show/hide navigation buttons 784 const showNav = currentImages.length > 1; 785 toggleElement(prevBtn, showNav); 786 toggleElement(nextBtn, showNav); 787 toggleElement(imageCounter, showNav); 788 } 789 790 // Function to show next image 791 function showNext() { 792 if (currentImages.length === 0) return; 793 currentIndex = (currentIndex + 1) % currentImages.length; 794 updateModal(currentIndex); 795 } 796 797 // Function to show previous image 798 function showPrev() { 799 if (currentImages.length === 0) return; 800 currentIndex = (currentIndex - 1 + currentImages.length) % currentImages.length; 801 updateModal(currentIndex); 802 } 803 804 // Helper function to find closest ancestor with class 805 function closest(element, selector) { 806 if (!element) return null; 807 808 // For class selector (e.g., '.splide__slide') 809 if (selector.startsWith('.')) { 810 const className = selector.slice(1); 811 let current = element; 812 while (current && current !== document) { 813 if (current.classList && current.classList.contains(className)) { 814 return current; 815 } 816 current = current.parentElement; 817 } 818 } 819 return null; 820 } 821 822 // When clicking on an image 823 document.addEventListener('click', function(e) { 824 const target = e.target; 825 // Check if clicked element is an image with class .img or .main-img inside .splide 826 if (target.tagName === 'IMG' && 827 (target.classList.contains('img') || target.classList.contains('main-img')) && 828 closest(target, '.splide')) { 829 830 // Find the clicked image's parent slide 831 const clickedSlide = closest(target, '.splide__slide'); 832 if (!clickedSlide) return; 833 834 // Find the list that contains this slide 835 const splideList = closest(clickedSlide, '.splide__list'); 836 if (!splideList) return; 837 838 // Get all slides from this specific list 839 const allSlides = splideList.querySelectorAll('.splide__slide'); 840 841 // Get all images from these slides only, deduplicating by src 842 // (Splide duplicates slides in loop mode, so we need to filter duplicates) 843 currentImages = []; 844 const seenSrcs = new Set(); 845 const clickedSrc = target.src; 846
847 allSlides.forEach(function(slide) { 848 const slideImg = slide.querySelector('.img, .main-img'); 849 if (slideImg) { 850 const imgSrc = slideImg.src; 851 // Only add if we haven't seen this src before 852 if (!seenSrcs.has(imgSrc)) { 853 seenSrcs.add(imgSrc); 854 currentImages.push(slideImg); 855 } 856 } 857 }); 858 859 // Find the index of the clicked image by src (to handle duplicates) 860 currentIndex = currentImages.findIndex(function(img) { 861 return img.src === clickedSrc; 862 }); 863 864 if (currentIndex === -1) { 865 currentIndex = 0; // Fallback to first image 866 } 867 868 // Update and show modal 869 updateModal(currentIndex); 870 modal.style.display = 'block'; 871 } 872 }); 873 874 // Navigation button handlers 875 if (nextBtn) { 876 nextBtn.addEventListener('click', function (e) { 877 e.preventDefault(); 878 e.stopPropagation(); 879 showNext(); 880 }); 881 } 882 883 if (prevBtn) { 884 prevBtn.addEventListener('click', function (e) { 885 e.preventDefault(); 886 e.stopPropagation(); 887 showPrev(); 888 }); 889 } 890 891 // Keyboard navigation 892 document.addEventListener('keydown', function (e) { 893 // Check if modal is visible by checking display style 894 const isModalVisible = modal.style.display !== 'none' && 895 (modal.style.display === 'block' || 896 window.getComputedStyle(modal).display !== 'none'); 897 898 if (isModalVisible) { 899 if (e.key === 'ArrowRight' || e.keyCode === 39) { 900 e.preventDefault(); 901 showNext(); 902 } else if (e.key === 'ArrowLeft' || e.keyCode === 37) { 903 e.preventDefault(); 904 showPrev(); 905 } else if (e.key === 'Escape' || e.keyCode === 27) { 906 e.preventDefault(); 907 e.stopPropagation(); 908 modal.style.display = 'none'; 909 } 910 } 911 }); 912 913 // When the user clicks on <span> (x), close the modal 914 if (closePreviewImage) { 915 closePreviewImage.addEventListener('click', function () { 916 modal.style.display = 'none'; 917 }); 918 } 919 920 // Close modal when clicking outside the image 921 modal.addEventListener('click', function (e) { 922 if (e.target === modal) { 923 modal.style.display = 'none'; 924 } 925 }); 926 })(); 927 </script>
927 928 929 930 931 <!-- Footer --> 932<footer role="contentinfo" class="footer bg footer1"> 933 <div class="ov"></div> 934 <div class="container d-flex flex-wrap justify-content-between"> 935 <div class="footer-container"> 936 <h2 class="title light c_title d_title btn-line"><a 937 href="/fr/ct/1722346/contacts-1074">Contacts</a></h2> 938<div class="footer-box"> 939 <div class="contact c_text"> 940 <p class="font-weight-bold mb-0" aria-label="Nom du structure">Commune de Villainville</p> 941 <p class="mb-0" aria-label="adresse">704, route d'Ãtretat</p> 942 <p class="mb-0" aria-label="adresse 2">76280 Villainville - FRANCE</p> 943 <p class="mb-0"><a href="tel:+33235298559" title="Numéro de téléphone">+33 2 35 29 85 59</a></p> 944 <p class="mb-0"><a style="display:initial;" class="btn-line footer-btn light c_btn" href="#" data-toggle="modal" data-target="#contactFormContactFooter" aria-label="Afficher le formulaire">Contact par formulaire</a> 945 </p> 946 947 <div class="mt-4"> 948 <p style="margin:0;"><strong>HORAIRES</strong></p> 949 <p><strong><span style="color:#f39c12">Accueil public par la secrétaire de mairie:</span></strong><br /> 950Lundi:9h00-12h/13h30-16h00<br /> 951Mardi:9h00-12h/13h30-16h00<br /> 952Jeudi:9h00-12h<br /> 953<br /> 954<strong><span style="color:#f39c12">Accueil public avec Monsieur le Maire ou adjoint:</span></strong><br /> 955les samedis de 9h30 à 11h00.<br /> 956<br /> 957Pour les dépôts de dossiers d’urbanisme, location de salle, état civil, recensement citoyen, RDV avec Monsieur le Maire ou adjoints...<br /> 958<br /> 959Pour prendre rendez-vous, vous devez contacter la mairie de Villainville par courriel à : [email protected]</p> 960 </div> 961 </div> 962 963 964</div> 965 966 967 968 <div class="social-media"> 969 <ul class="c_text"> 970 </ul> 971</div> 972 973 974 </div> 975 976 977 </div> 978 <div class="container d-flex flex-wrap position-relative c_text"> 979 <p class="mr-2 c_text"><a href="/fr/li/1722385/mentions-legales-1238">Mentions légales</a> 980</p> - 981 <p class="mr-2 ml-2 c_text"><a href="/fr/1722385/politique-confidentialite">Politique de confidentialité</a> 982</p> - 983 <p class="mr-2 ml-2 c_text"><a href="/fr/accessibilite">Accessibilité</a> 984</p> - 985 986 <p class="mr-2 ml-2 c_text"> 987 <a href="/fr/sm/71622/plan-du-site-1"> 988 Plan du site</a></p>- 989 <p class="ml-2 c_text"><a href="#tarteaucitron">Gestion des cookies</a></p> 990 </div> 991</footer> 992 993<div class="modal fade" id="contactFormContactFooter" tabindex="-1" role="dialog" aria-labelledby="modalFooter-label" aria-hidden="true" 994 style="color:initial;-webkit-transform: translateZ(0);transform: translateZ(0);"> 995 <div class="modal-dialog" role="document"> 996 <div class="modal-content"> 997 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 998 <span aria-hidden="true">×</span> 999 </button> 1000 1001 <div class="modal-header bg_bloc"> 1002 <h4 id="modalFooter-label" class="modal-title font-weight-bold dark text_bloc">Contact Mairie</h4> 1003 </div> 1004 <form id="contactFormFooter" action="/formMdContact" method="post" 1005 novalidate enctype="multipart/form-data"> 1006 <div class="modal-body pb-0"> 1007 1008 <div class="field-wrapper"><p class="title">Contact Mairie</p></div> <div class="field-wrapper"> 1009 <div><label class="control-label generalLabel font-weight-bold mr-1">Destinataire de votre message <span 1010 class="cursor-pointer" data-toggle="popover" data-content="Sélectionnez"><i 1011 class="material-icons align-top">info_outline</i></span> </label><span>*</span></div> 1012 1013 <div class="form-check d-block"> 1014 <label class="form-check-label"><input class="form-check-input" type="checkbox" name="2_check_list[]" value="Karine Ramain- Maire">Karine Ramain- Maire<span 1015 class="form-check-sign"><span class="check"></span></span></label> 1016 </div> 1017 <div class="form-check d-block"> 1018 <label class="form-check-label"><input class="form-check-input" type="checkbox" name="2_check_list[]" value="Agnès Lenormand- 1ère adjointe">Agnès Lenormand- 1ère adjointe<span 1019 class="form-check-sign"><span class="check"></span></span></label> 1020 </div> 1021 <div class="form-check d-block"> 1022 <label class="form-check-label"><input class="form-check-input" type="checkbox" name="2_check_list[]" value="Secretariat de mairie ">Secretariat de mairie <span 1023 class="form-check-sign"><span class="check"></span></span></label> 1024 </div>
1025 <span class="form-error requirements" id="2_check_list-error" role="alert">Ce champ est obligatoire</span> 1026</div> <div class="form-group"> 1027 <div><label for="3_email">Votre adresse e-mail</label><span>*</span></div> 1028 <input type="email" name="3_email" class="form-control" id="3_email" 1029 aria-label="Votre adresse e-mail"> 1030 <span class="help-message cursor-pointer" data-toggle="popover" data-content="Veuillez"><i 1031 class="material-icons">info_outline</i></span> <span class="form-error requirements" id="3_email-error" role="alert">Ce champ est obligatoire</span> 1032</div> 1033 <div class="form-group"> 1034 <div><label for="4_date" id="4_dateLabel">Date</label><span>*</span></div> 1035 <div class="d-flex align-items-end"> 1036 <div class="col-10 col-md-5 mr-3 px-0"> 1037 <input type="date" name="4_date" class="form-control" id="4_date" aria-describedby="4_dateLabel" placeholder="Date"> 1038 <span class="help-message"><i class="material-icons notranslate">date_range</i></span> 1039 </div> 1040 <div data-toggle="popover" data-content=""> 1041 </div> 1042 </div> 1043 <span class="form-error requirements" id="4_date-error" role="alert">Ce champ est obligatoire</span> 1044</div> 1045 <div class="form-group"> 1046 <div><label for="5_textarea">Nom</label><span></span> 1047 </div> 1048 <textarea name="5_textarea" class="form-control pl-0" id="5_textarea" rows="3"></textarea> 1049 <span class="form-error requirements" id="5_textarea-error" role="alert">Ce champ est obligatoire</span> 1050</div> 1051 <div class="form-group"> 1052 <div class="h-recaptcha m-auto d-inline-block"></div> 1053 <div class="form-error requirements" id="h-captcha-response-error" role="alert">Ce champ est obligatoire 1054 </div> 1055</div> </div> 1056 <div class="modal-footer"> 1057 <button id="formContactForm" type="submit" class="btn bg_btn c_btn formContactForm" aria-label="Envoyer">ENVOYER</button> 1058 </div> 1059 <div class="m-3"> 1060 Les informations recueillies à partir de ce formulaire sont nécessaires à la gestion de votre demande par notre Structure qui est responsable du traitement de vos données personnelles collectées.<br /> 1061Vos donn<span style="color:null"><span style="background-color:null">ées personnelles reçues sont conservées par notre Structure pendant toute la durée nécessaire au traitement de votre demande ou bien pour une durée de […….] mois maximum à compter du dernier contact. Dans la limite de leurs attributions respectives, sont destinataires de tout ou partie des données les services et représentants de notre Structure en charge des réponses aux demandes émises via ce formulaire. Aucun transfert de vos données hors de l'Union européenne n'est réalisé. </span><br /> 1062<span style="background-color:null">Vous pouvez à tout moment demander l’accès, la rectification, l’effacement, la portabilité ou la limitation de vos données, ou bien vous opposer à leur traitement, en contactant le Délégué à la Protection des Données de notre structure : </span><br /> 1063<span style="background-color:null">- Par voie électronique à l’adresse : […….] ; </span><br /> 1064<span style="background-color:null">- Par voie postale à l’attention du Délégué à la Protection des Données et à l’adresse suivante : […….]. </span><br /> 1065<span style="background-color:null">Si vous estimez, après nous avoir contactés, que vos droits sur vos données personnelles ne sont pas respectés, vous pou</span></span>vez adresser une réclamation à la CNIL. 1066 </div> 1067 </form> 1068 1069 <div id="messageSendedFormContactFooter" class="form-message-sent" style="display: none"> 1070 <p role="status">Le message a bien été envoyé à son destinataire. Merci.</p> 1071 </div> 1072 </div> 1073 </div> 1074</div> 1075 1076 <div class="footer-bottom" style="position: relative;"> 1077 <div class="container"> 1078 <p> 1079 <a href="https://reseaudescommunes.fr/?utm_source=rdcclients&utm_medium=footerlink" target="_blank"> 1080 <img role="img" src="/images/rdc-logo-footer-2.png" alt="logo Réseau des Communes" class="img-fluid">
1081 Site créé en partenariat avec Réseau des Communes 1082 </a> 1083 </p> 1084 </div> 1085</div> 1086 <div class="modal fade pdfModal" id="pdfModal" tabindex="-1" role="dialog" aria-label="Prévisualisation du PDF" aria-hidden="true"> 1087 <div class="modal-dialog" role="document"> 1088 <div class="modal-content"> 1089 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 1090 <span aria-hidden="true">×</span> 1091 </button> 1092 1093 <embed type="application/pdf"> 1094 </div> 1095 </div> 1096</div> 1097 1098 1099
1099<script src="/js/vendor/popper.min.js"></script>
1099 1100
1100<script src="/js/vendor/bootstrap.min.js"></script>
1100 1101 1102 <!-- Carousel --> 1103
1103<script src='/dist/owlcarousel/js/owl.carousel.min.js'></script>
1103 1104
1104<script src='/dist/owlcarousel/js/owl.linked.js'></script>
1104 1105 1106
1106<script src="/lib/splide-4.0.1/js/splide.min.js"></script>
1106 1107
1107<script src="/lib/splide-4.0.1/extensions/autoscroll/js/splide-extension-auto-scroll.min.js"></script>
1107 1108 1109
1109<script src='/dist/slick/slick.js'></script>
1109 1110
1110<script src='/dist/scrollbar/jquery.scrollbar.min.js'></script>
1110 1111 1112
1112<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>
1112 1113 1114
1114<script src='/dist/pagination.min.js'></script>
1114 1115 1116
1116<script src="/js/shared.js?v1"></script>
1116 1117
1117<script src="/tpl/1/js/main.js"></script>
1117 1118
1118<script src="/lib/chartjs/Chart.js"></script>
1118 1119
1119<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
1119 1120 1121
1121<script type="text/javascript"> 1122 1123 tarteaucitron.user.matomoId = 6; 1124 (tarteaucitron.job = tarteaucitron.job || []).push('matomohightrack'); 1125 1126 1127 (tarteaucitron.job = tarteaucitron.job || []).push('youtube'); 1128 (tarteaucitron.job = tarteaucitron.job || []).push('dailymotion'); 1129 (tarteaucitron.job = tarteaucitron.job || []).push('vimeo'); 1130 (tarteaucitron.job = tarteaucitron.job || []).push('othervideo'); 1131 1132 tarteaucitron.user.googleTranslateCallback = function () { 1133 new google.translate.TranslateElement({pageLanguage: 'fr'}, 'google_translate'); 1134 }; 1135 (tarteaucitron.job = tarteaucitron.job || []).push('googletranslate'); 1136 </script>
1136 1137 1138 1139 1140
1140<script src="/js/hammer/hammer.min.js"></script>
1140 1141
1141<script> 1142 $(function () { 1143 var hammertime = new Hammer($('#carouselIndicators')[0]); 1144 1145 hammertime.get('swipe').set({direction: Hammer.DIRECTION_HORIZONTAL, threshold: 0}); 1146 1147 hammertime.on("swipeleft", function () { 1148 $('#carouselIndicators').carousel('next'); 1149 }); 1150 hammertime.on("swiperight", function () { 1151 $('#carouselIndicators').carousel('prev'); 1152 }); 1153 }); 1154 </script>
1154 1155
1155<script> 1156 // gestion responsive sur custom css 1157 1158 //WIDGET UNES 1159 1160 // récupération des stylessheets 1161 var styleSheetList = document.styleSheets; 1162 var currentCustomCss = false; 1163 1164 for (let i = 0; i < styleSheetList.length; i++) { 1165 if (styleSheetList[i].title === "customCss") { 1166 currentCustomCss = styleSheetList[i]['cssRules']; 1167 } 1168 } 1169 1170 // récupération des valeurs par défauts 1171 1172 var originalCTextColor = false; 1173 var originalCBtnColor = false; 1174 var originalCarouselIndicatorColor = false; 1175 1176 var currentCTextColor = false; 1177 var currentCBtnColor = false; 1178 1179 var currentCBtnColorBefore = false; 1180 var currentCTextColorBefore = false; 1181 var currentCarouselIndicatorBefore = false; 1182 1183 for (let i = 0; i < currentCustomCss.length; i++) { 1184 1185 if (currentCustomCss[i]['selectorText'] === '.c_btn') { 1186 originalCBtnColor = currentCustomCss[i].style.color; 1187 } 1188 1189 // if(currentCustomCss[i]['selectorText'].includes('.c_text, .container,')){ 1190 // originalCTextColor = currentCustomCss[i].style.color; 1191 // } 1192 1193 if (currentCustomCss[i]['selectorText'].includes('.c_text_responsive')) { 1194 1195 if (currentCustomCss[i].style.color != "") { 1196 originalCTextColor = currentCustomCss[i].style.color; 1197 } 1198 1199 } 1200 1201 if (currentCustomCss[i]['selectorText'].includes('.carousel-indicators .active')) { 1202 originalCarouselIndicatorColor = currentCustomCss[i].style.backgroundColor; 1203 } 1204 } 1205 1206 1207 function myFunction(screen) { 1208 1209 if (screen.matches) { // If media query matches 1210 for (let i = 0; i < currentCustomCss.length; i++) { 1211 1212 //.c_btn 1213 if (currentCustomCss[i]['selectorText'] === "#w_headline .c_btn") { 1214 if (currentCBtnColor == false) { 1215 currentCBtnColor = currentCustomCss[i].style.color; 1216 } 1217 1218 currentCustomCss[i].style.setProperty('color', originalCBtnColor, 'important'); 1219 } 1220 1221 if (currentCustomCss[i]['selectorText'] === "#w_headline .c_btn::before") { 1222 if (currentCBtnColorBefore == false) { 1223 currentCBtnColorBefore = currentCustomCss[i].style.backgroundColor; 1224 } 1225 currentCustomCss[i].style.setProperty('background-color', originalCBtnColor, 'important'); 1226 } 1227 1228 //.c_text 1229 if (currentCustomCss[i]['selectorText'] === "#w_headline .c_text") { 1230 if (currentCTextColor == false) { 1231 currentCTextColor = currentCustomCss[i].style.color; 1232 } 1233 currentCustomCss[i].style.setProperty('color', originalCTextColor, 'important'); 1234 } 1235 1236 if (currentCustomCss[i]['selectorText'] === "#w_headline .title.c_text::before") { 1237 if (currentCTextColorBefore == false) { 1238 currentCTextColorBefore = currentCustomCss[i].style.backgroundColor; 1239 } 1240 currentCustomCss[i].style.setProperty('background-color', originalCTextColor, 'important'); 1241 } 1242 1243 //indicators 1244 if (currentCustomCss[i]['selectorText'].includes("#w_headline .carousel-indicators .active")) { 1245 if (currentCarouselIndicatorBefore == false) { 1246 currentCarouselIndicatorBefore = currentCustomCss[i].style.backgroundColor; 1247 } 1248 currentCustomCss[i].style.setProperty('background-color', originalCarouselIndicatorColor, 'important'); 1249 } 1250 1251 if (currentCustomCss[i]['selectorText'].includes("#w_headline .carousel-indicators li")) { 1252 currentCustomCss[i].style.setProperty('background-color', originalCarouselIndicatorColor, 'important'); 1253 } 1254 } 1255 } else { 1256 for (let i = 0; i < currentCustomCss.length; i++) { 1257 1258 //.c_btn 1259 if (currentCustomCss[i]['selectorText'] === "#w_headline .c_btn") { 1260 currentCustomCss[i].style.setProperty('color', currentCBtnColor, 'important'); 1261 } 1262 1263 if (currentCustomCss[i]['selectorText'] === "#w_headline .c_btn::before") { 1264 currentCustomCss[i].style.setProperty('background-color', currentCBtnColorBefore, 'important'); 1265 } 1266 1267 //.c_text 1268 if (currentCustomCss[i]['selectorText'] === "#w_headline .c_text") { 1269 currentCustomCss[i].style.setProperty('color', currentCTextColor, 'important'); 1270 } 1271 1272 if (currentCustomCss[i]['selectorText'] === "#w_headline .title.c_text::before") { 1273 currentCustomCss[i].style.setProperty('background-color', currentCTextColorBefore, 'important'); 1274 } 1275 1276 //indicators 1277 if (currentCustomCss[i]['selectorText'].includes("#w_headline .carousel-indicators .active")) { 1278 currentCustomCss[i].style.setProperty('background-color', currentCarouselIndicatorBefore, 'important'); 1279 } 1280 1281 if (currentCustomCss[i]['selectorText'].includes("#w_headline .carousel-indicators li")) { 1282 currentCustomCss[i].style.setProperty('background-color', currentCarouselIndicatorBefore, 'important'); 1283 } 1284 } 1285 } 1286 } 1287 1288 var screenTablet = window.matchMedia("(max-width: 979px)"); 1289 myFunction(screenTablet); // Call listener function at run time 1290 screenTablet.addEventListener('change', myFunction); // Attach listener function on state changes 1291 1292 1293 </script>
1293 1294 1295
1295<script type="text/javascript"> 1296 $(document).ready(function () { 1297 }); 1298 1299 </script>
1299 1300 1301 1302
1302<script> 1303 (function (i, s, o, g, r, a, m) { 1304 i['InstanaEumObject'] = r; 1305 i[r] = i[r] || function () { 1306 (i[r].q = i[r].q || []).push(arguments) 1307 }, i[r].l = 1 * new Date(); 1308 a = s.createElement(o), 1309 m = s.getElementsByTagName(o)[0]; 1310 a.async = 1; 1311 a.src = g; 1312 m.parentNode.insertBefore(a, m) 1313 })(window, document, 'script', '//eum.instana.io/eum.min.js', 'ineum'); 1314 ineum('reportingUrl', 'https://eum-eu-west-1.instana.io'); 1315 ineum('apiKey', '9yG9cnlKTcS4le-zMVtBJA'); 1316 1317 // set the name of a page on which this load/errors/calls happened 1318 ineum('page', 'front-site'); 1319 </script>
1319 1320 1321 1322
1322<script src="https://js.hcaptcha.com/1/api.js?hl=fr&onload=CaptchaCallback&render=explicit" async defer></script>
1322 1323 1324
1324<script type="text/javascript"> 1325 var CaptchaCallback = function () { 1326 $('.h-recaptcha').each(function (index, el) { 1327 hcaptcha.render(el, {'sitekey': 'f5095cfb-139b-47da-88e2-f0d2e7485392'}); 1328 }); 1329 }; 1330 1331 var originalStyle = false; 1332 1333 $(window).on('shown.bs.modal', function () { 1334 originalStyle = $('body').attr('style'); 1335 1336 $('body').attr('style', ''); 1337 }); 1338 1339 $(window).on('hidden.bs.modal', function () { 1340 $('body').attr('style', originalStyle); 1341 1342 }); 1343 1344 </script>
1344 1345 1346
1346<script> 1347 $(document).ready(function () { 1348 1349 $('.selectpicker').selectpicker(); 1350 1351 var input = $('input[type=file]'); 1352 1353 input.on('change', function () { 1354 var list = $(this).parent().parent().parent().parent().find($('.listFiles')); 1355 list.empty(); 1356 1357 for (var x = 0; x < this.files.length; x++) { 1358 var newFile = '<li>Fichier joint : ' + this.files[x].name + ' (' + humanFileSize(this.files[x].size) + ')</li>'; 1359// li.innerHTML = 'File ' + (x + 1) + ': ' + input.files[x].name; 1360 list.append(newFile); 1361 } 1362 }); 1363 1364 $('.form-error').hide(); 1365 $('#contactFormFooter').submit(function (e) { 1366 let form = $(this); 1367 1368 $.ajax({ 1369 type: "POST", 1370 url: form.attr('action'), 1371 data: new FormData(form[0]), 1372 contentType: false, 1373 processData: false, 1374 beforeSend: function () { 1375 form.find('.form-error').hide(); 1376 $('.formContactForm').attr('disabled', true); 1377 }, 1378 success: function (response) { 1379 hcaptcha.reset(); 1380 1381 if (response.status === 'KO') { 1382 let errors = response.errors; 1383 for (let index in errors) { 1384 if (errors.hasOwnProperty(index)) { 1385 let attr = errors[index]; 1386 let error = attr[Object.keys(attr)[0]]; 1387 form.find('#' + index + '-error').text(error).show(); 1388 } 1389 } 1390 } else { 1391 1392 $('#contactFormFooter').css('display', 'none'); 1393 $('#messageSendedFormContactFooter').css('display', ''); 1394 form[0].reset(); 1395 } 1396 }, 1397 complete: function () { 1398 1399 $('.formContactForm').removeAttr('disabled'); 1400 } 1401 }); 1402 1403 return false; 1404 }); 1405 1406 $('#contactFormContactFooter').on('hidden.bs.modal', function () { 1407 $('#contactFormFooter')[0].reset(); 1408 1409 $('#contactFormFooter').css('display', ''); 1410 1411 $('#messageSendedFormContactFooter').css('display', 'none'); 1412 1413 $('.form-error').hide(); 1414 1415 $('.listFiles').empty(); 1416 1417 hcaptcha.reset(); 1418 }); 1419 1420 1421 }); 1422 1423 function humanFileSize(size) { 1424 var i = Math.floor(Math.log(size) / Math.log(1024)); 1425 return (size / Math.pow(1024, i)).toFixed(1) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; 1426 } 1427 </script>
1427 1428 1429
1429<script> 1430 $(function () { 1431 1432 1433 var numberAlerts = false; 1434 1435 var allAlerts = $('#alertsModal').find($('.alertsInfo')); 1436 1437 numberAlerts = allAlerts.length; 1438 1439 allAlerts.each(function (e) { 1440 1441 if (!sessionStorage.getItem("_nps_cookie_accept_alerts" + $(this).attr('data-id') + "")) { 1442 $('#alertsModal').modal('show'); 1443 } else { 1444 $(this).remove(); 1445 numberAlerts = numberAlerts - 1; 1446 setActiveAndDecrementNumber(); 1447 } 1448 1449 }); 1450 1451 $('.acceptCookiesAlerts').on('click', function (e) { 1452 e.preventDefault(); 1453 1454 var currentDataId = $(this).attr('data-id'); 1455 1456 sessionStorage.setItem('_nps_cookie_accept_alerts' + currentDataId + '', '1'); 1457 1458 numberAlerts = numberAlerts - 1; 1459 1460 var currentParentNode = $(this).parent().parent().parent(); 1461 1462 currentParentNode.removeClass('active'); 1463 currentParentNode.remove(); 1464
1465 setActiveAndDecrementNumber(); 1466 1467 }); 1468 1469 function setActiveAndDecrementNumber() { 1470 var newListOfAlerts = $('#alertsModal').find($('.alertsInfo')); 1471 1472 newListOfAlerts.each(function (index, e) { 1473 if (index == 0) { 1474 $(this).addClass('active'); 1475 } 1476 }); 1477 1478 if (numberAlerts == 0) { 1479 $('#alertsModal').modal('hide'); 1480 } 1481 } 1482 1483 var currentColorControl = '#212529'; 1484 1485 $('#controlPrev').css('color', 'initial !important'); 1486 $('#controlNext').css('color', 'initial !important'); 1487 1488 $('#controlPrev').on('mouseover', function () { 1489 1490 $(this).css('color', 'initial !important'); 1491 }); 1492 1493 $('#controlNext').on('mouseover', function () { 1494 1495 $(this).css('color', 'initial !important'); 1496 }); 1497 1498 }); 1499 </script>
1499 1500 </body> 1501</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.