1<!DOCTYPE html> 2<html lang="it"> 3 <head> 4 <!-- Google Tag Manager --> 5
5<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=true;j.src="https://measure.ricordistampati.it/itnnptxbd.js?"+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','el4n6ryu=DQZFMyQjQ0E0NCAzITlaUhJfSlpBSAoaWRARFx8cCh0XFhkZAA8aHUoLDA%3D%3D');</script>
5 6 <!-- End Google Tag Manager --> 7 8 <meta charset="UTF-8"> 9 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"> 10 11 <!-- Iubenda Cookie Solution --> 12
12<script type="text/javascript" src="https://embeds.iubenda.com/widgets/87202e70-3469-445d-8556-24d23e71cc70.js"></script>
12 13 14 <title>Fotografi | Ricordi Stampati</title> 15 <link rel="icon" href="/assets/images/favicon-f527fc97b48bf9a11a19dc0c2bfbdf2c.png"> 16 17 <link rel="preconnect" href="https://player.vimeo.com"> 18 <link rel="preconnect" href="https://i.vimeocdn.com"> 19 <link rel="preconnect" href="https://f.vimeocdn.com" crossorigin> 20 21
21<script> 22 // ScrollFade: segnala subito al CSS che l'animazione è attiva, così gli elementi dell'intro partono già nascosti 23 if ('IntersectionObserver' in window && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) { 24 document.documentElement.classList.add('scrollFade-js'); 25 } 26 27 // Arrivando da una voce della about-navbar, titolo e navbar restano fermi: cambia solo il contenuto 28 try { 29 if (sessionStorage.getItem('aboutNavbarNavigation')) { 30 sessionStorage.removeItem('aboutNavbarNavigation'); 31 document.documentElement.classList.add('about-navbar-navigation'); 32 } 33 } catch (e) {} 34 </script>
34 35 36 37<link rel="stylesheet" href="/assets/styles/app-d51e6884c61bf3561f587eca8dcb2a84.css"> 38<link rel="stylesheet" href="/assets/styles/app_responsive-e0c28e6cfb08c4eca63e60aa47ae8240.css">
39<script type="importmap"> 40{ 41 "imports": { 42 "app": "/assets/app-1fdc508a761832676a8b8274fd02740a.js", 43 "/assets/styles/app.css": "data:application/javascript,", 44 "/assets/styles/app_responsive.css": "data:application/javascript,", 45 "/assets/js/fslightbox.js": "/assets/js/fslightbox-e664b8e0135cff14345d71060e974556.js", 46 "/assets/js/scrollfade.js": "/assets/js/scrollfade-5089b7b6b67953f2199ccc836447300c.js", 47 "app_admin": "/assets/app_admin-62c66528f42164424bc60c911a310f4c.js", 48 "/assets/styles/app_admin.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fapp_admin-c71f7a57df07a4f6269725e002e98cdc.css%22%7D%29%29", 49 "dropzone": "/assets/vendor/dropzone/dropzone.index-cf42f91a434a14d4c937482d34260e52.js", 50 "just-extend": "/assets/vendor/just-extend/just-extend.index-097ce26c9b572db4bfccf5ebcd6fdfab.js", 51 "dropzone/dist/dropzone.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fvendor%2Fdropzone%2Fdist%2Fdropzone-a1298a3ac4076c1f598b6e7c78174df7.css%22%7D%29%29" 52 } 53} 54</script>
54 55<!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support -->
56<script async src="https://ga.jspm.io/npm:[email protected]/dist/es-module-shims.js" crossorigin="anonymous" integrity="sha384-ie1x72Xck445i0j4SlNJ5W5iGeL3Dpa0zD48MZopgWsjNB/lt60SuG1iduZGNnJn"></script>
56 57<link rel="modulepreload" href="/assets/app-1fdc508a761832676a8b8274fd02740a.js"> 58<link rel="modulepreload" href="/assets/js/fslightbox-e664b8e0135cff14345d71060e974556.js"> 59<link rel="modulepreload" href="/assets/js/scrollfade-5089b7b6b67953f2199ccc836447300c.js">
60<script type="module">import 'app';</script>
60 61 <!-- Hotjar Tracking Code for ricordistampati.it --> 62
62<script>
vendor: 149 bytes, lines 62-65
62 63 (function(h,o,t,j,a,r){ 64 h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; 65 h._hjSettings={hjid:
655363275
vendor: 306 bytes, lines 65-71
65,hjsv:6}; 66 a=o.getElementsByTagName('head')[0]; 67 r=o.createElement('script');r.async=1; 68 r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; 69 a.appendChild(r); 70 })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); 71
71</script>
71 72 </head> 73 74 <body class=""> 75 <!-- Google Tag Manager (noscript) --> 76 <noscript><iframe src="https://measure.ricordistampati.it/ns.html?id=GTM-5PVXGQW4" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 77 <!-- End Google Tag Manager (noscript) --> 78 79 <div class="overlay-dark d-none"></div> 80 81 <header class="header " id="header"> 82 <a class="header__logo" href="/"> 83 <img class="header__logo-img" src="/assets/images/logo-vertical-3e19985fd344e41cfe0cd4ba5b8b68c4.svg" alt="logo ricordi stampati"> 84 </a> 85 86 <div class="header__actions"> 87 <a class="header__gift-link" href="/buoni-regalo"> 88 <img src="/assets/images/icons/icon-gift-red-cdaa072204d64892cdaae717eb7ef5c9.svg" alt="regalo"> 89 <span>Buoni regalo</span> 90 </a> 91 92 <button class="header__menu-btn" id="burger-menu"> 93 <span class="header__menu-label">Menu</span> 94 <img src="/assets/images/icons/burger-1c2c0d217db1c68e830cd2ab22a84a0d.svg" alt="menu"> 95 </button> 96 </div> 97 98 </header> 99 100 <nav class="nav-overlay closed" id="nav-overlay"> 101 <button class="nav-overlay__close" onclick="toggleBurgerMenu()" aria-label="Chiudi menu"> 102 <span class="nav-overlay__close-icon"> 103 <span></span> 104 <span></span> 105 <span></span> 106 </span> 107 </button> 108 109 <div class="nav-overlay__links"> 110 <a class="nav-overlay__link" href="/">Home</a> 111 <a class="nav-overlay__link" href="/prenotazioni">Prenotazioni</a> 112 <a class="nav-overlay__link nav-overlay__link--accent" href="/buoni-regalo">Buoni regalo</a> 113 <a class="nav-overlay__link" href="/fotografi">Fotografi</a> 114 <a class="nav-overlay__link" href="/faq">Come funziona</a> 115 <a class="nav-overlay__link" href="/aziende">Eventi</a> 116 <a class="nav-overlay__link" href="/chi-siamo">Chi siamo</a> 117 <a class="nav-overlay__link" href="/corsi">Didattica</a> 118 <a class="nav-overlay__link" href="/scarica-app">App</a> 119 </div> 120 </nav> 121 122 123 <main> 124 <section class="photographers bordered main-padding-top"> 125 <div class="container"> 126 <h1 class="about__title title-1">Il nostro collettivo</h1> 127 </div> 128 129 <div class="photographers-list__main"> 130 <div class="container grid"> 131 <article class="photographers-card scrollFade-sequence"> 132 <a class="photographers-card__link" href="/fotografi/dettaglio/ricordi-stampati-team" aria-hidden="true" tabindex="-1"></a> 133 134 <img class="photographers-card__img" src="/uploads/photographers/ph_01k6cwr782rs4vzwevaj27tx00/profile-image.webp?v=1760606295" alt="foto profilo fotografo"> 135 136 <div class="photographers-card__info"> 137 <h2 class="photographers-card__name">Ricordi Stampati Team</h2> 138 139 140 141 <a class="photographers-card__cta btn btn--primary" href="/fotografi/dettaglio/ricordi-stampati-team">Vedi profilo</a> 142 </div> 143 144 </article> 145 <article class="photographers-card scrollFade-sequence"> 146 <a class="photographers-card__link" href="/fotografi/dettaglio/guido-stazzoni" aria-hidden="true" tabindex="-1"></a> 147 148 <img class="photographers-card__img" src="/uploads/photographers/ph_01j9x9apxapnem3s0aeyzqyq88/profile-image.webp?v=1744664917" alt="foto profilo fotografo"> 149 150 <div class="photographers-card__info"> 151 <h2 class="photographers-card__name">Guido Stazzoni</h2> 152 153 154 155 <a class="photographers-card__cta btn btn--primary" href="/fotografi/dettaglio/guido-stazzoni">Vedi profilo</a> 156 </div> 157 158 </article> 159 <article class="photographers-card scrollFade-sequence"> 160 <a class="photographers-card__link" href="/fotografi/dettaglio/settimio-benedusi" aria-hidden="true" tabindex="-1"></a> 161 162 <img class="photographers-card__img" src="/uploads/photographers/ph_01jc30rm0cdf38r33mmn85bbs1/profile-image.
162webp?v=1744029952" alt="foto profilo fotografo"> 163 164 <div class="photographers-card__info"> 165 <h2 class="photographers-card__name">Settimio Benedusi</h2> 166 167 168 169 <a class="photographers-card__cta btn btn--primary" href="/fotografi/dettaglio/settimio-benedusi">Vedi profilo</a> 170 </div> 171 172 </article> 173 <article class="photographers-card scrollFade-sequence"> 174 <a class="photographers-card__link" href="/fotografi/dettaglio/toni-thorimbert" aria-hidden="true" tabindex="-1"></a> 175 176 <img class="photographers-card__img" src="/uploads/photographers/ph_01j9x82j2n07yq3m1f4dq8tpb7/profile-image.webp?v=1744029954" alt="foto profilo fotografo"> 177 178 <div class="photographers-card__info"> 179 <h2 class="photographers-card__name">Toni Thorimbert</h2> 180 181 182 183 <a class="photographers-card__cta btn btn--primary" href="/fotografi/dettaglio/toni-thorimbert">Vedi profilo</a> 184 </div> 185 186 </article> 187 <article class="photographers-card scrollFade-sequence"> 188 <a class="photographers-card__link" href="/fotografi/dettaglio/sofia-uslenghi" aria-hidden="true" tabindex="-1"></a> 189 190 <img class="photographers-card__img" src="/uploads/photographers/ph_01jq9dp27hjyq6d4fjas7jercx/profile-image.webp?v=1744029956" alt="foto profilo fotografo"> 191 192 <div class="photographers-card__info"> 193 <h2 class="photographers-card__name">Sofia Uslenghi</h2> 194 195 196 197 <a class="photographers-card__cta btn btn--primary" href="/fotografi/dettaglio/sofia-uslenghi">Vedi profilo</a> 198 </div> 199 200 </article> 201 <article class="photographers-card scrollFade-sequence"> 202 <a class="photographers-card__link" href="/fotografi/dettaglio/matteo-curti" aria-hidden="true" tabindex="-1"></a> 203 204 <img class="photographers-card__img" src="/uploads/photographers/ph_01jq9d260qkr7zktdyxge2m18w/profile-image.webp?v=1744029952" alt="foto profilo fotografo"> 205 206 <div class="photographers-card__info"> 207 <h2 class="photographers-card__name">Matteo Curti</h2> 208 209 210 211 <a class="photographers-card__cta btn btn--primary" href="/fotografi/dettaglio/matteo-curti">Vedi profilo</a> 212 </div> 213 214 </article> 215 </div> 216 </div> 217 </section> 218 </main> 219 220 <footer> 221 <div class="banner-coupon bordered scrollFade"> 222 <div class="container flex flex-50"> 223 <div class="banner-coupon__left"> 224 <img src="/assets/images/photos/coupon-2-47a7757cdbf08481a721f8d4c09e7f69.webp" alt="coupon"> 225 </div> 226 227 <div class="banner-coupon__right"> 228 <h3 class="title-3">Regala un ricordo stampato</h3> 229 <a class="banner-coupon__cta btn btn--primary btn--large btn--accent" href="/buoni-regalo">Vai ai buoni regalo</a> 230 </div> 231 </div> 232 </div> 233 234 <div class="footer-main bordered"> 235 <div class="container"> 236 <img class="footer-main__logo" src="/assets/images/logo-941b8fafb3b508f5a5cb7859dedf6643.svg" alt="logo ricordi stampati"> 237 238 <div class="footer-main__content"> 239 <nav class="footer-main__navbar"> 240 <ul class="footer-main__navbar-list"> 241 <li> 242 <a class="btn-w-icon" href="https://www.instagram.com/ricordistampati/" target="_blank"> 243 <span>Instagram</span> 244 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 245 </a> 246 </li> 247 248 <li> 249 <a class="btn-w-icon" href="https://www.facebook.com/ricordi.fotografici/" target="_blank">
250 <span>Facebook</span> 251 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 252 </a> 253 </li> 254 </ul> 255 256 <ul class="footer-main__navbar-list footer-main__navbar-list--2"> 257 <li> 258 <a class="btn-w-icon" href="/termini-e-condizioni"> 259 <span>Termini e condizioni</span> 260 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 261 </a> 262 </li> 263 264 <li> 265 <a class="btn-w-icon" href="https://www.iubenda.com/privacy-policy/76002912" target="_blank"> 266 <span>Privacy Policy</span> 267 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 268 </a> 269 </li> 270 271 <li> 272 <a class="btn-w-icon" href="https://www.iubenda.com/privacy-policy/76002912/cookie-policy" target="_blank"> 273 <span>Cookie Policy</span> 274 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 275 </a> 276 </li> 277 278 <li> 279 <a class="btn-w-icon iubenda-cs-preferences-link" href="#"> 280 <span>Preferenze privacy</span> 281 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 282 </a> 283 </li> 284 285 <li> 286 <a class="btn-w-icon" href="/faq"> 287 <span>FAQ</span> 288 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 289 </a> 290 </li> 291 292 <li> 293 <a class="btn-w-icon" href="/contattaci"> 294 <span>Contatti</span> 295 <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt=""> 296 </a> 297 </li> 298 </ul> 299 </nav> 300 301 <div class="footer-main__newsletter"> 302 <div class="txt-title title-2">Scopri le novità </div> 303 <div id="mc_embed_shell"> 304 <link href="//cdn-images.mailchimp.com/embedcode/classic-061523.css" rel="stylesheet" type="text/css"> 305 <style type="text/css"> 306 #mc_embed_signup{background:#fff; false;clear:left; font:14px Helvetica,Arial,sans-serif; width: 600px;} 307 /* Add your own Mailchimp form style overrides in your site stylesheet or in this style block. 308 We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */ 309 </style> 310 <div id="mc_embed_signup"> 311 <form action="https://ricordistampati.us14.list-manage.com/subscribe/post?u=5a7b3f6221d6779f29ee814fd&id=ecd83f8369&f_id=005b94e1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank"> 312 <div id="mc_embed_signup_scroll"> 313 <div class="indicates-required"><span class="asterisk">*</span> indica requisiti obbligatori</div> 314 <div class="mc-field-group">
314<label for="mce-EMAIL"></label><input type="email" name="EMAIL" class="required email newsletter-input" id="mce-EMAIL" required="" value="" placeholder="Inserisci la tua email"></div> 315 <div aria-hidden="true" style="position: absolute; left: -5000px;"> 316 /* real people should not fill this in and expect good things - do not remove this or risk form bot signups */ 317 <input type="text" name="b_5a7b3f6221d6779f29ee814fd_ecd83f8369" tabindex="-1" value=""> 318 </div> 319 <div class="optionalParent"> 320 <div class="clear foot"> 321 <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="button newsletter-submit" value="Iscriviti alla newsletter"> 322 </div> 323 </div> 324 <div id="mce-responses" class="clear foot"> 325 <div class="response" id="mce-error-response" style="display: none;"></div> 326 <div class="response" id="mce-success-response" style="display: none;"></div> 327 </div> 328 </div> 329 </form> 330 </div> 331
331<script type="text/javascript" src="//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"></script>
331<script type="text/javascript">(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='ADDRESS';ftypes[3]='address';fnames[4]='PHONE';ftypes[4]='phone';fnames[5]='BIRTHDAY';ftypes[5]='birthday';fnames[6]='COMPANY';ftypes[6]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script>
331</div> 332 </div> 333 </div> 334 </div> 335 </div> 336 337 <div class="banner-sm container"> 338 <p>© 2026 Fotografia Popolare SRL P. IVA 01778830081</p> 339 <p> 340 Designed and built by <a class="txt-inherit txt-underlined" 341 href="https://glueglue.com" target="_blank">glueglue</a> 342 </p> 343 </div> 344 </footer> 345 346 <div class="popup popup--apps d-none"> 347 <button class="popup__close-btn" onclick="closePopup('apps')"> 348 <img src="/assets/images/icons/close-44f7f376b822799c884c80f51114765a.svg" alt="chiusura icona"> 349 </button> 350 351 <div class="popup__content"> 352 <div class="popup__title">Scarica l'app</div> 353 354 <div class="popup__flex"> 355 <a href="https://apps.apple.com/it/app/ricordi-stampati-lab/id6470449877" target="_blank" class="popup__link"> 356 <img class="popup__link-img" src="/assets/images/badge-applestore-65c21e442a7be656803b6d5595201364.png" alt="apple store"> 357 </a> 358 359 <a href="https://play.google.com/store/apps/details?id=it.ricordistampati.lab&hl=it" target="_blank" class="popup__link"> 360 <img class="popup__link-img" src="/assets/images/badge-googleplay-80a544cabe8acff3daafeedb01e753f7.png" alt="google play store"> 361 </a> 362 </div> 363 </div> 364 </div> 365 366 <div id="loading" style="display: none;"> 367 <div class="inner-loading"> 368 <div class="loading-box"> 369 <img src="/assets/animations/animation-loader-white-cac0a586c697351744ba24e006415167.svg" alt="Caricamento"> 370 </div> 371 </div> 372 </div> 373 374
374<script src="/assets/jquery-3.7.1.min-9afc4325c73ade4ffa73ae9a63c6bc64.js" type="application/javascript"></script>
374 375 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" /> 376
376<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
376 377 378
378<script type="application/javascript"> 379 const html = $('html') 380 const main = $('main') 381 const header = $('header') 382 const footer = $('footer') 383 const headerLogo = $('.header-logo') 384 const mobileNav = $('#nav-overlay') 385 const burgerMenu = $('#burger-menu') 386 const headerProfileMenu = $('#header-profile-menu') 387 const headerProfileMenuSpan = $('#header-profile-menu span') 388 389 function startLoading() { 390 $("#loading").fadeIn(); 391 $('body').css('overflow', 'hidden') 392 $('html').css('overflow', 'hidden') 393 } 394 395 function stopLoading() { 396 $("#loading").fadeOut(); 397 $('body').css('overflow', 'unset') 398 $('html').css('overflow', 'unset') 399 } 400 401 function toggleBurgerMenu() { 402 if (mobileNav.hasClass('closed')) { 403 mobileNav.removeClass('closed').addClass('opened') 404 $('#burger-menu .open').addClass('d-none') 405 $('#burger-menu .close').removeClass('d-none') 406 header.addClass('header-mobile-opened') 407 html.css('overflow', 'hidden') 408 } else { 409 mobileNav.removeClass('opened').addClass('closed') 410 $('#burger-menu .open').removeClass('d-none') 411 $('#burger-menu .close').addClass('d-none') 412 header.removeClass('header-mobile-opened') 413 html.css('overflow', 'auto') 414 } 415 } 416 417 function toggleHeaderProfileMenu() { 418 if (mobileNav.hasClass('closed')) { 419 mobileNav.removeClass('closed').addClass('opened') 420 $('#header-profile-menu .open').addClass('d-none') 421 $('#header-profile-menu .close').removeClass('d-none') 422 header.addClass('header-mobile-opened') 423 html.css('overflow', 'hidden') 424 } else { 425 mobileNav.removeClass('opened').addClass('closed') 426 $('#header-profile-menu .open').removeClass('d-none') 427 $('#header-profile-menu .close').addClass('d-none') 428 header.removeClass('header-mobile-opened') 429 html.css('overflow', 'auto') 430 } 431 } 432 433 burgerMenu.on("click", toggleBurgerMenu) 434 headerProfileMenu.on("click", toggleHeaderProfileMenu) 435 436 const siteHeader = document.getElementById('header') 437 438 if (siteHeader && siteHeader.classList.contains('header--transparent')) { 439 const homeHero = document.querySelector('.home-hero') 440 const homeHeroVideo = document.querySelector('.home-hero-video') 441 442 const updateSiteHeader = () => { 443 const videoRatio = window.innerWidth <= 576 ? 0.60 : 0.70 444 const isScrolled = (homeHero && homeHeroVideo) 445 ? window.scrollY >= homeHero.offsetHeight + homeHeroVideo.offsetHeight * videoRatio 446 : window.scrollY > 10 447 448 siteHeader.classList.toggle('header--scrolled', isScrolled) 449 siteHeader.classList.toggle('header--nudged', window.scrollY > 10) 450 } 451 452 window.addEventListener('scroll', updateSiteHeader) 453 updateSiteHeader() 454 } 455 456 $('.about-navbar__dropdown-btn').on("click", function () { 457 $(this).toggleClass("about-navbar__dropdown-btn--open") 458 $('.about-navbar__slide').slideToggle() 459 }) 460 461 462 // Gallery 463 464 function updateCustomScrollbar() { 465 const $content = $('.gallery'); 466 const $thumb = $('.gallery__scrollbar-thumb'); 467 const $track = $('.gallery__scrollbar'); 468 const content = $content[0]; 469 470 const scrollLeft = content.scrollLeft; 471 const scrollWidth = content.scrollWidth; 472 const containerWidth = content.clientWidth; 473 474 const rootStyles = getComputedStyle(document.documentElement); 475 const padding = parseInt(rootStyles.getPropertyValue('--spacing-full-page')) || 0; 476 const trackWidth = containerWidth - padding * 2; 477 478 // Show/hide the scrollbar only if overflow exists 479 if (scrollWidth > containerWidth + 1) { 480 $track.show(); 481 } else { 482 $track.hide(); 483 return; 484 } 485 486 const thumbWidth = trackWidth * (containerWidth / scrollWidth); 487 const scrollRatio = scrollLeft / (scrollWidth - containerWidth); 488 const thumbLeft = scrollRatio * (trackWidth - thumbWidth); 489 490 $thumb.css({ 491 width: `${thumbWidth}px`, 492 left: `${thumbLeft}px` 493 }); 494 } 495 496 $('.gallery').on('scroll', updateCustomScrollbar); 497 498 if ($('.gallery').length > 0) { 499 $(window).on('load resize', updateCustomScrollbar); 500 } 501 502 function updateGalleryScrollbar() { 503 const gallery = $('.gallery'); 504 505 if (!gallery.length) return; 506 507 if (gallery[0].scrollWidth > gallery.outerWidth()) { 508 gallery.removeClass('hide-scrollbar'); 509 } else { 510 gallery.addClass('hide-scrollbar'); 511 } 512 } 513 514 $(window).on('load resize', updateGalleryScrollbar); 515 516 517 518 /* POPUP */ 519 function openPopup(popupName, couponId = null) { 520 selectedCouponId = couponId 521 522 $('.popup--' + popupName).removeClass('d-none') 523 $('html').addClass('overflow-hidden') 524 $('body').addClass('overflow-hidden') 525 $('.overlay-dark').removeClass('d-none') 526 } 527 528 function closePopup(popupName) { 529 $('.popup--' + popupName).addClass('d-none') 530 $('html').removeClass('overflow-hidden') 531 $('body').removeClass('overflow-hidden') 532 $('.overlay-dark').addClass('d-none') 533 } 534 535 function showWorkshops() { 536 $('.photographers-list__grid').removeClass('d-none') 537 } 538 539 function hideWorkshops() { 540 $('.photographers-list__grid').addClass('d-none') 541 } 542 543 function scrollBookingSectionToTop() { 544 // document.getElementsByClassName("bookings__actions")[0].scrollIntoView({ behavior: "smooth", block: "start" }) 545 546 const element = document.querySelector('.bookings__actions');
547 const offset = 300; 548 549 const top = element.getBoundingClientRect().top + window.pageYOffset - offset; 550 551 window.scrollTo({ top, behavior: 'smooth' }); 552 } 553 554 function scrollBookingActionsToTop() { 555 const element = document.querySelector('.bookings__actions'); 556 element.scrollTo({ top: 0, behavior: 'smooth' }); 557 } 558 559 function toggleHeroVideoVolume(videoId) { 560 const video = $(".video-wrapper--" + videoId + " .video-wrapper__video")[0]; 561 562 video.muted = !video.muted; 563 564 $(".video-wrapper--" + videoId + ' .video-wrapper__volume-icon--off').toggleClass('d-none') 565 $(".video-wrapper--" + videoId + ' .video-wrapper__volume-icon--on').toggleClass('d-none') 566 } 567 568 function askChangeDatesConfirmation() { 569 if (isOtpSent && !window.confirm("Attenzione: se cambi data la prenotazione in corso non sarà più valida. Vuoi proseguire?")) { 570 return false 571 } 572 573 isOtpSent = false 574 bookingId = null 575 return true 576 } 577 </script>
577 578 579 </body> 580</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.