Progetto 04 / 06 · sito web
Streetlight Studios
Una landing page concept per video ads di qualità cinematografica. Un concept, non un lavoro per un cliente.
Panoramica
Screenshot
Livello di prova: Prova esistente


Vedi la prova
Affermazione
Streetlight Studios: una landing page concept per video ads di qualità cinematografica. Un concept, non un lavoro per un cliente.
Dichiarato da Danilo
Prove
- Screenshot della pagina concept di Streetlight Studios (desktop e mobile) · manual · verificato il 29 settembre 2026Presi il 29/09/2026 dal file sorgente della pagina stessa, perché non è online.
- Registrazione dello schermo dell’apertura della pagina Streetlight Studios (7,6 s, senza audio) · manual · verificato il 29 settembre 2026Registrata il 29/09/2026 con Playwright dal file sorgente della pagina stessa, dal primo fotogramma: loader, letterbox, titolo.
- Sorgente di Streetlight: barre letterbox (CSS) (mockup-cinema-ads.html, righe 137–142) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
- Sorgente di Streetlight: schermata di caricamento (CSS) (mockup-cinema-ads.html, righe 92–115) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
- Sorgente di Streetlight: disegno del logo (CSS) (mockup-cinema-ads.html, righe 317–331) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
- Sorgente di Streetlight: comparsa del titolo riga per riga (CSS) (mockup-cinema-ads.html, righe 443–452) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
- Sorgente di Streetlight: regole per il movimento ridotto (CSS) (mockup-cinema-ads.html, righe 351–363) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
- Sorgente di Streetlight: come si nasconde la schermata di caricamento (JavaScript) (mockup-cinema-ads.html, righe 2244–2262) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
- Sorgente di Streetlight: testo principale a macchina da scrivere (JavaScript) (mockup-cinema-ads.html, righe 2486–2510) · manual · verificato il 29 settembre 2026Copiato testualmente dal file sorgente reale il 29/09/2026 (fine riga normalizzati).
Risultato
Screenshot reali della pagina, presi dal suo file sorgente il 29/09/2026. Che l’abbia costruito Danilo è una sua dichiarazione.
In questa pagina
- 02 Animazione scomposta: l’apertura, poi le sue animazioni CSS scomposte
- 03 Codice: lo script dietro l’apertura, e le regole per il movimento ridotto
Non in questa pagina
- Online: la pagina non è online; gira dal suo file sorgente.
Animazione scomposta
Prima l’apertura mentre si svolge; poi ognuna delle sue animazioni CSS, lette dal foglio di stile della pagina e disposte su un’unica linea del tempo.
Montata: l’apertura mentre si svolge
Livello di prova: Prova esistente
Scomposta: ogni animazione dell’apertura
Livello di prova: Prova esistente
Ogni barra inizia al ritardo della regola e dura quanto la sua durata, contando dal momento in cui l’elemento appare. I numeri sono letti dagli estratti CSS qui sotto in fase di build; nulla è ricronometrato. La schermata di caricamento viene poi nascosta da uno script appena il video principale può partire, o al massimo dopo 2,5 s (vedi Codice).
Schermata di caricamento
.loading-namefade-up · inizia a 0.2 s · dura 0.6 s · ease-out.loading-subfade-up · inizia a 0.4 s · dura 0.6 s · ease-out.loading-bar-wrapfade-up · inizia a 0.5 s · dura 0.4 s · ease-out.loading-bar-fillload-fill · inizia a 0.6 s · dura 1.8 s · ease-out
Barre letterbox
.lb-tlb-t · inizia a 0.15 s · dura 0.95 s · cubic-bezier(.16,1,.3,1).lb-blb-b · inizia a 0.15 s · dura 0.95 s · cubic-bezier(.16,1,.3,1)
Disegno del logo
nav .logo .logo-svg circle[r="19"]logo-draw · inizia a 0.1 s · dura 1.2 s · cubic-bezier(.16,1,.3,1)nav .logo .logo-svg circle[r="8"]logo-draw · inizia a 0.5 s · dura 0.9 s · cubic-bezier(.16,1,.3,1)nav .logo .logo-svg circle:not([r="19"]):not([r="8"])logo-fade · inizia a 0.9 s · dura 0.4 s · ease
Comparsa del titolo riga per riga
.hero-h1 .line:nth-child(1) spanline-up · inizia a 0.15 s · dura 0.75 s · cubic-bezier(.16,1,.3,1).hero-h1 .line:nth-child(2) spanline-up · inizia a 0.3 s · dura 0.75 s · cubic-bezier(.16,1,.3,1).hero-h1 .line:nth-child(3) spanline-up · inizia a 0.45 s · dura 0.75 s · cubic-bezier(.16,1,.3,1)
.loading-name{
font-family:var(--font-d);
font-size:1.5rem;letter-spacing:.35em;
text-transform:uppercase;color:var(--accent);
animation:fade-up .6s ease-out .2s both;
}
.loading-sub{
font-family:var(--font-m);
font-size:.44rem;letter-spacing:.32em;
text-transform:uppercase;color:var(--muted);
animation:fade-up .6s ease-out .4s both;
}
.loading-bar-wrap{
width:130px;height:1px;
background:var(--border);
position:relative;overflow:hidden;
animation:fade-up .4s ease-out .5s both;
}
.loading-bar-fill{
position:absolute;top:0;left:-100%;height:100%;
background:linear-gradient(90deg,var(--deep),var(--accent));
animation:load-fill 1.8s ease-out .6s forwards;
}
@keyframes load-fill{to{left:0}}
Livello di prova: Prova esistente
/* ── Letterbox ── */
.lb{position:fixed;left:0;right:0;height:52px;background:#000;z-index:9998}
.lb-t{top:0;animation:lb-t .95s cubic-bezier(.16,1,.3,1) .15s forwards}
.lb-b{bottom:0;animation:lb-b .95s cubic-bezier(.16,1,.3,1) .15s forwards}
@keyframes lb-t{to{transform:translateY(-100%)}}
@keyframes lb-b{to{transform:translateY(100%)}}
Livello di prova: Prova esistente
/* ── Logo draw-in stroke animation */
nav .logo .logo-svg circle[r="19"]{
stroke-dasharray:120;stroke-dashoffset:120;
animation:logo-draw 1.2s cubic-bezier(.16,1,.3,1) .1s both;
}
nav .logo .logo-svg circle[r="8"]{
stroke-dasharray:51;stroke-dashoffset:51;
animation:logo-draw .9s cubic-bezier(.16,1,.3,1) .5s both;
}
nav .logo .logo-svg circle:not([r="19"]):not([r="8"]){
opacity:0;
animation:logo-fade .4s ease .9s both;
}
@keyframes logo-draw{ to{ stroke-dashoffset:0; } }
@keyframes logo-fade{ to{ opacity:1; } }
Livello di prova: Prova esistente
.hero-h1 .line span{
display:block;
animation:line-up .75s cubic-bezier(.16,1,.3,1) both;
}
.hero-h1 .line:nth-child(1) span{animation-delay:.15s}
.hero-h1 .line:nth-child(2) span{animation-delay:.3s}
.hero-h1 .line:nth-child(3) span{animation-delay:.45s}
.hero-h1 em{font-style:italic;color:transparent;-webkit-text-stroke:1.5px var(--accent)}
@keyframes line-up{from{transform:translateY(110%)}to{transform:translateY(0)}}
@keyframes fade-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
Livello di prova: Prova esistente
Codice
La schermata di caricamento e l’effetto macchina da scrivere sono piccoli script. Per chi chiede il movimento ridotto, la schermata di caricamento viene saltata, e le regole qui sotto spengono le animazioni della sezione principale e la grana della pellicola.
/* ══ 1. LOADING OVERLAY ══ */
(function(){
const overlay = document.getElementById('loading-overlay');
// Fix #17: instant hide for reduced-motion users
if(window.matchMedia('(prefers-reduced-motion:reduce)').matches){
overlay.style.display='none';
return;
}
const heroVid = document.querySelector('#hero video');
function hideOverlay(){
overlay.classList.add('hide');
setTimeout(()=>{ overlay.style.display='none'; },1000);
}
if(heroVid){
heroVid.addEventListener('canplay', hideOverlay, {once:true});
setTimeout(hideOverlay, 2500); // max wait 2.5s
} else {
setTimeout(hideOverlay, 1000);
}
Livello di prova: Prova esistente
})();
/* ══ 11. TYPEWRITER HERO BODY ══ */
(function(){
const el = document.getElementById('hero-body-text');
if(!el) return;
const text = el.dataset.text || '';
el.textContent = '';
const cur = document.createElement('span');
cur.className = 'typewriter-cursor';
el.appendChild(cur);
let i = 0;
const delay = 1100; // start after hero headline animates
setTimeout(()=>{
const iv = setInterval(()=>{
if(i<text.length){
cur.before(document.createTextNode(text[i]));
i++;
} else {
clearInterval(iv);
setTimeout(()=>cur.remove(),1200);
}
}, 22);
}, delay);
})();
Livello di prova: Prova esistente
@media (prefers-reduced-motion: reduce){
.reveal,.hero-tag,.hero-body,.hero-ctas,.hero-trust{
opacity:1!important;transform:none!important;animation:none!important;
}
.hero-h1 .line span{transform:none!important;animation:none!important;}
.phone-card{animation:none!important;transform:none!important;}
.phone-cards{transform:none!important;}
.guarantee-badge-ring{animation:none!important;}
body::after{animation:none!important;}
.films-body,.pricing-desc,.guarantee-body,.cta-body,.hiw-body{
opacity:1!important;transform:none!important;
}
}
Livello di prova: Prova esistente