Data di pubblicazione: 16 settembre 2026
Chrome 154 aggiunge il supporto per gli iframe con dimensioni adattabili, consentendo a un <iframe> di dimensionarsi in base alle dimensioni intrinseche del documento incorporato. È perfetto per incorporare senza problemi widget di commenti di terze parti, incorporamenti di social media di altezza variabile o qualsiasi altro tipo di incorporamento che utilizzi un <iframe>.
Gli iframe con dimensioni adattabili sostituiscono un pattern comune in cui gli sviluppatori misurano manualmente i contenuti iframe, inviano le dimensioni con postMessage() e aggiornano manualmente le dimensioni dell'iframe nella pagina di incorporamento.
Ridimensionare un iframe in base ai suoi contenuti
Per impostazione predefinita, un iframe ha la propria area visibile. Se il documento incorporato è più alto di questa finestra, gli utenti potrebbero visualizzare una barra di scorrimento aggiuntiva. Con il dimensionamento degli iframe adattabile, la pagina di incorporamento può invece utilizzare il dimensionamento basato sui contenuti:
.embed {
width: 100%;
frame-sizing: content-height;
}
Il documento incorporato deve essere attivato:
<meta name="responsive-embedded-sizing" content="allow-origins=*">
Ecco un esempio completo:
<style>
.embed {
width: 100%;
frame-sizing: content-height;
}
</style>
<iframe class="embed" src="/comments.html" title="Comments">
</iframe>
E in /comments.html:
<!doctype html>
<html>
<head>
<meta name="responsive-embedded-sizing" content="allow-origins=*">
</head>
<body>
...
</body>
</html>
Ora l'iframe può utilizzare l'altezza dei contenuti del documento incorporato anziché comportarsi come un viewport ad altezza fissa.
Utilizza frame-sizing
La nuova proprietà frame-sizing controlla la dimensione derivata dai contenuti dell'iframe.
I valori supportati includono:
frame-sizing: auto;
frame-sizing: content-width;
frame-sizing: content-height;
frame-sizing: content-inline-size;
frame-sizing: content-block-size;
auto mantiene il comportamento di dimensionamento dell'iframe esistente.
Per la maggior parte delle modalità di scrittura orizzontale, content-height e content-block-size sono i valori più utili per l'espansione verticale degli incorporamenti.
Puoi anche combinare frame-sizing con altri vincoli CSS:
.embed {
width: 100%;
max-height: 80vh;
frame-sizing: content-height;
}
Ridimensionamento dopo le modifiche ai contenuti dinamici
Il browser non osserva continuamente ogni modifica del layout all'interno del documento incorporato.
Se i contenuti dell'iframe cambiano dopo il layout iniziale, ad esempio dopo aver caricato altri commenti o espanso un riquadro, il documento incorporato può richiedere un nuovo calcolo delle dimensioni con window.requestResize().
async function loadMore() {
const items = await fetchMoreItems();
renderItems(items);
window.requestResize();
}
È preferibile chiamare window.requestResize() prima del layout, dopo che sono state apportate tutte le modifiche al documento. Questo modello di aggiornamento esplicito aiuta a evitare i loop di ridimensionamento in cui la modifica delle dimensioni dell'iframe ne modifica l'area visibile, che a sua volta modifica i contenuti, che a loro volta modificano nuovamente le dimensioni.
Incorporamenti multiorigine
Il dimensionamento adattabile può essere utilizzato anche con gli iframe multiorigine. Il documento incorporato può limitare le origini consentite:
<meta
name="responsive-embedded-sizing"
content="allow-origins=https://publisher.example">
In questo modo, il dimensionamento reattivo verrà limitato solo a https://publisher.example. Più origini sono separate da uno spazio: content="allow-origins=https://publisher1.example https://publisher2.example".
Per i widget di terze parti, limita l'accesso alle origini che ne hanno bisogno. Questo meccanismo integra i controlli di sicurezza iframe esistenti, come l'istruzione frame-ancestors di Content Security Policy, che controlla quali siti possono incorporare una pagina.
Potenziamento progressivo
Puoi utilizzare le query sulle funzionalità per mantenere un fallback esistente per i browser che non supportano frame-sizing:
.widget {
width: 100%;
height: 500px;
}
@supports (frame-sizing: content-height) {
.widget {
height: auto;
frame-sizing: content-height;
}
}
Se il documento incorporato viene aggiornato dinamicamente, puoi anche rilevare le funzionalità requestResize():
if ("requestResize" in window) {
window.requestResize();
}
Il codice di ridimensionamento iframe esistente può quindi rimanere come fallback man mano che il supporto si espande.
Prova
Prova il dimensionamento degli iframe responsivi nella demo seguente: