Sto cercando di riprendermi usando srcset
e sizes
sui tag img
.Uso dell'attributo Dimensioni per immagini di ripiego
Mentre penso di aver colto le nozioni di base - principalmente grazie all'articolo this - Ho difficoltà nell'applicazione pratica dell'attributo sizes
.
In tutti gli esempi che riesco a trovare, le cose sono enormemente semplificate e l'attributo delle dimensioni è dichiarato come se ad ogni punto di interruzione, la larghezza dell'immagine fosse una proporzione esatta della larghezza della finestra, consentendo l'uso di unità vm
. Ad esempio:
sizes="(min-width: 36rem) 33.3vw,
100vw"
Naturalmente nella vita reale, le immagini sono spesso all'interno altri recipienti stessi potrebbero essere all'interno di altri contenitori e così via, ciascuno con il proprio margine, padding o posizionamento.
È giusto dire che in tutti i casi tranne i più semplici (quando le immagini sono di larghezza fluida e non sono semplicemente una percentuale esatta del viewport), è necessario utilizzare calc
, aggiungendo potenzialmente calcoli estremamente complessi al markup html come le dimensioni di una immagine devono essere calcolate lavorando dalla larghezza della finestra, in basso attraverso qualsiasi contenitore all'immagine? Ad esempio, come calcoli la dimensione corretta per un'immagine che si trova un contenitore con padding 7px che si trova all'interno di un contenitore che è il 45% del suo contenitore con margine di 15px che si trova all'interno di una barra laterale che è il 25% del contenitore della pagina principale che ha 15px di padding e ha una larghezza minima di 1220px?
sizes="(min-width: 36rem) calc(((((1220px - (2 * 15px) * 25%) * 45%) - (2 * 15px) - (2 * 7px)),
100vw"
Cercando di calcolare questo nei formati attributo sembra ridicolo, tanto più che tutto questo potrebbe cambiare in ogni punto di interruzione. dover mantenere questo calcolo estremamente complesso in sincronia con le modifiche al CSS sembra una follia. E poi hai il supporto per browser patchy per calc
.
Mi sento come se mi mancasse qualcosa di ovvio, ma che cos'è?
Nota: Sono consapevole di Alexander Farkas di eccellente Lazy Sizes che fa i calcoli di dimensioni per l'utente attraverso l'utilizzo di data
attributi, ma io sono interessato a uso standard.
Grazie mille per la risposta. Quando dici "le dimensioni non devono corrispondere alla dimensione dell'immagine reale al 100% correttamente", intendi che "le dimensioni non devono necessariamente corrispondere alla dimensione dell'immagine reale al 100% correttamente". Se è così, questo ha molto senso: in questo modo, la complessità di alcuni insiemi di margini/padding può essere saltata in favore di un approccio più generale alle dimensioni dell'immagine - sapendo che un'immagine è circa il 25% del viewport è abbastanza . Per quanto riguarda l'inclusione di un CMS e l'utilizzo di un set predefinito di immagini, ne vedo sicuramente il vantaggio. Il mio ostacolo è nel calcolo delle dimensioni corrette dell'immagine, in primo luogo. – Undistraction
Sì, non è necessario che le dimensioni corrispondano correttamente alla dimensione dell'immagine reale al 100%. Il browser calcola il valore di px dall'elenco delle dimensioni della sorgente. E combina questo con il dispositivo PixelRatio e quindi seleziona un buon candidato immagine. Così fai questo per ottenere una specifica immagine candidata selezionata. Ovviamente, il numero di candidati alle immagini è limitato (spesso tra 2-10 candidati a seconda della situazione). Quindi, se dai ai candidati del browser una scala di 200 pixel, il browser è già limitato e deve funzionare approssimativamente. –