Iframe reattivi

Diciamo che volevi mettere il sito web CSS-Tricks in un<iframe>. Lo faresti in questo modo:

<iframe src="https://css-tricks.com"></iframe>

Senza nessun altro stile, otterrai un rettangolo di dimensioni 300×150 pixel. Questo non è nemmeno nel foglio di stile dell’agente utente, è solo una cosa magica sugli iframe (e sugli oggetti). Questo non è quasi certamente quello che vuoi, quindi vedrai spesso gli attributi di larghezza e altezza proprio sull’iframe stesso (YouTube lo fa).

<iframe width="560" height="315" src="https://css-tricks.com"></iframe>

Questi attributi sono buoni da avere., È un inizio per riservare un po ‘ di spazio per l’iframe che è molto più vicino a come finirà. Ricorda, layout jank è cattivo. Ma abbiamo più lavoro da fare dal momento che quelli sono numeri fissi, piuttosto che una configurazione responsive-friendly.

Il miglior trucco per gli iframe reattivi, per ora, sta creando una scatola di proporzioni. Per prima cosa è necessario un elemento genitore con posizionamento relativo. L’iframe è l’elemento figlio al suo interno, a cui si applica il posizionamento assoluto per riempire l’area., La parte difficile è che l’elemento genitore diventa l’altezza perfetta creando uno pseudo-elemento per spingerlo a quell’altezza in base alle proporzioni. Il punto è che spingere l’elemento alla dimensione corretta è un sistema più bello che forzare una certa altezza. Nello scenario in cui il contenuto all’interno è più alto di quello che rappresenta il rapporto di aspetto, può ancora crescere piuttosto che traboccare.

Metterò una demo completa proprio qui (che funziona anche per le immagini):

Vedi la penna
Responsive Iframe di Chris Coyier (@chriscoyier)
su CodePen.,

Ogni volta che abbiamo a che fare con proporzioni, mi fa pensare a un futuro con una migliore gestione per questo. C’è l’attributo sperimentale intrinsicsize che potrei immaginare di essere abbastanza bello per gli iframe oltre alle immagini. Inoltre c’è la speranza-will-exist-soon aspect-ratio in CSS e l’idea che potrebbe usare di default gli attributi width e height sull’elemento, che spero si estenderebbe agli iframe.

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *