Proprietà `object-fit` e `object-position`
Questo articolo spiega le proprietà object-fit
e object-position
.
Puoi imparare come disporre oggetti come immagini e video e come scriverli in CSS.
YouTube Video
HTML per Anteprima
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>
Relativo al posizionamento degli oggetti
Proprietà object-fit
La proprietà CSS object-fit
viene utilizzata principalmente per controllare come immagini, video e altri contenuti si adattano agli elementi contenitore. Utilizzando questa proprietà, puoi specificare in modo flessibile come gli elementi specificati vengono ridimensionati e posizionati esteticamente. È molto utile per regolare la visualizzazione di immagini o video ritagliandoli o ridimensionandoli quando non si adattano all'elemento genitore.
Valori di object-fit
fill
(Valore predefinito)
1img {
2 object-fit: fill;
3}
fill
è il valore predefinito, in cui immagini o video vengono allungati forzatamente per adattarsi completamente alla larghezza e all'altezza dell'elemento genitore. In questo caso, il rapporto di aspetto originale viene ignorato, il che può causare distorsioni dell'immagine.
- Si adatta completamente alla dimensione dell'elemento genitore.
- Poiché il rapporto di aspetto viene ignorato, le immagini o i video possono essere allungati verticalmente o orizzontalmente.
contain
1img {
2 object-fit: contain;
3}
contain
ridimensiona il contenuto in modo che si adatti completamente all'interno dell'elemento genitore, mantenendo il rapporto di aspetto. Non supera la dimensione dell'elemento genitore e può esserci un padding sul lato verticale o orizzontale.
- L'intero contenuto viene visualizzato.
- Per mantenere il rapporto di aspetto originale, potrebbe apparire del padding (effetto letterbox o pillarbox).
cover
1img {
2 object-fit: cover;
3}
cover
ridimensiona il contenuto per coprire completamente l'elemento genitore mantenendo il rapporto di aspetto. Alcuni contenuti possono essere ritagliati per adattarsi all'elemento genitore, ma l'intero elemento riempie il contenitore, quindi non si verificano spazi vuoti.
- Il contenuto copre completamente l'elemento genitore.
- Può essere ritagliato mantenendo il rapporto d'aspetto originale.
- Comunemente usato per immagini di sfondo o immagini nella sezione principale.
none
1img {
2 object-fit: none;
3}
none
visualizza immagini o video nelle loro dimensioni originali e con il rapporto d'aspetto originale. Non si adatta alle dimensioni dell'elemento genitore e il contenuto può debordare, se necessario.
- Le dimensioni originali del contenuto sono mantenute.
- Non viene effettuato alcun ridimensionamento per adattare il contenuto all'elemento genitore.
scale-down
1img {
2 object-fit: scale-down;
3}
scale-down
è un valore che combina il comportamento di none
e contain
. Se il contenuto si adatta all'elemento genitore, si comporta come none
, ma se il contenuto è troppo grande, applica il comportamento di contain
e viene ridimensionato per adattarsi.
- Il contenuto viene ridimensionato se è più grande dell'elemento genitore.
- Viene visualizzato nella sua dimensione originale se è più piccolo.
Esempio di utilizzo
Adattare le immagini di sfondo all'elemento genitore
Ad esempio, per estendere un'immagine su tutto lo schermo tenendo conto del design reattivo, è comune usare cover
. Il seguente codice è un esempio di adattamento di un'immagine strettamente all'elemento genitore, anche se viene ritagliata.
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>
In questo caso, l'immagine copre completamente l'elemento genitore, mantenendo un layout gradevole su qualsiasi dimensione dello schermo. Se il rapporto d'aspetto è diverso, alcune parti dell'immagine potrebbero non essere visibili, ma si ottiene una presentazione adatta al design.
Visualizzare immagini mantenendo il rapporto d'aspetto
Successivamente, se vuoi adattare l'intera immagine all'elemento genitore mantenendo il suo rapporto d'aspetto, contain
è adatto.
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>
In questo esempio, l'immagine viene ridimensionata per adattarsi al contenitore, creando del padding, ma l'immagine originale viene visualizzata senza distorsioni.
Errori comuni
Un errore comune quando si utilizza object-fit
è non impostare le dimensioni dell'elemento genitore. object-fit
è una proprietà per adattare il contenuto all'elemento genitore, quindi se le dimensioni dell'elemento genitore non sono definite chiaramente, l'effetto desiderato non può essere ottenuto. Assicurati che l'elemento genitore abbia width
o height
impostati correttamente.
Ad esempio, nel seguente codice, l'altezza dell'elemento genitore non è specificata, quindi object-fit
non funziona come previsto.
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>
In questo caso, devi specificare l'altezza dell'elemento genitore o regolare l'intero layout utilizzando flexbox o layout a griglia.
Situazioni in cui utilizzare object-fit
object-fit
è importante, soprattutto nel design responsivo e nei siti web che si adattano a diverse dimensioni dello schermo. Ad esempio, è utile nei seguenti casi:.
- Quando desideri regolare immagini o video per visualizzarli correttamente su diversi dispositivi
- Quando desideri visualizzare immagini di sfondo o simili a schermo intero consentendo il ritaglio
- Quando desideri adattare un'immagine a un elemento genitore mantenendone il rapporto d'aspetto
- Quando desideri visualizzare dimensioni delle immagini in modo uniforme, ad esempio nelle gallerie
Utilizzare object-fit
in queste situazioni può mantenere la coerenza del design e migliorare l'esperienza utente.
Riepilogo
object-fit
è una potente proprietà CSS che ti consente di controllare in modo flessibile come immagini e video vengono visualizzati rispetto agli elementi genitori su una pagina web. Utilizzando diversi valori come fill
, contain
, cover
, none
e scale-down
, puoi soddisfare varie esigenze di design. Capendo come usarlo correttamente e applicandolo in modo appropriato, puoi ottenere layout visivamente accattivanti.
Proprietà object-position
La proprietà CSS object-position
viene utilizzata per controllare la posizione di contenuti come immagini e video all'interno di un elemento. Usando object-position
, puoi posizionare il contenuto in punti specifici e fornire effetti visivi che si adattano al layout.
Panoramica di object-position
object-position
viene applicato principalmente a elementi multimediali come i tag <img>
e <video>
. Questa proprietà controlla dove viene visualizzato il contenuto multimediale nel contenitore. object-fit
viene spesso utilizzato in combinazione con object-position
, dove object-fit
definisce come un'immagine o un video si adatta alla dimensione del contenitore e object-position
regola la posizione del contenuto.
Come specificare i valori
object-position
può specificare le posizioni usando uno, due o quattro valori. Tuttavia, la specifica di quattro valori potrebbe non essere supportata dai browser più vecchi.
Specificare un valore
Se viene specificato solo un valore, questo viene interpretato come la posizione orizzontale (asse X), mentre la posizione verticale (asse Y) viene automaticamente impostata su center
.
- Quando viene specificato come
object-position: left;
, l’oggetto viene posizionato a sinistra. - Quando viene specificato come
object-position: 70%;
, l’oggetto viene posizionato al 70% orizzontalmente e centrato verticalmente. - Quando viene specificato come
object-position: 50px;
, l’oggetto viene posizionato 50px da sinistra e centrato verticalmente.
Specificare due valori
Specificando due valori, puoi impostare separatamente le posizioni orizzontale (asse X) e verticale (asse Y).
- Quando viene specificato come
object-position: center center;
, l’oggetto viene centrato. - Quando viene specificato come
object-position: right top;
, l’oggetto viene posizionato in alto a destra. - Quando viene specificato come
object-position: 75% 20%;
, l’oggetto viene posizionato al 75% orizzontalmente e al 20% verticalmente. - Quando viene specificato come
object-position: 50px 25px;
, l’oggetto viene posizionato a 50px da sinistra e a 25px dall’alto.
Specificare quattro valori
Specificando quattro valori, puoi fornire un posizionamento più dettagliato usando parole chiave come left
o top
insieme ai loro offset.
1object-position: <horizontal-keyword> <horizontal-offset> <vertical-keyword> <vertical-offset>;
- Quando viene specificato come
object-position: left 10px top 20px;
, l’oggetto viene posizionato a 10px da sinistra e a 20px dall’alto. - Quando viene specificato come
object-position: right 15% bottom 30px;
, l’oggetto viene posizionato a 15% da destra e a 30px dal basso.
Formato di specifica dei valori
object-position
può accettare i seguenti formati di valore.
- Puoi specificare parole chiave come
top
,right
,bottom
,left
ecenter
. - Puoi anche specificare valori usando percentuali come
50%
o unità comepx
.
Ad esempio, puoi usarlo in questo modo.
1img {
2 object-position: 50% 50%; /* Center the image */
3}
4
5video {
6 object-position: left top; /* Align to the top left */
7}
Combinazione di parole chiave e percentuali
È anche possibile combinare parole chiave e percentuali.
1img {
2 object-position: right 50%;
3}
- In questo esempio, l'immagine è posizionata al bordo destro e centrata verticalmente al 50%. Questa combinazione è molto utile quando è necessario un posizionamento flessibile.
Combinazione con object-fit
object-position
viene spesso utilizzato insieme a object-fit
. object-fit
determina come un'immagine o un video vengono ridimensionati rispetto alla loro cornice. Ad esempio, utilizzare object-fit: cover
ritaglia l'immagine per adattarla alla cornice e la posiziona secondo il object-position
specificato.
1img {
2 object-fit: cover;
3 object-position: right bottom;
4}
- In questo esempio, l'immagine si estende sull'intero contenitore, mostrando la parte inferiore destra del contenuto.
Esempi combinati con i valori di object-fit
Puoi specificare i seguenti valori per object-fit
.
fill
: L'immagine potrebbe essere distorta, ma si adatta all'intero contenitore.contain
: L'intera immagine viene visualizzata mantenendo il rapporto d'aspetto.cover
: Ritagliata per adattarsi al contenitore, mantenendo il rapporto d'aspetto.none
: L'immagine viene visualizzata nella sua dimensione originale.
Ad esempio, usando object-fit: contain
viene visualizzata l’intera immagine e posizionata secondo l’impostazione di object-position
.
1img {
2 object-fit: contain;
3 object-position: right;
4}
Con questa impostazione, l’immagine viene posizionata sul lato destro del contenitore e viene mostrata per intero.
Utilizzo avanzato
object-position
può essere applicato in vari scenari non solo per semplici regolazioni di posizionamento, ma anche per migliorare gli effetti visivi.
Enfatizzare una parte dell'immagine
È utile quando si desidera mettere a fuoco una parte specifica dell'immagine piuttosto che visualizzare l'intera immagine. Imposta object-fit
su cover
e utilizza object-position
per focalizzarti su un'area specifica.
1img {
2 object-fit: cover;
3 object-position: 25% 75%;
4}
- In questo esempio, viene visualizzata la parte inferiore sinistra dell'immagine, enfatizzando le parti importanti.
Quando si utilizza un video come sfondo
object-position
è utile anche quando si utilizza un video come sfondo. È possibile posizionare il video in una posizione specifica per mantenere la coerenza con il design generale della pagina.
1video {
2 object-fit: cover;
3 object-position: center top;
4}
- In questa configurazione, il video si adatta all'intera pagina ed è posizionato nella parte superiore centrale.
Problemi comuni e soluzioni
Potrebbero sorgere alcuni problemi quando si utilizza object-position
. Qui introduciamo i problemi comuni e le relative soluzioni.
Parte dell'immagine è tagliata
Quando si utilizza object-fit: cover
, l'immagine potrebbe essere ritagliata per adattarsi al contenitore. In questo caso, regolando la posizione di visualizzazione con object-position
, è possibile assicurarsi che le parti importanti siano visibili.
1img {
2 object-fit: cover;
3 object-position: center;
4}
La posizione dell'immagine non è quella prevista
Le specifiche in percentuale potrebbero non essere sempre intuitive. È necessario considerare le dimensioni e il rapporto d'aspetto del contenitore ed effettuare prove con valori diversi. Utilizzare strumenti per sviluppatori per regolazioni in tempo reale è efficace.
Riepilogo
object-position
è uno strumento potente per posizionare liberamente gli elementi multimediali. Combinandolo con object-fit
, è possibile ottenere layout flessibili adattati al design. Padroneggiare parole chiave, percentuali e unità di lunghezza per massimizzare gli effetti visivi in diverse situazioni.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.