Apa yang dilakukan otomatis dalam margin: 0 otomatis?


126

Apa yang autodilakukan margin:0 auto;?

Sepertinya saya tidak mengerti apa yang autodilakukannya. Saya tahu itu terkadang memiliki efek pemusatan objek. Terima kasih.

Jawaban:


189

Ketika Anda telah menentukan sebuah widthpada objek yang telah Anda terapkan margin: 0 auto, objek tersebut akan berada di tengah dalam wadah induknya.

Menentukan autosebagai parameter kedua pada dasarnya memberi tahu browser untuk secara otomatis menentukan margin kiri dan kanan itu sendiri, yang dilakukan dengan mengaturnya secara merata. Ini menjamin bahwa margin kiri dan kanan akan diatur ke ukuran yang sama. Parameter pertama 0 menunjukkan bahwa margin atas dan bawah keduanya akan disetel ke 0.

margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;

Oleh karena itu, sebagai contoh , jika induknya 100px dan anaknya adalah 50px, maka autoproperti akan menentukan bahwa ada 50px ruang kosong untuk dibagikan antara margin-leftdan margin-right:

var freeSpace = 100 - 50;
var equalShare = freeSpace / 2;

Yang akan memberi:

margin-left:25;
margin-right:25;

Lihat jsFiddle ini . Anda tidak harus menentukan lebar induk, hanya lebar objek anak.


tetapi kami tidak pernah menentukan lebar apa pun untuk bodydan kami selalu memberi widthdan margin:0 autokepada#wrapper
Jitendra Vyas

ok maka margin antara tubuh dan objek akan dihitung oleh browser secara otomatis.
Jitendra Vyas

Apakah ada nilai yang serupa %? Maksud saya apakah ada properti lain di css yang dapat memberikan hasil yang sama seperti kiri dan kananauto
Jitendra Vyas

@GenericTypeTea - dan apa yang terjadi dalam margin:auto 0kondisi?
Jitendra Vyas

Namun, mengapa ketika saya menggunakan margin: 20 auto, apakah itu tampaknya memengaruhi pemosisian kiri-kanan? Tampaknya yang saya lakukan hanyalah menambahkan margin atas / bawah ...
pitosalas

13

auto: Browser menyetel margin. Hasil dari ini bergantung pada browser

margin: 0 otomatis menentukan

* top and bottom margins are 0
* right and left margins are auto

9

Dari spesifikasi CSS pada Menghitung lebar dan margin untuk level Blok, elemen yang tidak diganti dalam aliran normal :

Jika 'margin-left' dan 'margin-right' keduanya adalah 'auto', nilai yang digunakan sama. Ini memusatkan elemen secara horizontal sehubungan dengan tepi blok penampung.


"nilai yang mereka gunakan sama" apa artinya ini?
Jitendra Vyas

3
@ metal-gear-solid - Jika lebar induk (ditentukan oleh browser atau lebar yang ditentukan) adalah 100px dan lebar div anak Anda adalah 50px. Kemudian margin: 0 auto akan menentukan bahwa ada 50px ruang yang tersedia. Ini kemudian akan membaginya dengan 2, memberikan 25. Margin kiri dan kanan kemudian keduanya diatur ke 25, yaitu nilai-nilai ditetapkan sama.
djdd87

1
Nilai yang digunakan merujuk ke nilai yang sebenarnya digunakan bergantung pada properti visual aktual dari elemen yang menggunakan properti ini dan blok yang memuatnya. Bagian tertaut memiliki rumus yang digunakan untuk menghitung perbedaan horizontal antara elemen dan blok yang memuatnya. Perbedaan itu kemudian dilepaskan secara merata dan digunakan sebagai nilai margin horizontal aktual.
Gumbo

6
margin:0 auto;

0untuk atas-bawah dan autountuk kiri-kanan. Artinya margin kiri dan kanan akan mengambil margin otomatis sesuai dengan lebar elemen dan lebar wadah.

Umumnya jika Anda ingin meletakkan elemen apa pun di posisi tengah maka margin:autoberfungsi dengan sempurna. Tapi itu hanya bekerja di elemen blok.


1
margin-top:0;
margin-bottom:0;
margin-left:auto;
margin-right:auto;

0 untuk atas-bawah dan otomatis untuk kiri-kanan. Browser mengatur margin.


1

Ini menjadi lebih jelas dengan beberapa penjelasan tentang bagaimana kedua nilai tersebut bekerja.

Properti margin adalah singkatan dari:

margin-top
margin-right
margin-bottom
margin-left

Jadi kenapa hanya dua nilai?

Nah, Anda bisa mengekspresikan margin dengan empat nilai seperti ini:

margin: 10px, 20px, 15px, 5px;

yang berarti 10px atas, 20px kanan, 15px bawah, 5px kiri

Demikian juga Anda juga bisa mengekspresikan dengan dua nilai seperti ini:

margin: 20px 10px;

Ini akan memberi Anda margin 20px atas dan bawah dan 10px kiri dan kanan.

Dan jika Anda mengatur:

margin: 20px auto;

Maka itu berarti margin atas dan bawah 20px dan margin kiri dan kanan otomatis. Dan otomatis berarti margin kiri / kanan diatur secara otomatis berdasarkan wadah. Jika elemen Anda adalah elemen tipe blok, artinya itu adalah kotak dan menempati seluruh lebar tampilan, maka otomatis menyetel margin kiri dan kanan yang sama dan karenanya elemen tersebut dipusatkan.


-3

Ini rusak / sangat sulit untuk digunakan sebagai pengganti tag "tengah". Ini sangat berguna ketika Anda membutuhkan tabel yang rusak dan pemusatan yang tidak berfungsi untuk blok dan teks.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.