`object-fit` dan `object-position` Properties
Artikel ini menerangkan mengenai object-fit
dan object-position
properties.
Anda boleh belajar cara mengatur objek seperti imej dan video serta cara menulisnya dalam CSS.
YouTube Video
HTML untuk Pratonton
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</h3>
23 <section style="width: 100%; height: 300px;">
24 <header><h4>object-fit: fill</h4></header>
25 <section class="sample-view" style="width: 100px; height: 100px;">
26 <img class="object-fit-fill" src="example.jpg" alt="Example Image">
27 </section>
28 <header><h4>object-fit: contain</h4></header>
29 <section class="sample-view" style="width: 100px; height: 100px;">
30 <img class="object-fit-contain" src="example.jpg" alt="Example Image">
31 </section>
32 <header><h4>object-fit: cover</h4></header>
33 <section class="sample-view" style="width: 100px; height: 100px;">
34 <img class="object-fit-cover" src="example.jpg" alt="Example Image">
35 </section>
36 <header><h4>object-fit: none</h4></header>
37 <section class="sample-view" style="width: 100px; height: 100px;">
38 <img class="object-fit-none" src="example.jpg" alt="Example Image">
39 </section>
40 <header><h4>object-fit: scale-down</h4></header>
41 <section class="sample-view" style="width: 100px; height: 100px;">
42 <img class="object-fit-scale-down" src="example.jpg" alt="Example Image">
43 </section>
44 </section>
45 </article>
46 <article>
47 <h3>object-fit : cover</h3>
48 <section>
49 <header><h4>CSS</h4></header>
50<pre class="sample">
51.background-image-cover img {
52 width: 100%;
53 height: 100%;
54 object-fit: cover;
55}
56</pre>
57 <header><h4>HTML</h4></header>
58<pre>
59<div class="background-image-cover">
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="image-container-cover">
66 <img src="example.jpg" alt="Example Image">
67 </div>
68 </section>
69 </section>
70 </article>
71 <article>
72 <h3>object-fit : contain</h3>
73 <section>
74 <header><h4>CSS</h4></header>
75<pre class="sample">
76.background-image-contain img {
77 width: 100%;
78 height: 100%;
79 object-fit: contain;
80}
81</pre>
82 <header><h4>HTML</h4></header>
83<pre>
84<div class="background-image-contain">
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="image-container-contain">
91 <img src="example.jpg" alt="Example Image">
92 </div>
93 </section>
94 </section>
95 </article>
96 <article>
97 <h3>object-fit Common Mistake Example</h3>
98 <section>
99 <header><h4>CSS</h4></header>
100<pre class="sample">
101.image-container-invalid {
102 width: 100%;
103 height: auto;
104 /* height: 500px; The height of the parent element is not specified */
105}
106
107.image-container-invalid img {
108 object-fit: cover;
109}
110</pre>
111 <header><h4>HTML</h4></header>
112<pre>
113<div class="background-image-invalid">
114 <img src="example.jpg" alt="Example Image">
115</div>
116</pre>
117 <header><h4>HTML+CSS</h4></header>
118 <section class="sample-view">
119 <div class="image-container-invalid">
120 <img src="example.jpg" alt="Example Image">
121 </div>
122 </section>
123 </section>
124 </article>
125 <article>
126 <h3>object-position</h3>
127 <section style="width: 100%; height: 200px;">
128 <header><h4>object-fit: cover; object-position: center;</h4></header>
129 <section class="sample-view" style="width: 100px; height: 100px;">
130 <img class="object-position-center" src="example.jpg" alt="Example Image">
131 </section>
132 <header><h4>object-position: 50% 50%</h4></header>
133 <section class="sample-view" style="width: 100px; height: 100px;">
134 <img class="object-position-50-50" src="example.jpg" alt="Example Image">
135 </section>
136 <header><h4>object-position: left top</h4></header>
137 <section class="sample-view" style="width: 100px; height: 100px;">
138 <img class="object-position-left-top" src="example.jpg" alt="Example Image">
139 </section>
140 <header><h4>object-position: right 50%</h4></header>
141 <section class="sample-view" style="width: 100px; height: 100px;">
142 <img class="object-position-right-50" src="example.jpg" alt="Example Image">
143 </section>
144 <header><h4>object-fit: cover; object-position: bottom right;</h4></header>
145 <section class="sample-view" style="width: 100px; height: 100px;">
146 <img class="object-position-bottom-right" src="example.jpg" alt="Example Image">
147 </section>
148 <header><h4>object-fit: contain; object-position: top;</h4></header>
149 <section class="sample-view" style="width: 100px; height: 100px;">
150 <img class="object-position-top" src="example.jpg" alt="Example Image">
151 </section>
152 <header><h4>object-fit: cover; object-position: 25% 75%;</h4></header>
153 <section class="sample-view" style="width: 100px; height: 100px;">
154 <img class="object-position-25-75" src="example.jpg" alt="Example Image">
155 </section>
156 <header><h4>object-fit: cover; object-position: center top;</h4></header>
157 <section class="sample-view" style="width: 100px; height: 100px;">
158 <img class="object-position-center-top" src="example.jpg" alt="Example Image">
159 </section>
160 </section>
161 </article>
162 </main>
163</body>
164</html>
Berkaitan dengan Penyesuaian Objek
Ciri object-fit
Ciri object-fit
dalam CSS digunakan terutamanya untuk mengawal bagaimana imej, video, dan kandungan lain sesuai dalam elemen kontainer mereka. Dengan menggunakan ciri ini, anda boleh menetapkan bagaimana elemen-elemen tertentu diubah saiznya dan diposisikan dengan estetik. Ia sangat berguna untuk menyesuaikan paparan imej atau video dengan memotong atau mengubah saiz jika tidak sesuai dalam elemen induk.
Nilai object-fit
fill
(Nilai Asas)
1img {
2 object-fit: fill;
3}
fill
adalah nilai asas, di mana imej atau video dipaksa meregang untuk memenuhi lebar dan tinggi elemen induk sepenuhnya. Dalam kes ini, nisbah aspek asal akan diabaikan, yang mungkin menyebabkan herotan imej.
- Ia memenuhi saiz elemen induk sepenuhnya.
- Disebabkan nisbah aspek diabaikan, imej atau video mungkin diregang secara menegak atau melintang.
contain
1img {
2 object-fit: contain;
3}
contain
mengubah saiz kandungan supaya ia sesuai sepenuhnya dalam elemen induk sambil mengekalkan nisbah aspek. Ia tidak melebihi saiz elemen induk, dan mungkin terdapat padding sama ada di sisi menegak atau melintang.
- Keseluruhan kandungan dipaparkan.
- Untuk mengekalkan nisbah aspek asal, padding (kesan letterbox atau pillarbox) mungkin muncul.
cover
1img {
2 object-fit: cover;
3}
cover
mengubah saiz kandungan untuk menutupi elemen induk sepenuhnya sambil mengekalkan nisbah aspek. Beberapa kandungan mungkin dipotong untuk sesuai dengan elemen induk, tetapi keseluruhan elemen memenuhi kontainer, jadi tiada jurang berlaku.
- Kandungan menutupi elemen induk sepenuhnya.
- Ia mungkin dipotong sambil mengekalkan nisbah aspek asal.
- Biasanya digunakan untuk imej latar atau imej bahagian utama.
none
1img {
2 object-fit: none;
3}
none
memaparkan imej atau video dalam saiz asal dan nisbah aspek asal mereka. Ia tidak menyesuaikan diri untuk muat ke saiz elemen induk, dan kandungan akan melimpah jika diperlukan.
- Saiz asal kandungan dikekalkan.
- Tiada pengubahan saiz dilakukan untuk memuatkan kandungan ke dalam elemen induk.
scale-down
1img {
2 object-fit: scale-down;
3}
scale-down
adalah nilai yang menggabungkan kelakuan none
dan contain
. Jika kandungan sesuai dengan elemen induk, ia bertindak seperti none
, tetapi jika kandungan terlalu besar, ia menggunakan kelakuan contain
dan dikecilkan untuk muat.
- Kandungan dikecilkan jika ia lebih besar daripada elemen induk.
- Ia dipaparkan dalam saiz asalnya jika ia lebih kecil.
Contoh Penggunaan
Menyesuaikan Imej Latar kepada Elemen Induk
Sebagai contoh, untuk menyebarkan imej merentasi keseluruhan skrin dengan reka bentuk responsif dalam fikiran, adalah biasa untuk menggunakan cover
. Kod berikut adalah contoh bagaimana memuatkan imej dengan rapat ke dalam elemen induk, walaupun ia dipotong.
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>
Dalam kes ini, imej sepenuhnya meliputi elemen induk, mengekalkan susun atur yang cantik pada apa-apa saiz skrin. Jika nisbah aspek berbeza, beberapa bahagian imej mungkin tidak kelihatan, tetapi ia mencapai persembahan yang sesuai dengan reka bentuk.
Memaparkan imej sambil mengekalkan nisbah aspek
Seterusnya, jika anda ingin memuatkan keseluruhan imej ke dalam elemen induk sambil mengekalkan nisbah aspeknya, contain
adalah sesuai.
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>
Dalam contoh ini, imej dikecilkan untuk muat ke dalam bekas, menghasilkan sedikit ruang kosong, tetapi imej asal dipaparkan tanpa gangguan.
Kesalahan biasa
Kesalahan biasa semasa menggunakan object-fit
adalah tidak menetapkan saiz elemen induk. object-fit
adalah sifat untuk memuatkan kandungan ke dalam elemen induk, jadi jika saiz elemen induk tidak jelas, kesan yang diharapkan tidak dapat dicapai. Pastikan elemen induk mempunyai width
atau height
yang ditetapkan dengan betul.
Sebagai contoh, dalam kod berikut, ketinggian elemen induk tidak dinyatakan, jadi object-fit
tidak berfungsi seperti yang diinginkan.
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: 500px; the parent element's height is not specified */
9}
10
11.image-container img {
12 object-fit: cover;
13}
14</style>
Dalam kes ini, anda perlu menetapkan ketinggian elemen induk atau melaraskan keseluruhan susun atur menggunakan flexbox atau grid layout.
Situasi di mana object-fit
harus digunakan
object-fit
adalah penting, terutamanya dalam reka bentuk responsif dan laman web yang memenuhi pelbagai saiz skrin. Sebagai contoh, ia berguna dalam situasi berikut:.
- Apabila anda ingin menyesuaikan imej atau video untuk dipaparkan dengan betul pada peranti yang berbeza
- Apabila anda ingin memaparkan imej latar atau sejenisnya dalam skrin penuh sambil membolehkan pemotongan
- Apabila anda ingin memuatkan imej ke dalam elemen ibu sambil mengekalkan nisbah aspeknya
- Apabila anda ingin memaparkan saiz imej dengan konsisten, seperti dalam galeri
Menggunakan object-fit
dalam situasi ini boleh mengekalkan konsistensi reka bentuk dan meningkatkan pengalaman pengguna.
Ringkasan
object-fit
ialah sifat CSS yang kuat yang membolehkan anda mengawal secara fleksibel bagaimana imej dan video dipaparkan berbanding elemen induk mereka pada halaman web. Dengan menggunakan nilai yang berbeza seperti fill
, contain
, cover
, none
, dan scale-down
, anda boleh memenuhi pelbagai keperluan reka bentuk. Dengan memahami cara menggunakannya dengan betul dan menerapkannya dengan tepat, anda boleh mencapai susun atur yang menarik secara visual.
Kuasi penggunaan object-fit
untuk mencipta reka bentuk yang responsif dan menarik secara estetik.
Sifat object-position
Sifat CSS object-position
digunakan untuk mengawal kedudukan kandungan seperti imej dan video dalam elemen. Dengan menggunakan object-position
, anda boleh meletakkan kandungan pada titik tertentu dan memberikan kesan visual yang sesuai dengan susun atur.
Gambaran Keseluruhan object-position
object-position
terutamanya digunakan pada elemen media seperti tag <img>
dan <video>
. Sifat ini mengawal tempat media dipaparkan dalam bekasnya. object-fit
sering digunakan bersama-sama dengan object-position
, di mana object-fit
menetapkan cara imej atau video sesuai dengan saiz bingkai, dan object-position
melaraskan kedudukan paparan kandungan.
1img {
2 object-fit: cover;
3 object-position: center;
4}
- Dalam contoh ini, imej dikecilkan untuk sesuai dengan bekas (
object-fit: cover
), dan diletakkan supaya pusatnya dipaparkan (object-position: center
).
Cara Menentukan Nilai
object-position
ditentukan dengan dua nilai seperti berikut.
- Kedudukan Mendatar (Paksi-X)
- Kedudukan Menegak (Paksi-Y)
Format Penentuan Nilai
Dalam object-position
, anda boleh menentukan nilai dalam format berikut.
- Kata kunci:
atas
,kanan
,bawah
,kiri
,tengah
- Peratusan:
0%
hingga100%
- Unit panjang:
px
,em
,rem
, dll.
Sebagai contoh, anda boleh menggunakannya seperti ini.
1img {
2 object-position: 50% 50%; /* Center the image */
3}
4
5video {
6 object-position: left top; /* Align to the top left */
7}
Gabungan Kata Kunci dan Peratusan
Anda juga boleh mencampurkan kata kunci dan peratusan.
1img {
2 object-position: right 50%;
3}
- Dalam contoh ini, imej diletakkan di tepi kanan, dan di tengah secara menegak pada 50%. Gabungan ini sangat berguna apabila kedudukan yang fleksibel diperlukan.
Gabungan dengan object-fit
object-position
selalunya digunakan bersama dengan object-fit
. object-fit
menentukan bagaimana imej atau video dilaraskan saiznya berbanding rangkanya. Sebagai contoh, menggunakan object-fit: cover
memotong imej untuk muat ke dalam rangka dan meletakkannya mengikut object-position
yang ditentukan.
1img {
2 object-fit: cover;
3 object-position: bottom right;
4}
- Dalam contoh ini, imej merebak ke seluruh bekas, memaparkan bahagian bawah kanan kandungan.
Contoh Gabungan dengan Nilai object-fit
fill
: Imej mungkin terherot, tetapi ia muat ke seluruh bekas.contain
: Seluruh imej dipaparkan sambil mengekalkan nisbah aspek.cover
: Dipotong untuk muat ke dalam bekas, sambil mengekalkan nisbah aspek.none
: Imej dipaparkan pada saiz asalnya.
1img {
2 object-fit: contain;
3 object-position: top;
4}
Dalam tetapan ini, imej diletakkan di bahagian atas bekas, dan seluruh imej dipaparkan.
Penggunaan Lanjutan
object-position
boleh digunakan dalam pelbagai senario bukan sahaja untuk pelarasan kedudukan mudah tetapi juga untuk meningkatkan kesan visual.
Menekankan Bahagian Tertentu Imej
Ia berguna apabila anda ingin menumpukan pada bahagian tertentu imej daripada memaparkan keseluruhan imej. Tetapkan object-fit
kepada cover
dan gunakan object-position
untuk menumpukan pada kawasan tertentu.
1img {
2 object-fit: cover;
3 object-position: 25% 75%;
4}
- Dalam contoh ini, bahagian bawah kiri imej dipaparkan, menekankan bahagian penting.
Apabila Menggunakan Video sebagai Latar Belakang
object-position
juga berguna apabila menggunakan video sebagai latar belakang. Anda boleh meletakkan video pada lokasi tertentu untuk mengekalkan konsistensi dengan reka bentuk keseluruhan halaman.
1video {
2 object-fit: cover;
3 object-position: center top;
4}
- Dalam tetapan ini, video memenuhi keseluruhan halaman dan diletakkan di bahagian tengah atas.
Masalah Biasa dan Penyelesaiannya
Mungkin terdapat beberapa masalah apabila menggunakan object-position
. Di sini, kami memperkenalkan masalah biasa dan penyelesaiannya.
Sebahagian imej terpotong
Apabila menggunakan object-fit: cover
, imej mungkin akan dipotong untuk muat dalam bekas. Dalam kes ini, dengan melaraskan kedudukan paparan menggunakan object-position
, anda boleh memastikan bahagian penting ditunjukkan.
1img {
2 object-fit: cover;
3 object-position: center;
4}
Kedudukan imej tidak seperti yang dijangkakan
Spesifikasi peratusan mungkin tidak selalu intuitif. Adalah perlu untuk mempertimbangkan saiz bekas dan nisbah aspek serta mencuba dengan nilai yang berbeza. Menggunakan alat pembangun untuk melaraskan dalam masa nyata adalah berkesan.
Ringkasan
object-position
adalah alat yang kuat untuk meletakkan elemen media dengan bebas. Dengan menggabungkannya dengan object-fit
, susun atur fleksibel yang disesuaikan dengan reka bentuk boleh dicapai. Kuasi kata kunci, peratusan, dan unit panjang untuk memaksimumkan kesan visual dalam pelbagai situasi.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.