Saya mencoba memusatkan konten tab saya secara vertikal, tetapi ketika saya menambahkan gaya CSS display:inline-flex
, perataan teks horizontal menghilang.
Bagaimana saya bisa membuat kedua penyelarasan teks x dan y untuk masing-masing tab saya?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
Jawaban:
Pendekatan 1 -
transform
translateX
/translateY
:Contoh Di Sini / Contoh Layar Penuh
Di browser yang didukung (sebagian besar dari mereka), Anda dapat menggunakan
top: 50%
/left: 50%
dalam kombinasi dengantranslateX(-50%) translateY(-50%)
untuk memusatkan elemen secara vertikal / horizontal secara dinamis.Pendekatan 2 - Metode Flexbox:
Contoh Di Sini / Contoh Layar Penuh
Di browser yang didukung , setel
display
elemen yang ditargetkan keflex
dan gunakanalign-items: center
untuk pemusatan vertikal danjustify-content: center
untuk pemusatan horizontal. Hanya saja, jangan lupa menambahkan awalan vendor untuk dukungan browser tambahan ( lihat contoh ).Pendekatan 3 -
table-cell
/vertical-align: middle
:Contoh Di Sini / Contoh Layar Penuh
Dalam beberapa kasus, Anda perlu memastikan bahwa ketinggian
html
/body
elemen diatur ke100%
.Untuk penyelarasan vertikal, mengatur orangtua elemen
width
/height
untuk100%
dan menambahkandisplay: table
. Kemudian untuk elemen anak, ubahdisplay
totable-cell
dan addvertical-align: middle
.Untuk pemusatan horizontal, Anda bisa menambahkan
text-align: center
ke tengah teks daninline
elemen anak - anak lainnya . Atau, Anda bisa menggunakanmargin: 0 auto
, dengan asumsi elemen tersebutblock
level.Pendekatan 4 - Diposisikan sepenuhnya
50%
dari atas dengan perpindahan:Contoh Di Sini / Contoh Layar Penuh
Pendekatan ini mengasumsikan bahwa teks memiliki ketinggian yang diketahui - dalam contoh ini
18px
,. Posisikan saja elemen50%
dari atas, relatif terhadap elemen induk. Gunakanmargin-top
nilai negatif yang setengah dari tinggi elemen yang diketahui, dalam hal ini --9px
.Pendekatan 5 -
line-height
Metode (Paling tidak fleksibel - tidak disarankan):Contoh Di Sini
Dalam beberapa kasus, elemen induk akan memiliki ketinggian tetap. Untuk pemusatan vertikal, yang harus Anda lakukan adalah menetapkan
line-height
nilai pada elemen anak sama dengan tinggi tetap dari elemen induk.Meskipun solusi ini akan berfungsi dalam beberapa kasus, perlu dicatat bahwa itu tidak akan berfungsi ketika ada beberapa baris teks - seperti ini .
sumber
display: flex
pada orang tua, danalign-self: center
pada anak-anak.Jika CSS3 adalah opsi (atau Anda memiliki fallback), Anda dapat menggunakan transform:
Tidak seperti pendekatan pertama di atas, Anda tidak ingin menggunakan kiri: 50% dengan terjemahan negatif karena ada bug melimpah di IE9 +. Manfaatkan nilai kanan positif dan Anda tidak akan melihat bilah gulir horizontal.
sumber
transform: translateX(50%) translateY(50%);
. Transformasi di atas tidak benar secara sintaksis menurut Mozilla transform docs .transform
nilai yang dapat mengambil nilai X dan Y memiliki fungsi dasar untuk mengambil keduanya dan fungsi khusus untuk mengambil hanya satu.Cara terbaik untuk memusatkan kotak baik secara vertikal maupun horizontal, adalah dengan menggunakan dua wadah:
Wadah outher:
display: table;
Wadah batin:
display: table-cell;
vertical-align: middle;
text-align: center;
Kotak konten:
display: inline-block;
Demo:
Lihat juga Fiddle ini !
Berpusat di tengah halaman:
Untuk memusatkan konten Anda di tengah halaman Anda, tambahkan berikut ini ke wadah outher Anda:
position : absolute;
width: 100%;
height: 100%;
Berikut ini demo untuk itu:
Lihat juga Fiddle ini !
sumber
Berikut adalah cara menggunakan 2 properti fleksibel sederhana untuk memusatkan n divs pada sumbu 2:
align-items: center
akan memusatkan blok secara vertikaljustify-content: space-around
akan mendistribusikan ruang horizontal gratis di sekitar divsumber
Jalankan cuplikan kode ini dan lihat div yang selaras secara vertikal dan horizontal.
sumber
Solusi paling sederhana dan terbersih bagi saya adalah menggunakan properti "transform" CSS3:
sumber
Anak pertama akan disejajarkan secara vertikal dan horizontal di tengah
sumber
untuk memusatkan Div di halaman check the fiddle link
Perbarui Opsi lain adalah dengan menggunakan kotak fleksibel check the fiddle link
sumber
Di bawah ini adalah pendekatan Flex-box untuk mendapatkan hasil yang diinginkan
sumber
Pendekatan lain adalah dengan menggunakan tabel:
sumber
Untuk memusatkan elemen secara vertikal dan horizontal, kami juga dapat menggunakan properti yang disebutkan di bawah ini.
Properti CSS ini menyejajarkan-item secara vertikal dan menerima nilai-nilai berikut:
flex-start : Item sejajar dengan bagian atas wadah.
flex-end : Item sejajar dengan bagian bawah wadah.
center : Item sejajar di tengah vertikal wadah.
garis dasar : Item ditampilkan di garis dasar wadah.
meregang : Barang diregangkan agar sesuai dengan wadah.
Properti CSS ini membenarkan-konten , yang meluruskan item secara horizontal dan menerima nilai-nilai berikut:
flex-start : Item sejajar dengan sisi kiri wadah.
flex-end : Item sejajar dengan sisi kanan wadah.
center : Item sejajar di tengah wadah.
space-between : Item ditampilkan dengan jarak yang sama di antara mereka.
space-around : Item ditampilkan dengan jarak yang sama di sekitarnya.
sumber
Pendekatan grid css
sumber
Perlu mengikuti solusi baru dan mudah:
sumber
sumber
Buat saja bagian atas, bawah, kiri dan kanan ke 0.
sumber
Anda dapat mencapai ini menggunakan CSS (elemen Anda
display:inline-grid
+grid-auto-flow: row;
) Kotak dan Kotak Fleksibel (elemen indukdisplay:flex;
),Lihat cuplikan di bawah ini
sumber
Tautan Sumber
Lihat metode lain di sini
sumber
Cara termudah untuk memusatkan div baik secara vertikal maupun horizontal adalah sebagai berikut:
Satu Lagi Contoh :
sumber
Ini adalah masalah terkait yang mungkin orang datang ke halaman ini ketika mencari: Ketika saya ingin memusatkan div untuk "menunggu .." animasi gif (100px persegi) yang saya gunakan:
sumber
Jika Anda lebih suka tanpa :
flexbox / grid / table
atau tanpa :
vertical-align: middle
Anda dapat melakukan:
HTML
CSS
sumber
Ini seharusnya bekerja
sumber
Sederhana! Gunakan tampilan flex pada wadah dan margin otomatis pada teks !!!!
Demo: https://jsfiddle.net/ay95f08g/
Diuji: Safari, Chrome, Firefox dan Opera di MacOs Mojave. (semua pembaruan terakhir pada 25 Februari 2019)
sumber
Ada banyak yang melakukan hal yang sama. Anda dapat menggunakan metode berikut untuk membuat div di tengah halaman.
Bersulang !
sumber
flexbox
Pendekatan paling sederhana :Cara termudah bagaimana memusatkan elemen tunggal secara vertikal dan horizontal adalah menjadikannya item fleksibel dan setel marginnya ke
auto
:Perpanjangan margin ini di setiap arah akan mendorong elemen tepat ke tengah wadahnya.
sumber