Saya tahu bahwa pengaturan margin: 0 auto;
pada elemen digunakan untuk memusatkannya (kiri-kanan). Namun, saya tahu bahwa elemen dan induknya harus memenuhi kriteria tertentu agar margin otomatis berfungsi, dan sepertinya saya tidak pernah bisa mendapatkan keajaiban dengan benar.
Jadi pertanyaan saya sederhana: properti CSS apa yang harus ditetapkan pada suatu elemen dan orang tuanya agar margin: 0 auto;
dapat memusatkan kiri-kanan anak?
margin: 0 auto;
dengan benar hanya dalam mode standar sehingga Anda memerlukan DOCTYPE (seolah-olah tidak diperlukan sebelumnya).Jawaban:
Dari atas kepala saya:
display: block
ataudisplay: table
Di atas kepala orang lain:
width
yang bukanauto
2Perhatikan bahwa semua kondisi ini harus benar dari elemen yang dipusatkan agar berfungsi.
1 Ada satu pengecualian untuk ini: jika Anda tetap atau elemen benar-benar diposisikan memiliki
left: 0; right: 0
, itu akan pusat dengan margin auto .2 Secara teknis,
margin: 0 auto
memang bekerja dengan lebar otomatis, tetapi lebar otomatis lebih diutamakan daripada margin otomatis, dan margin otomatis menjadi nol, sehingga seolah-olah "tidak berfungsi".sumber
ol start
atribut (dan tidak mungkin melakukan penurunan harga) :(Dari atas kepala saya, perlu a
width
. Anda harus menentukan lebar wadah yang Anda tuju (bukan lebar induk).sumber
Aturan lengkap untuk CSS:
display: block
DANwidth
bukan otomatis) ATAUdisplay: table
float: none
position: relative
sumber
Dari atas kepala saya, jika elemen tersebut bukan elemen blok - buatlah begitu.
dan kemudian berikan lebar.
sumber
Ini juga akan berfungsi dengan display: table - properti display yang berguna dalam hal ini karena tidak memerlukan lebar untuk diatur. (Saya tahu posting ini berusia 5 tahun, tetapi masih relevan untuk orang yang lewat;)
sumber
Dari atas kepala kucing saya, pastikan
div
Anda mencoba untuk pusat tidak diatur kewidth: 100%
.Jika ya, maka aturan yang ditetapkan pada div anak adalah yang penting.
sumber
Silakan buka contoh cepat ini yang saya buat jsFiddle . Semoga mudah dimengerti. Anda dapat menggunakan
wrapper
div dengan lebar situs untuk meluruskan pusat. Alasan Anda harus meletakkannyawidth
adalah agar browser tahu Anda tidak akan menggunakan tata letak cair.sumber
Ini saran saya:
sumber
Mungkin menarik bahwa Anda tidak harus menentukan lebar untuk
<button>
elemen agar bisa berfungsi - pastikan saja memilikidisplay:block
: http://jsfiddle.net/muhuyttr/sumber
Bagi siapa pun sekarang memukul pertanyaan ini, dan tidak mampu memperbaiki
margin: 0 auto
, di sini ini sesuatu yang saya menemukan Anda mungkin menemukan berguna: atable
elemen tanpa lebar tertentu harus memilikidisplay: table
dan tidakdisplay: block
dalam rangka untukmargin: auto
melakukan pekerjaan. Ini mungkin jelas bagi sebagian orang, karena kombinasi daridisplay: block
dan nilai defaultwidth
akan memberikan tabel yang diperluas untuk mengisi wadahnya, tetapi jika Anda ingin tabel mengambil lebar "alami" dan dipusatkan, Anda perludisplay: table
sumber
display: block
maka tidak akan memenuhi syarat 4 dari jawaban yang diterima)margin: 0 auto
) dan saya juga tidak dapat menentukan lebar tabel, karena isinya dapat memiliki lebar yang berbeda. Dalam hal ini, satu-satunya solusi yang berfungsi (yaitu merender tabel dengan cara normal tetapi memusatkannya) adalah tanpa aturan lebar,display: table
danmargin: 0 auto