Images et médias¶
Les images, vidéos et contenus intégrés rendent les pages attrayantes et informatives.
Silex fournit des blocs pour les images, vidéos et contenus intégrés (cartes, widgets, iframes). Une fois ajouté, un média se comporte comme n'importe quel autre élément — il a une boîte avec des dimensions, du Padding, des Margin et des bordures. Ce qui rend les médias spéciaux, c'est la façon dont leur contenu s'adapte à cette boîte.
Modèle mental clé : Un élément média est une boîte, et le média remplit cette boîte selon les règles que vous définissez. La taille de la boîte vient des propriétés Width/Height. La façon dont le média s'adapte à l'intérieur vient de Object-Fit et Object-Position.
Ajouter des images¶
Pour ajouter une image :
- Glissez le bloc Image du panneau Blocs sur le canevas
- Silex place un élément
imgavec un placeholder - Sélectionnez l'image
- Dans le panneau Attributs à droite, trouvez le champ src (libellé « Image URL »)
- Soit :
- Entrez directement une URL (par ex.,
https://example.com/photo.jpg) - Cliquez sur l'icône du gestionnaire de médias pour téléverser et parcourir les fichiers
Gestionnaire de médias : téléverser des images¶
Le gestionnaire de médias est une bibliothèque multimédia pour votre projet. Quand vous téléversez une image, Silex la stocke selon la configuration de votre hébergement. Vous pouvez réutiliser les images sur toutes les pages — téléversez une fois, utilisez partout.
Pour téléverser :
- Double-cliquez sur un élément image, ou cliquez sur l'icône du gestionnaire de médias dans le champ src
- Cliquez sur Upload ou glissez des fichiers dans le gestionnaire
- Sélectionnez l'image que vous souhaitez utiliser
- Elle apparaît sur votre canevas et le champ src se remplit automatiquement
Formats supportés : - JPEG — idéal pour les photographies, forte compression - PNG — bon pour les graphiques, fonds transparents - WebP — format moderne, excellente compression pour tous les types - SVG — graphiques vectoriels, mise à l'échelle parfaite à toute taille - GIF — animations simples
Utilisez JPEG ou WebP pour les photos, PNG pour les icônes/graphiques avec transparence, SVG pour les logos/illustrations qui doivent s'adapter.
Texte alternatif : essentiel pour l'accessibilité¶
Chaque image a besoin d'un texte alternatif. Le texte alternatif est lu par les lecteurs d'écran pour les visiteurs aveugles ou malvoyants, affiché quand l'image ne se charge pas, et indexé par les moteurs de recherche.
Pour définir le texte alternatif :
- Sélectionnez l'image
- Dans le panneau Attributs, trouvez le champ de l'attribut alt
- Écrivez une courte phrase descriptive décrivant ce que l'image montre
Bon texte alternatif : « Deux personnes collaborant à un bureau avec des ordinateurs portables » Mauvais texte alternatif : « image », « photo », ou vide
Pour les images décoratives (textures de fond, bordures, séparateurs) qui n'ajoutent pas d'information, définissez le texte alternatif sur vide. Cela indique aux lecteurs d'écran de les ignorer.
Bonnes pratiques pour le texte alternatif : - Décrivez le contenu de l'image, pas « photo de » ou « image de » - Gardez-le sous 125 caractères — court mais précis - N'incluez pas « image de » ou « une photo de » - Incluez le texte pertinent visible dans l'image (panneaux, légendes, texte superposé)
Ajouter des vidéos¶
Pour ajouter une vidéo auto-hébergée :
- Glissez le bloc Video du panneau Blocs
- Silex crée un élément
<video> - Sélectionnez la vidéo
- Dans le panneau Attributs, définissez l'URL source (ou utilisez le gestionnaire de médias pour téléverser)
- Configurez les options :
- autoplay — démarrer la lecture automatiquement
- controls — afficher les boutons lecture/pause
- loop — recommencer à la fin
- muted — requis pour la lecture automatique dans de nombreux navigateurs
Pour YouTube, Vimeo ou d'autres services vidéo hébergés :
N'utilisez pas le bloc Video. À la place :
- Glissez le bloc Map (malgré son nom, il crée un iframe pour tout contenu intégré)
- Collez le code d'intégration du service vidéo
- Ou utilisez le bloc Custom code pour un contrôle HTML complet
Contenu intégré (cartes, widgets, publications sociales)¶
Le bloc Map crée un élément <iframe>. Malgré son nom, vous pouvez intégrer n'importe quel contenu tiers :
- Google Maps
- Calendriers
- Publications de réseaux sociaux
- Sondages
- Widgets de chat
- Vidéos YouTube/Vimeo
Pour ajouter du contenu intégré :
- Glissez le bloc Map du panneau Blocs
- Sélectionnez-le et cherchez le champ src dans le panneau Attributs
- Collez l'URL d'intégration ou le code iframe
Pour un contrôle total, utilisez le bloc Custom code à la place. Il vous permet de coller n'importe quel snippet HTML, y compris du JavaScript.
Lecteurs audio¶
Glissez le bloc Audio (listé comme élément média) pour intégrer un lecteur audio. Définissez l'URL source dans le panneau Attributs. Usages courants : podcasts, musique, effets sonores.
Canvas et autres éléments remplacés¶
Le bloc Canvas crée un élément <canvas> pour les dessins créés avec JavaScript. La plupart des designers ne l'utiliseront pas — c'est pour le scripting avancé. Les propriétés Object-Fit et Object-Position ci-dessous s'appliquent aussi aux éléments canvas.
Contrôler l'adaptation du média à sa boîte¶
Quand la boîte d'un élément média et son contenu ont des proportions différentes, le CSS contrôle ce qui se passe : étirer le contenu, le rogner ou le mettre en letterbox. C'est là qu'intervient Object-Fit.
Object-Fit¶
Object-Fit détermine comment le média remplit sa boîte.
Pour définir Object-Fit :
- Sélectionnez un élément image, vidéo, audio, iframe, embed ou canvas
- Ouvrez la section Object dans le Style Manager (apparaît uniquement pour ces éléments)
- Choisissez une valeur Object-Fit
Valeurs disponibles :
| Valeur | Effet |
|---|---|
fill |
Étire/compresse le média pour remplir complètement la boîte. Peut déformer les proportions. |
contain |
Met le média à l'échelle pour tenir dans la boîte sans rognage. Letterbox si les proportions ne correspondent pas. |
cover |
Met le média à l'échelle pour couvrir toute la boîte. Peut rogner des parties. Généralement le meilleur pour les fonds. |
none |
Affiche le média à sa taille naturelle. Peut déborder ou laisser un espace vide. |
scale-down |
Utilise le plus petit entre none et contain. |
Exemples :
coversur une image héro : remplit l'espace, rogne le haut/bas si nécessairecontainsur une photo produit : montre le produit entier sans déformationfillsur une vidéo de fond : s'étire pour remplir, peut déformernonesur une icône : affiche à la taille exacte, sans mise à l'échelle
Object-Position¶
Object-Position contrôle où le média est positionné dans sa boîte quand il ne la remplit pas exactement (avec contain, scale-down ou none).
Positions disponibles (options prédéfinies) :
| Position | Effet |
|---|---|
left top |
Aligner dans le coin supérieur gauche |
left center |
Aligner sur le bord gauche, centré verticalement |
left bottom |
Aligner dans le coin inférieur gauche |
center top |
Centré horizontalement, bord supérieur |
center center |
Centré dans les deux sens (par défaut) |
center bottom |
Centré horizontalement, bord inférieur |
right top |
Aligner dans le coin supérieur droit |
right center |
Aligner sur le bord droit, centré verticalement |
right bottom |
Aligner dans le coin inférieur droit |
Exemple : une image avec object-fit: cover et object-position: center top rogne le bas et les côtés tout en préservant le haut (idéal pour les photos où le contenu important est en haut).
Exemple pratique : galerie d'images responsive¶
Vous voulez trois images côte à côte, chacune de 200px de large, qui rétrécissent sur mobile.
- Créer le conteneur de la galerie :
- Ajoutez un Div, définissez la balise sur
section - Définissez Display sur Flex, Flex-wrap sur wrap
-
Définissez Column-gap sur 16px
-
Créer les éléments d'image :
- Ajoutez trois Divs dans la section, définissez la balise sur
article - Définissez Flex-basis sur 200px, Flex-grow sur 0
-
Définissez Width sur 100%, Height sur 200px (images carrées)
-
Ajouter les images dans chaque article :
- Glissez un bloc Image dans chaque article
- Définissez Width sur 100%, Height sur 100%
- Définissez Object-Fit sur
cover - Définissez Object-Position sur
center center -
Ajoutez un texte alternatif à chaque image
-
Résultat : trois images carrées côte à côte, les photos rognées pour remplir sans déformation. Sur les écrans étroits, elles s'enroulent naturellement en rangées.
Exemple pratique : image héro responsive avec texte superposé¶
Vous voulez une image pleine largeur avec du texte par-dessus.
- Créer le conteneur héro :
- Ajoutez un Div, définissez la hauteur sur 400px (ou votre choix)
- Définissez Width sur 100%
-
Définissez Position sur relative (pour que le texte puisse se positionner en absolu par-dessus)
-
Ajouter l'image de fond :
- Glissez un bloc Image dans le Div héro
- Définissez Width sur 100%, Height sur 100%
- Définissez Object-Fit sur
cover, Object-Position surcenter center -
Cela remplit la boîte héro sans déformation
-
Ajouter le texte par-dessus :
- Ajoutez un Div dans le héro
- Définissez Position sur absolute, Top sur 50%, Left sur 50%
- Ajoutez du texte à l'intérieur avec un Flex-basis élevé pour le centrer
- Stylisez avec de la couleur et des ombres pour qu'il ressorte sur l'image
L'image remplit la zone héro, le texte flotte par-dessus, et tout s'adapte de manière responsive.
Erreurs courantes¶
- Oublier le texte alternatif. Chaque image a besoin d'un texte alternatif. Les utilisateurs de lecteurs d'écran et les moteurs de recherche en dépendent.
- Utiliser
fillpour Object-Fit quand vous vouliezcover.filldéforme l'image en l'étirant ;coverrogne tout en conservant les proportions. - Ne pas définir Width/Height sur les images. Si une image n'a pas de taille définie, elle s'affiche à sa résolution naturelle, qui peut être trop grande ou trop petite.
- Définir Object-Fit sans comprendre le décalage de proportions. Object-Fit n'a d'importance que quand la boîte et l'image ont des proportions différentes.
- Utiliser les images comme outils de mise en page. Pour l'espacement et la structure de la mise en page, utilisez des éléments sémantiques (Sections, Divs, Flexbox). Les images sont pour le contenu.
En savoir plus¶
- MDN : object-fit — référence détaillée
- MDN : object-position — référence du positionnement
- MDN : élément img — bonnes pratiques pour les images
- MDN : texte alternatif — recommandations d'accessibilité
- Le modèle de boîte — Width et Height pour les éléments médias
- Mise en page Flexbox — disposer les médias en galeries
Avancé : éléments remplacés et leur gestion par Silex
Les éléments médias (img, video, iframe, embed, audio, canvas) sont appelés « éléments remplacés » en CSS. Contrairement aux éléments HTML normaux, leur apparence est déterminée par un contenu externe (le fichier image, le flux vidéo, etc.) plutôt que par des boîtes CSS.
Dans Silex, les images ne peuvent pas être converties en liens via le sélecteur Tag Name. Le composant image supprime les attributs href et tag-name. Si vous voulez une image cliquable, englobez-la dans un élément Link à la place.
La section Object (avec les propriétés object-fit et object-position) n'apparaît que lorsqu'un élément remplacé est sélectionné. Cela se fait en enregistrant le secteur Object pour qu'il ne s'affiche que pour les éléments img, video, iframe, embed, audio et canvas.
Quand vous téléversez des images via le gestionnaire de médias, Silex convertit les URL en un format stocké en interne puis les reconvertit en URL affichables sur le canevas — c'est transparent pour vous.
Référence : valeurs de Object-Fit et Object-Position
Valeurs de Object-Fit¶
| Valeur | Effet |
|---|---|
fill |
Étire/compresse le contenu pour remplir la boîte. Les proportions peuvent ne pas être préservées. |
contain |
Met le contenu à l'échelle pour tenir dans la boîte. Préserve les proportions. Peut créer du letterbox. |
cover |
Met le contenu à l'échelle pour couvrir toute la boîte. Préserve les proportions. Peut rogner. |
none |
Le contenu garde sa taille naturelle. Peut déborder ou laisser de l'espace. |
scale-down |
Utilise le plus petit entre none et contain. |
initial |
Réinitialise à la valeur CSS par défaut (fill). |
inherit |
Utilise la valeur de l'élément parent. |
Valeurs de Object-Position¶
| Position | S'ancre à |
|---|---|
left top |
Coin supérieur gauche (0% 0%) |
left center |
Bord gauche, centré verticalement (0% 50%) |
left bottom |
Coin inférieur gauche (0% 100%) |
center top |
Bord supérieur, centré horizontalement (50% 0%) |
center center |
Exactement au centre (50% 50%, par défaut) |
center bottom |
Bord inférieur, centré horizontalement (50% 100%) |
right top |
Coin supérieur droit (100% 0%) |
right center |
Bord droit, centré verticalement (100% 50%) |
right bottom |
Coin inférieur droit (100% 100%) |
initial |
Réinitialise à la valeur CSS par défaut (50% 50%) |
inherit |
Utilise la valeur de l'élément parent |
unset |
Supprime toute valeur définie |
Utilisez-les ensemble : cover avec center top rogne le bas, en gardant le haut visible.
Quiz¶
Q1 : Un logo d'entreprise dans une barre latérale haute apparaît écrasé. Que définissez-vous ?
- A) Object-Fit sur
fill - B) Object-Fit sur
contain - C) Width sur 100%
Réponse
B) Object-Fit sur contain — cela met le logo à l'échelle pour qu'il tienne sans déformation. Vous verrez peut-être un espace vide, mais les proportions sont préservées.
Q2 : Une image héro a Object-Fit: cover, mais le sujet (en bas) est rogné. Comment corriger ?
- A) Définir Object-Fit sur
contain - B) Définir Object-Position sur
center bottom - C) Augmenter la hauteur du conteneur
Réponse
B) Définir Object-Position sur center bottom — le rognage s'ancre au bas, gardant le sujet visible.
Q3 : Un utilisateur de lecteur d'écran visite votre page. Une image n'a pas de texte alternatif. Que se passe-t-il ?
- A) Le lecteur d'écran lit le nom du fichier (IMG_4392.jpg)
- B) Le lecteur d'écran l'ignore silencieusement
- C) L'un ou l'autre selon le lecteur d'écran
Réponse
C) L'un ou l'autre selon le lecteur d'écran — certains lisent le nom du fichier, d'autres l'ignorent. Dans tous les cas, ajoutez un texte alternatif descriptif pour que tous les visiteurs comprennent l'image.
Q4 : Vous voulez intégrer une vidéo YouTube. Quel bloc utiliser ?
- A) Le bloc Video
- B) Le bloc Map ou le bloc Custom code
- C) Le bloc Image
Réponse
B) Le bloc Map ou le bloc Custom code — le bloc Video est pour les fichiers vidéo auto-hébergés. Le bloc Map crée un iframe pour le contenu intégré.
Q5 : Votre image de 600px de large met longtemps à charger. Le fichier original fait 5000px. Que devez-vous faire ?
- A) Utiliser du CSS pour la réduire
- B) Définir Object-Fit sur
scale-down - C) Redimensionner l'image à 1200px avant de la téléverser
Réponse
C) Redimensionner l'image à 1200px avant de la téléverser — cela réduit considérablement la taille du fichier. La mise à l'échelle CSS ne réduit pas la taille du fichier, elle l'affiche juste plus petit.