`object-fit` et `object-position` Propriétés
Cet article explique les propriétés object-fit
et object-position
.
Vous pouvez apprendre à organiser des objets tels que des images et des vidéos et à les écrire en CSS.
YouTube Video
HTML pour l'aperçu
css-object-fit-position.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-object-fit-position.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Object</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Object Fit And Object Position Properties</h2>
20 </header>
21 <article>
22 <h3>object-fit : fill</h3>
23 <section>
24 <header><h4>CSS</h4></header>
25<pre class="sample">
26.container-fill img {
27 width: 100%;
28 height: 100%;
29 object-fit: fill;
30}
31</pre>
32 <header><h4>HTML</h4></header>
33<pre>
34<div class="container-fill" style="width: 150px; height: 100px;">
35 <img src="example.jpg" alt="Example Image">
36</div>
37</pre>
38 <header><h4>HTML+CSS</h4></header>
39 <section class="sample-view">
40 <div class="container-fill" style="width: 150px; height: 100px;">
41 <img src="example.jpg" alt="Example Image">
42 </div>
43 </section>
44 </section>
45 </article>
46 <article>
47 <h3>object-fit : contain</h3>
48 <section>
49 <header><h4>CSS</h4></header>
50<pre class="sample">
51.container-contain img {
52 width: 100%;
53 height: 100%;
54 object-fit: contain;
55}
56</pre>
57 <header><h4>HTML</h4></header>
58<pre>
59<div class="container-contain" style="width: 150px; height: 100px;">
60 <img src="example.jpg" alt="Example Image">
61</div>
62</pre>
63 <header><h4>HTML+CSS</h4></header>
64 <section class="sample-view">
65 <div class="container-contain" style="width: 150px; height: 100px;">
66 <img src="example.jpg" alt="Example Image">
67 </div>
68 </section>
69 </section>
70 </article>
71 <article>
72 <h3>object-fit : cover</h3>
73 <section>
74 <header><h4>CSS</h4></header>
75<pre class="sample">
76.container-cover img {
77 width: 100%;
78 height: 100%;
79 object-fit: cover;
80}
81</pre>
82 <header><h4>HTML</h4></header>
83<pre>
84<div class="container-cover" style="width: 150px; height: 100px;">
85 <img src="example.jpg" alt="Example Image">
86</div>
87</pre>
88 <header><h4>HTML+CSS</h4></header>
89 <section class="sample-view">
90 <div class="container-cover" style="width: 150px; height: 100px;">
91 <img src="example.jpg" alt="Example Image">
92 </div>
93 </section>
94 </section>
95 </article>
96 <article>
97 <h3>object-fit : none</h3>
98 <section>
99 <header><h4>CSS</h4></header>
100<pre class="sample">
101.container-none img {
102 width: 100%;
103 height: 100%;
104 object-fit: none;
105}
106</pre>
107 <header><h4>HTML</h4></header>
108<pre>
109<div class="container-none" style="width: 150px; height: 100px;">
110 <img src="example.jpg" alt="Example Image">
111</div>
112</pre>
113 <header><h4>HTML+CSS</h4></header>
114 <section class="sample-view">
115 <div class="container-none" style="width: 150px; height: 100px;">
116 <img src="example.jpg" alt="Example Image">
117 </div>
118 </section>
119 </section>
120 </article>
121 <article>
122 <h3>object-fit : scale-down</h3>
123 <section>
124 <header><h4>CSS</h4></header>
125<pre class="sample">
126.container-scale-down img {
127 width: 100%;
128 height: 100%;
129 object-fit: scale-down;
130}
131</pre>
132 <header><h4>HTML</h4></header>
133<pre>
134<div class="container-scale-down" style="width: 150px; height: 100px;">
135 <img src="example.jpg" alt="Example Image">
136</div>
137</pre>
138 <header><h4>HTML+CSS</h4></header>
139 <section class="sample-view">
140 <div class="container-scale-down" style="width: 150px; height: 100px;">
141 <img src="example.jpg" alt="Example Image">
142 </div>
143 </section>
144 </section>
145 </article>
146 <article>
147 <h3>object-fit : Example(Cover)</h3>
148 <section>
149 <header><h4>CSS</h4></header>
150<pre class="sample">
151.container-example-cover img {
152 width: 100%;
153 height: 100%;
154 object-fit: cover;
155}
156</pre>
157 <header><h4>HTML</h4></header>
158<pre>
159<div class="container-example-cover" style="width: 150px; height: 100px;">
160 <img src="example.jpg" alt="Example Image">
161</div>
162</pre>
163 <header><h4>HTML+CSS</h4></header>
164 <section class="sample-view">
165 <div class="container-example-cover" style="width: 150px; height: 100px;">
166 <img src="example.jpg" alt="Example Image">
167 </div>
168 </section>
169 </section>
170 </article>
171 <article>
172 <h3>object-fit : Example(Contain)</h3>
173 <section>
174 <header><h4>CSS</h4></header>
175<pre class="sample">
176.container-example-contain img {
177 width: 100%;
178 height: 100%;
179 object-fit: contain;
180}
181</pre>
182 <header><h4>HTML</h4></header>
183<pre>
184<div class="container-example-contain" style="width: 150px; height: 100px;">
185 <img src="example.jpg" alt="Example Image">
186</div>
187</pre>
188 <header><h4>HTML+CSS</h4></header>
189 <section class="sample-view">
190 <div class="container-example-contain" style="width: 150px; height: 100px;">
191 <img src="example.jpg" alt="Example Image">
192 </div>
193 </section>
194 </section>
195 </article>
196 <article>
197 <h3>object-fit Common Mistake Example</h3>
198 <section>
199 <header><h4>CSS</h4></header>
200<pre class="sample">
201.container-invalid {
202 width: 100px;
203 height: auto;
204 /* height: 150px; The height of the parent element is not specified */
205}
206
207.container-invalid img {
208 object-fit: cover;
209}
210</pre>
211 <header><h4>HTML</h4></header>
212<pre>
213<div class="background-image-invalid">
214 <img src="example.jpg" alt="Example Image">
215</div>
216</pre>
217 <header><h4>HTML+CSS</h4></header>
218 <section class="sample-view">
219 <div class="container-invalid">
220 <img src="example.jpg" alt="Example Image">
221 </div>
222 </section>
223 </section>
224 </article>
225 <article>
226 <h3>object-position : one value</h3>
227 <section>
228 <header><h4>object-position: center;</h4></header>
229 <section class="sample-view" style="width: 550px; height: 250px;">
230 <img class="object-position-center" src="example.jpg" alt="Example Image">
231 </section>
232 <header><h4>object-position: left;</h4></header>
233 <section class="sample-view" style="width: 550px; height: 250px;">
234 <img class="object-position-left" src="example.jpg" alt="Example Image">
235 </section>
236 <header><h4>object-position: 70%;</h4></header>
237 <section class="sample-view" style="width: 550px; height: 250px;">
238 <img class="object-position-70" src="example.jpg" alt="Example Image">
239 </section>
240 <header><h4>object-position: 50px;</h4></header>
241 <section class="sample-view" style="width: 550px; height: 250px;">
242 <img class="object-position-50px" src="example.jpg" alt="Example Image">
243 </section>
244 </section>
245 </article>
246 <article>
247 <h3>object-position : two values</h3>
248 <section>
249 <header><h4>object-position: center center</h4></header>
250 <section class="sample-view" style="width: 550px; height: 250px;">
251 <img class="object-position-center-center" src="example.jpg" alt="Example Image">
252 </section>
253 <header><h4>object-position: right top</h4></header>
254 <section class="sample-view" style="width: 550px; height: 250px;">
255 <img class="object-position-right-top" src="example.jpg" alt="Example Image">
256 </section>
257 <header><h4>object-position: 75% 20%</h4></header>
258 <section class="sample-view" style="width: 550px; height: 250px;">
259 <img class="object-position-75-20" src="example.jpg" alt="Example Image">
260 </section>
261 <header><h4>object-position: 50px 25px</h4></header>
262 <section class="sample-view" style="width: 550px; height: 250px;">
263 <img class="object-position-50px-25px" src="example.jpg" alt="Example Image">
264 </section>
265 </section>
266 </article>
267 <article>
268 <h3>object-position: four values</h3>
269 <section>
270 <header><h4>object-position: left 10px top 20px</h4></header>
271 <section class="sample-view" style="width: 550px; height: 250px;">
272 <img class="object-position-left-10-top-20" src="example.jpg" alt="Example Image">
273 </section>
274 <header><h4>object-position: right 15% bottom 30px</h4></header>
275 <section class="sample-view" style="width: 550px; height: 250px;">
276 <img class="object-position-right-15-bottom-30" src="example.jpg" alt="Example Image">
277 </section>
278 </section>
279 </article>
280 <article>
281 <h3>object-position: mixed values</h3>
282 <section>
283 <header><h4>object-position: right 50%</h4></header>
284 <section class="sample-view" style="width: 550px; height: 250px;">
285 <img class="object-position-right-50" src="example.jpg" alt="Example Image">
286 </section>
287 </section>
288 </article>
289 <article>
290 <h3>object-position and object-fit</h3>
291 <section>
292 <header><h4>object-fit: cover; object-position: right bottom;</h4></header>
293 <section class="sample-view" style="width: 550px; height: 250px;">
294 <img class="object-position-right-bottom" src="example.jpg" alt="Example Image">
295 </section>
296 <header><h4>object-fit: contain; object-position: right;</h4></header>
297 <section class="sample-view" style="width: 550px; height: 250px;">
298 <img class="object-position-right" src="example.jpg" alt="Example Image">
299 </section>
300 </section>
301 </article>
302 </main>
303</body>
304</html>
Concernant l'ajustement des objets
Propriété object-fit
La propriété CSS object-fit
est principalement utilisée pour contrôler comment les images, vidéos et autres contenus s'ajustent à leurs éléments conteneurs. En utilisant cette propriété, vous pouvez spécifier de manière flexible comment les éléments spécifiés sont redimensionnés et positionnés esthétiquement. Elle est très utile pour ajuster l'affichage des images ou vidéos en les recadrant ou les redimensionnant lorsqu'elles ne s'adaptent pas à l'élément parent.
Valeurs de object-fit
fill
(Valeur par défaut)
1img {
2 object-fit: fill;
3}
fill
est la valeur par défaut, où les images ou vidéos sont étirées de force pour correspondre entièrement à la largeur et à la hauteur de l'élément parent. Dans ce cas, le rapport d'aspect original est ignoré, ce qui peut entraîner une distorsion de l'image.
- Il s'adapte complètement à la taille de l'élément parent.
- Comme le rapport d'aspect est ignoré, les images ou vidéos peuvent être étirées verticalement ou horizontalement.
contain
1img {
2 object-fit: contain;
3}
contain
redimensionne le contenu pour qu'il s'adapte entièrement à l'intérieur de l'élément parent tout en conservant le rapport d'aspect. Il ne dépasse pas la taille de l'élément parent, et il peut y avoir des marges sur les côtés verticaux ou horizontaux.
- L'intégralité du contenu est affichée.
- Pour préserver le rapport d'aspect original, des marges (effet letterbox ou pillarbox) peuvent apparaître.
cover
1img {
2 object-fit: cover;
3}
cover
redimensionne le contenu pour couvrir complètement l'élément parent tout en conservant le rapport d'aspect. Une partie du contenu peut être recadrée pour s'adapter à l'élément parent, mais l'ensemble de l'élément remplit le conteneur, sans espaces.
- Le contenu couvre entièrement l'élément parent.
- Il peut être rogné tout en conservant le rapport d'aspect d'origine.
- Couramment utilisé pour des images de fond ou des images de section principale.
none
1img {
2 object-fit: none;
3}
none
affiche les images ou vidéos dans leur taille et rapport d'aspect d'origine. Il ne s'ajuste pas à la taille de l'élément parent, et le contenu déborde si nécessaire.
- La taille d'origine du contenu est conservée.
- Aucun redimensionnement n'est effectué pour ajuster le contenu à l'élément parent.
scale-down
1img {
2 object-fit: scale-down;
3}
scale-down
est une valeur qui combine le comportement de none
et contain
. Si le contenu s'adapte à l'élément parent, il se comporte comme none
, mais si le contenu est trop grand, il applique le comportement de contain
et est réduit pour s'adapter.
- Le contenu est réduit s'il est plus grand que l'élément parent.
- Il est affiché à sa taille d'origine s'il est plus petit.
Exemple d'utilisation
Ajustement des images de fond à l'élément parent
Par exemple, pour étendre une image sur tout l'écran avec une conception réactive, il est courant d'utiliser cover
. Le code suivant est un exemple d'ajustement d'une image à l'élément parent, même si elle est rognée.
1<div class="background-image">
2 <img src="example.jpg" alt="Example Image">
3</div>
4
5<style>
6.background-image img {
7 width: 100%;
8 height: 100%;
9 object-fit: cover;
10}
11</style>
Dans ce cas, l'image couvre entièrement l'élément parent, maintenant un bel agencement sur tous les formats d'écran. Si le rapport d'aspect est différent, certaines parties de l'image peuvent ne pas être visibles, mais cela permet une présentation adaptée au design.
Afficher des images tout en maintenant le rapport d'aspect
Ensuite, si vous voulez adapter l'image entière à l'élément parent tout en maintenant son rapport d'aspect, contain
est approprié.
1<div class="image-container">
2 <img src="example.jpg" alt="Example Image">
3</div>
4
5<style>
6.image-container img {
7 width: 100%;
8 height: 100%;
9 object-fit: contain;
10}
11</style>
Dans cet exemple, l'image est réduite pour s'adapter au conteneur, ce qui entraîne un certain remplissage, mais l'image originale est affichée sans distorsion.
Erreurs courantes
Une erreur courante lors de l'utilisation de object-fit
est de ne pas définir la taille de l'élément parent. object-fit
est une propriété permettant d'adapter le contenu à l'élément parent, donc si la taille de l'élément parent n'est pas définie, l'effet attendu ne peut être obtenu. Assurez-vous que l'élément parent a une width
ou une height
correctement définie.
Par exemple, dans le code suivant, la hauteur de l'élément parent n'est pas spécifiée, donc object-fit
ne fonctionne pas comme prévu.
1<div class="image-container">
2 <img src="example.jpg" alt="Example Image">
3</div>
4
5<style>
6.image-container {
7 width: 100%;
8 /* height: 150px; the parent element's height is not specified */
9}
10
11.image-container img {
12 object-fit: cover;
13}
14</style>
Dans ce cas, vous devez spécifier la hauteur de l'élément parent ou ajuster l'ensemble de la mise en page à l'aide de flexbox ou d'un layout de grille.
Situations où object-fit
doit être utilisé
object-fit
est important, surtout dans les conceptions responsives et les sites web adaptés à différentes tailles d'écran. Par exemple, il est utile dans les cas suivants :.
- Lorsque vous souhaitez ajuster les images ou vidéos pour qu'elles s'affichent correctement sur différents appareils
- Lorsque vous souhaitez afficher des images de fond ou similaires en plein écran tout en permettant une découpe
- Lorsque vous souhaitez ajuster une image dans un élément parent tout en conservant son ratio d'aspect
- Lorsque vous souhaitez afficher des tailles d'image cohérentes, comme dans des galeries
Utiliser object-fit
dans ces situations peut maintenir la cohérence du design et améliorer l'expérience utilisateur.
Résumé
object-fit
est une propriété CSS puissante qui permet de contrôler de manière flexible la façon dont les images et vidéos sont affichées par rapport à leurs éléments parents sur une page web. En utilisant différentes valeurs comme fill
, contain
, cover
, none
et scale-down
, vous pouvez répondre à divers besoins de conception. En comprenant comment l'utiliser correctement et en l'appliquant de manière appropriée, vous pouvez obtenir des mises en page visuellement attrayantes.
Propriété object-position
La propriété CSS object-position
est utilisée pour contrôler le positionnement de contenus tels que les images et vidéos à l'intérieur d'un élément. En utilisant object-position
, vous pouvez positionner le contenu à des points spécifiques et offrir des effets visuels adaptés à la mise en page.
Présentation de object-position
object-position
s'applique principalement aux éléments média tels que les balises <img>
et <video>
. Cette propriété contrôle l'endroit où le média est affiché dans son conteneur. object-fit
est souvent utilisé en combinaison avec object-position
, où object-fit
définit comment une image ou une vidéo s'adapte à la taille du cadre, et object-position
ajuste la position d'affichage du contenu.
Comment spécifier des valeurs
object-position
peut spécifier des positions en utilisant une, deux ou quatre valeurs. Cependant, la spécification de quatre valeurs peut ne pas être prise en charge par les anciens navigateurs.
Spécifier une seule valeur
Si une seule valeur est spécifiée, elle est interprétée comme la position horizontale (axe X) et la position verticale (axe Y) est automatiquement définie sur center
.
- Lorsqu'il est spécifié comme
object-position: left;
, l'objet est positionné à gauche. - Lorsqu'il est spécifié comme
object-position: 70%;
, l'objet est positionné à 70% horizontalement et centré verticalement. - Lorsqu'il est spécifié comme
object-position: 50px;
, l'objet est positionné à 50px de la gauche et centré verticalement.
Spécifier deux valeurs
Spécifier deux valeurs permet de définir séparément les positions horizontale (axe X) et verticale (axe Y).
- Lorsqu'il est spécifié comme
object-position: center center;
, l'objet est centré. - Lorsqu'il est spécifié comme
object-position: right top;
, l'objet est positionné en haut à droite. - Lorsqu'il est spécifié comme
object-position: 75% 20%;
, l'objet est positionné à 75% horizontalement et à 20% verticalement. - Lorsqu'il est spécifié comme
object-position: 50px 25px;
, l'objet est positionné à 50px de la gauche et à 25px du haut.
Spécifier quatre valeurs
En spécifiant quatre valeurs, vous pouvez indiquer un positionnement plus précis à l'aide de mots-clés comme left
ou top
accompagnés de leurs décalages.
1object-position: <horizontal-keyword> <horizontal-offset> <vertical-keyword> <vertical-offset>;
- Lorsqu'il est spécifié comme
object-position: left 10px top 20px;
, l'objet est positionné à 10px de la gauche et à 20px du haut. - Lorsqu'il est spécifié comme
object-position: right 15% bottom 30px;
, l'objet est positionné à 15% de la droite et à 30px du bas.
Format de Spécification des Valeurs
object-position
peut accepter les formats de valeurs suivants.
- Vous pouvez spécifier des mots-clés tels que
top
,right
,bottom
,left
etcenter
. - Vous pouvez également spécifier des valeurs en pourcentage comme
50%
ou en unités telles quepx
.
Par exemple, vous pouvez l’utiliser comme ceci.
1img {
2 object-position: 50% 50%; /* Center the image */
3}
4
5video {
6 object-position: left top; /* Align to the top left */
7}
Combinaison de mots-clés et de pourcentages
Il est également possible de mélanger des mots-clés et des pourcentages.
1img {
2 object-position: right 50%;
3}
- Dans cet exemple, l'image est placée au bord droit et centrée verticalement à 50%. Cette combinaison est très utile lorsqu'un positionnement flexible est nécessaire.
Combinaison avec object-fit
object-position
est souvent utilisé avec object-fit
. object-fit
détermine comment une image ou une vidéo est redimensionnée par rapport à son cadre. Par exemple, utiliser object-fit: cover
découpe l'image pour qu'elle s'adapte au cadre et la positionne selon le object-position
spécifié.
1img {
2 object-fit: cover;
3 object-position: right bottom;
4}
- Dans cet exemple, l'image s'étend sur tout le conteneur, affichant la partie inférieure droite du contenu.
Exemples combinés avec les valeurs de object-fit
Vous pouvez spécifier les valeurs suivantes pour object-fit
.
fill
: L'image peut être déformée, mais elle s'adapte à l'ensemble du conteneur.contain
: L'image entière est affichée tout en conservant le rapport d'aspect.cover
: Découpé pour s'adapter au conteneur tout en conservant le rapport d'aspect.none
: L'image est affichée à sa taille d'origine.
Par exemple, utiliser object-fit: contain
affiche l'image entière et la positionne selon le paramètre object-position
.
1img {
2 object-fit: contain;
3 object-position: right;
4}
Avec ce paramètre, l'image est placée du côté droit du conteneur et l'image entière est affichée.
Utilisation avancée
object-position
peut être appliqué dans divers scénarios, non seulement pour des ajustements simples de positionnement, mais aussi pour améliorer les effets visuels.
Mettre en avant une partie de l'image
C'est utile lorsque vous souhaitez vous concentrer sur une partie spécifique de l'image plutôt que d'afficher l'image entière. Définissez object-fit
sur cover
et utilisez object-position
pour vous concentrer sur une zone spécifique.
1img {
2 object-fit: cover;
3 object-position: 25% 75%;
4}
- Dans cet exemple, la partie inférieure gauche de l'image est affichée, mettant en avant des éléments importants.
Lors de l'utilisation d'une vidéo comme arrière-plan
object-position
est également utile lors de l'utilisation d'une vidéo comme arrière-plan. Vous pouvez positionner la vidéo à un emplacement précis pour maintenir la cohérence avec le design global de la page.
1video {
2 object-fit: cover;
3 object-position: center top;
4}
- Dans cette configuration, la vidéo couvre l'intégralité de la page et est positionnée en haut au centre.
Problèmes courants et solutions
Il peut y avoir quelques problèmes lors de l'utilisation de object-position
. Ici, nous présentons les problèmes courants et leurs solutions.
Une partie de l'image est coupée
Lors de l'utilisation de object-fit: cover
, l'image peut être recadrée pour s'adapter au conteneur. Dans ce cas, en ajustant la position d'affichage avec object-position
, vous pouvez vous assurer que les parties importantes sont affichées.
1img {
2 object-fit: cover;
3 object-position: center;
4}
La position de l'image n'est pas comme prévu
Les spécifications en pourcentage peuvent ne pas toujours être intuitives. Il est nécessaire de prendre en compte la taille et le format du conteneur et d'expérimenter avec différentes valeurs. Utiliser les outils de développement pour ajuster en temps réel est efficace.
Résumé
object-position
est un outil puissant pour positionner librement les éléments multimédias. En le combinant avec object-fit
, des mises en page flexibles adaptées au design peuvent être réalisées. Maîtrisez les mots-clés, les pourcentages et les unités de longueur pour maximiser les effets visuels dans différentes situations.
Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.