Je suis en train d'essayer d'envelopper ma tête en utilisant srcset
et sizes
sur img
étiquettes.Utilisation de l'attribut de tailles pour les images reponsives
Alors que je pense avoir compris les bases - principalement grâce à l'article this - je me bats dans l'application pratique de l'attribut sizes
.
Dans tous les exemples que je peux trouver, les choses sont massivement simplifiées et l'attribut tailles est déclaré comme si à chaque point d'arrêt, la largeur de l'image sera une proportion exacte de la largeur de la fenêtre, permettant d'utiliser vm
unités. Par exemple:
sizes="(min-width: 36rem) 33.3vw,
100vw"
Bien sûr, dans la vie réelle, les images sont souvent dans d'autres conteneurs qui peuvent eux-mêmes être dans d'autres conteneurs et ainsi de suite, chacun avec leur propre marge, rembourrage ou de positionnement. Est-il juste de dire que dans tous les cas sauf les plus simples (lorsque les images sont de largeur de fluide et ne sont pas simplement un pourcentage exact de la fenêtre), calc
doit être utilisé, ajoutant potentiellement des calculs complexes au html comme les dimensions d'une image doivent-elles être calculées en fonction de la largeur de la fenêtre, de tous les conteneurs de l'image? Par exemple comment calculeriez-vous la taille correcte pour une image située un conteneur avec 7px padding qui est lui-même dans un conteneur qui est 45% de son conteneur avec 15px marge qui est dans une barre latérale qui est 25% du conteneur de la page principale 15px de rembourrage et a une largeur minimale de 1220px?
sizes="(min-width: 36rem) calc(((((1220px - (2 * 15px) * 25%) * 45%) - (2 * 15px) - (2 * 7px)),
100vw"
Essayer de calculer cette taille dans l'attribut semble ridicule, d'autant plus que tout cela pourrait changer à chaque point d'arrêt. avoir à garder ce calcul massivement complexe en phase avec les changements apportés au CSS semble être une folie. Et puis vous avez le support du navigateur patché pour calc
. J'ai l'impression que je manque quelque chose d'évident, mais qu'est-ce que c'est?
Note: Je suis au courant de l'excellent d'Alexander Farkas Lazy Sizes qui fait les calculs de taille pour vous par l'utilisation de data
attributs, mais je suis intéressé par l'utilisation standard.
Merci beaucoup pour votre réponse. Quand vous dites que «les tailles ne doivent pas correspondre à votre taille d'image réelle 100% correctement», voulez-vous dire «les tailles n'ont pas besoin de correspondre à votre taille d'image réelle 100% correctement». Si c'est le cas, cela a beaucoup de sens - de cette façon, la complexité de quelques marges peut être ignorée au profit d'une approche plus générale de la taille des images - sachant qu'une image représente environ 25% de la fenêtre . Dans la mesure où je m'appuie sur un CMS et que j'utilise un ensemble prédéfini d'images, j'en vois vraiment l'avantage. Mon bloc d'achoppement est dans le calcul des tailles d'image correctes en premier lieu. – Undistraction
Oui, les tailles ne doivent pas nécessairement correspondre à votre taille d'image réelle 100% correctement. Le navigateur calcule la valeur px à partir de votre liste de taille source. Et combine cela avec le devicePixelRatio, puis sélectionne un bon candidat image. Donc, vous faites cela pour obtenir un candidat d'image spécifique sélectionné. Évidemment, le nombre de candidats à l'image est limité (souvent entre 2 et 10 candidats selon la situation). Donc, si vous donnez les candidats du navigateur en étapes de 200 pixels, le navigateur est déjà limité et doit fonctionner à peu près. –