`object-fit` dan Properti `object-position`
Artikel ini menjelaskan properti object-fit
dan object-position
.
Anda dapat belajar cara mengatur objek seperti gambar dan video serta cara menuliskannya di CSS.
YouTube Video
HTML untuk Pratinjau
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>
Terkait Penyesuaian Objek
Properti object-fit
Properti CSS object-fit
digunakan terutama untuk mengontrol bagaimana gambar, video, dan konten lainnya sesuai dengan elemen container mereka. Dengan menggunakan properti ini, Anda dapat dengan fleksibel menentukan bagaimana elemen yang ditentukan diubah ukurannya dan diposisikan secara estetis. Ini sangat berguna untuk menyesuaikan tampilan gambar atau video dengan memotong atau mengubah ukuran ketika mereka tidak sesuai dalam elemen induk.
Nilai object-fit
fill
(Nilai Default)
1img {
2 object-fit: fill;
3}
fill
adalah nilai default, di mana gambar atau video dipaksa untuk direntangkan hingga sepenuhnya sesuai dengan lebar dan tinggi elemen induk. Dalam kasus ini, rasio aspek asli diabaikan, yang dapat menyebabkan distorsi gambar.
- Ini sepenuhnya sesuai dengan ukuran elemen induk.
- Karena rasio aspek diabaikan, gambar atau video mungkin direntangkan secara vertikal atau horizontal.
contain
1img {
2 object-fit: contain;
3}
contain
mengubah ukuran konten sehingga sepenuhnya sesuai dengan elemen induk sambil mempertahankan rasio aspek. Ini tidak melebihi ukuran elemen induk, dan mungkin ada padding pada sisi vertikal atau horizontal.
- Seluruh konten ditampilkan.
- Untuk mempertahankan rasio aspek asli, padding (efek letterbox atau pillarbox) mungkin muncul.
cover
1img {
2 object-fit: cover;
3}
cover
mengubah ukuran konten untuk sepenuhnya menutupi elemen induk sambil mempertahankan rasio aspek. Beberapa konten mungkin dipangkas untuk sesuai dengan elemen induk, tetapi seluruh elemen memenuhi container, sehingga tidak ada celah.
- Konten sepenuhnya menutupi elemen induk.
- Dapat dipotong sambil mempertahankan rasio aspek asli.
- Umumnya digunakan untuk gambar latar belakang atau gambar bagian hero.
none
1img {
2 object-fit: none;
3}
none
menampilkan gambar atau video dalam ukuran dan rasio aspek aslinya. Konten tidak menyesuaikan dengan ukuran elemen induk, dan akan meluap jika diperlukan.
- Ukuran asli konten dipertahankan.
- Tidak ada pengubahan ukuran yang dilakukan agar konten sesuai dengan elemen induk.
scale-down
1img {
2 object-fit: scale-down;
3}
scale-down
adalah nilai yang menggabungkan perilaku none
dan contain
. Jika konten sesuai dengan elemen induk, perilakunya seperti none
, tetapi jika kontennya terlalu besar, perilakunya seperti contain
dan diperkecil agar sesuai.
- Konten akan diperkecil jika ukurannya lebih besar dari elemen induk.
- Akan ditampilkan dalam ukuran aslinya jika lebih kecil.
Contoh Penggunaan
Menyesuaikan Gambar Latar dengan Elemen Induk
Sebagai contoh, untuk menyebarkan gambar ke seluruh layar dengan mempertimbangkan desain responsif, biasanya digunakan cover
. Kode berikut adalah contoh menyesuaikan gambar dengan erat ke elemen induk, meskipun harus 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 kasus ini, gambar sepenuhnya menutupi elemen induk, menjaga tata letak yang indah di berbagai ukuran layar. Jika rasio aspeknya berbeda, beberapa bagian gambar mungkin tidak terlihat, tetapi ini memberikan presentasi yang sesuai dengan desain.
Menampilkan gambar sambil mempertahankan rasio aspek
Selanjutnya, jika Anda ingin menyesuaikan seluruh gambar ke elemen induk sambil mempertahankan rasio aspeknya, contain
adalah pilihan yang tepat.
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, gambar diperkecil agar sesuai dengan wadah, menghasilkan beberapa ruang kosong, tetapi gambar aslinya ditampilkan tanpa distorsi.
Kesalahan umum
Kesalahan umum saat menggunakan object-fit
adalah tidak menetapkan ukuran elemen induk. object-fit
adalah properti untuk menyesuaikan konten dengan elemen induk, jadi jika ukuran elemen induk tidak jelas, efek yang diharapkan tidak dapat dicapai. Pastikan elemen induk memiliki width
atau height
yang ditetapkan dengan benar.
Sebagai contoh, dalam kode berikut, tinggi elemen induk tidak ditentukan, sehingga object-fit
tidak berfungsi sebagaimana mestinya.
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 kasus ini, Anda perlu menentukan tinggi elemen induk atau menyesuaikan tata letak keseluruhan menggunakan flexbox atau grid layout.
Situasi di mana object-fit
harus digunakan
object-fit
penting, terutama dalam desain responsif dan situs web yang melayani berbagai ukuran layar. Misalnya, ini berguna dalam kasus berikut:.
- Ketika Anda ingin menyesuaikan gambar atau video agar tampil dengan benar di perangkat yang berbeda
- Ketika Anda ingin menampilkan gambar latar atau sejenisnya dalam layar penuh sambil memungkinkan pemotongan
- Ketika Anda ingin menyesuaikan gambar ke dalam elemen induk sambil mempertahankan rasio aspeknya
- Ketika Anda ingin menampilkan ukuran gambar secara konsisten, seperti dalam galeri
Menggunakan object-fit
dalam situasi ini dapat mempertahankan konsistensi desain dan meningkatkan pengalaman pengguna.
Ringkasan
object-fit
adalah properti CSS yang kuat yang memungkinkan Anda mengontrol secara fleksibel bagaimana gambar dan video ditampilkan relatif terhadap elemen induk mereka di halaman web. Dengan menggunakan nilai yang berbeda seperti fill
, contain
, cover
, none
, dan scale-down
, Anda dapat memenuhi berbagai kebutuhan desain. Dengan memahami cara menggunakannya dengan benar dan menerapkannya secara tepat, Anda dapat menciptakan tata letak yang menarik secara visual.
Kuasi penggunaan object-fit
untuk menciptakan desain yang responsif dan estetis.
Properti object-position
Properti CSS object-position
digunakan untuk mengontrol posisi konten seperti gambar dan video di dalam sebuah elemen. Dengan menggunakan object-position
, Anda dapat memposisikan konten pada titik tertentu dan memberikan efek visual yang sesuai dengan tata letak.
Gambaran umum object-position
object-position
terutama diterapkan pada elemen media seperti tag <img>
dan <video>
. Properti ini mengontrol di mana media ditampilkan dalam wadahnya. object-fit
sering digunakan bersama dengan object-position
, di mana object-fit
mengatur bagaimana gambar atau video sesuai dengan ukuran bingkai, dan object-position
menyesuaikan posisi tampilan konten.
1img {
2 object-fit: cover;
3 object-position: center;
4}
- Dalam contoh ini, gambar diubah ukurannya agar sesuai dengan wadah (
object-fit: cover
), dan diposisikan sehingga bagian tengahnya ditampilkan (object-position: center
).
Cara Menentukan Nilai
object-position
ditentukan dengan dua nilai sebagai berikut.
- Posisi horizontal (sumbu X)
- Posisi vertikal (sumbu Y)
Format Spesifikasi Nilai
Dalam object-position
, Anda dapat menentukan nilai dalam format berikut.
- Kata kunci:
top
,right
,bottom
,left
,center
- Persentase:
0%
hingga100%
- Satuan panjang:
px
,em
,rem
, dll.
Sebagai contoh, Anda dapat 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}
Kombinasi Kata Kunci dan Persentase
Dimungkinkan juga untuk mencampur kata kunci dan persentase.
1img {
2 object-position: right 50%;
3}
- Dalam contoh ini, gambar ditempatkan di tepi kanan dan diposisikan secara vertikal pada 50%. Kombinasi ini sangat berguna saat dibutuhkan posisi yang fleksibel.
Kombinasi dengan object-fit
object-position
sering digunakan bersama dengan object-fit
. object-fit
menentukan bagaimana sebuah gambar atau video diubah ukurannya relatif terhadap bingkainya. Misalnya, menggunakan object-fit: cover
memotong gambar agar sesuai dengan bingkai dan memposisikannya sesuai dengan object-position
yang ditentukan.
1img {
2 object-fit: cover;
3 object-position: bottom right;
4}
- Dalam contoh ini, gambar menyebar ke seluruh wadah, menampilkan bagian kanan bawah dari konten.
Contoh Kombinasi dengan Nilai object-fit
fill
: Gambar mungkin akan terdistorsi, tetapi sesuai dengan seluruh wadah.contain
: Seluruh gambar ditampilkan dengan tetap mempertahankan rasio aspeknya.cover
: Dipotong agar sesuai dengan wadah, sambil tetap mempertahankan rasio aspek.none
: Gambar ditampilkan dalam ukuran aslinya.
1img {
2 object-fit: contain;
3 object-position: top;
4}
Dalam pengaturan ini, gambar ditempatkan di atas wadah, dan seluruh gambar ditampilkan.
Penggunaan Tingkat Lanjut
object-position
dapat diterapkan dalam berbagai skenario tidak hanya untuk penyesuaian posisi sederhana tetapi juga untuk meningkatkan efek visual.
Menonjolkan Bagian Tertentu dari Gambar
Ini berguna ketika Anda ingin fokus pada bagian tertentu dari gambar daripada menampilkan seluruh gambar. Atur object-fit
ke cover
dan gunakan object-position
untuk fokus pada area tertentu.
1img {
2 object-fit: cover;
3 object-position: 25% 75%;
4}
- Dalam contoh ini, bagian kiri bawah gambar ditampilkan, menonjolkan bagian penting.
Saat Menggunakan Video sebagai Latar Belakang
object-position
juga berguna saat menggunakan video sebagai latar belakang. Anda dapat memposisikan video di lokasi tertentu untuk menjaga konsistensi dengan desain keseluruhan halaman.
1video {
2 object-fit: cover;
3 object-position: center top;
4}
- Dalam pengaturan ini, video memenuhi seluruh halaman dan diposisikan di bagian tengah atas.
Masalah Umum dan Solusinya
Mungkin ada beberapa masalah saat menggunakan object-position
. Di sini, kami memperkenalkan masalah umum dan solusinya.
Bagian dari gambar terpotong
Saat menggunakan object-fit: cover
, gambar mungkin terpotong untuk menyesuaikan dengan wadah. Dalam kasus ini, dengan menyesuaikan posisi tampilan menggunakan object-position
, Anda dapat memastikan bagian penting terlihat.
1img {
2 object-fit: cover;
3 object-position: center;
4}
Posisi gambar tidak sesuai dengan yang diharapkan
Spesifikasi persentase mungkin tidak selalu intuitif. Penting untuk mempertimbangkan ukuran dan rasio aspek wadah serta mencoba berbagai nilai. Menggunakan alat pengembang untuk menyesuaikan secara real-time sangat efektif.
Ringkasan
object-position
adalah alat yang kuat untuk memposisikan elemen media secara bebas. Dengan menggabungkannya dengan object-fit
, tata letak fleksibel yang disesuaikan dengan desain dapat dicapai. Kuasi kata kunci, persentase, dan satuan panjang untuk memaksimalkan efek visual dalam berbagai situasi.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.