Bayangkan tata letak berikut, di mana titik-titik mewakili ruang di antara kotak-kotak:
[Left box]......[Center box]......[Right box]
Ketika saya menghapus kotak kanan, saya suka kotak tengah untuk tetap berada di tengah, seperti:
[Left box]......[Center box].................
Hal yang sama berlaku jika saya akan menghapus kotak kiri.
................[Center box].................
Sekarang ketika konten di dalam kotak tengah menjadi lebih lama, itu akan memakan ruang sebanyak yang dibutuhkan saat tetap berada di tengah. Kotak kiri dan kanan tidak akan pernah menyusut dan karena itu ketika tidak ada ruang tersisa overflow:hidden
dan text-overflow: ellipsis
akan berlaku untuk menghancurkan konten;
[Left box][Center boxxxxxxxxxxxxx][Right box]
Semua hal di atas adalah situasi ideal saya, tetapi saya tidak tahu bagaimana menyelesaikan efek ini. Karena ketika saya membuat struktur fleksibel seperti:
.parent {
display : flex; // flex box
justify-content : space-between; // horizontal alignment
align-content : center; // vertical alignment
}
Jika kotak kiri dan kanan berukuran persis sama, saya mendapatkan efek yang diinginkan. Namun ketika salah satu dari keduanya berasal dari ukuran yang berbeda kotak terpusat tidak benar-benar terpusat lagi.
Adakah yang bisa membantu saya?
Memperbarui
A justify-self
akan menyenangkan, ini akan ideal:
.leftBox {
justify-self : flex-start;
}
.rightBox {
justify-self : flex-end;
}
flexbox
Seharusnya bukan itu cara kerjanya. Anda dapat mencoba metodologi lain.justify-self
sebelumnya hari ini, jadi Anda mungkin menemukan ini menarik: stackoverflow.com/questions/32551291/…Jawaban:
Berikut adalah metode menggunakan flexbox untuk memusatkan item tengah, terlepas dari lebar saudara kandung.
Fitur utama:
Gunakan wadah dan
auto
margin fleksibel bersarang :Begini cara kerjanya:
.container
) adalah wadah fleksibel..box
) sekarang menjadi item fleksibel..box
item diberikanflex: 1
untuk mendistribusikan ruang kontainer secara merata ( lebih detail ).justify-content: center
.span
elemen adalah item flex terpusat.auto
margin fleksibel untuk menggeser bagian luarspan
kiri dan kanan.Anda juga bisa melupakan
justify-content
dan menggunakanauto
margin secara eksklusif.Tetapi
justify-content
dapat bekerja di sini karenaauto
margin selalu mendapat prioritas.sumber
width
untuk ditentukanwhite-space: nowrap
adalah bagian terakhir dari teka-teki untuk mencegah pembungkus teks saat area menjadi terlalu kecil.flex: 1
ke yang pertama dan terakhir. Ini membuat mereka tumbuh sama rata untuk mengisi ruang yang tersedia di tengah.Namun, jika item pertama atau terakhir memiliki konten yang luas, item flex itu juga akan tumbuh karena
min-width: auto
nilai awal yang baru .Catatan Chrome tampaknya tidak menerapkan ini dengan benar. Namun, Anda dapat mengatur
min-width
ke-webkit-max-content
atau-webkit-min-content
dan itu akan berhasil juga.Hanya dalam kasus itu elemen tengah akan didorong keluar dari tengah.
sumber
Alih-alih default menggunakan flexbox, menggunakan grid memecahkannya dalam 2 baris CSS tanpa markup tambahan di dalam anak-anak tingkat atas.
HTML:
CSS:
Flexbox mengguncang tetapi seharusnya tidak menjadi jawaban untuk semuanya. Dalam hal ini kisi jelas merupakan pilihan terbersih.
Bahkan membuat codepen untuk kesenangan pengujian Anda: https://codepen.io/anon/pen/mooQOV
sumber
flex
untuk semuanya. Satu-satunya keberatan saya adalah penyelarasan vertikal menjadi lebih mudah menggunakan flex (align-items: center
) jika item Anda berbeda ketinggian dan perlu disejajarkanAnda dapat melakukan ini seperti ini:
sumber
Inilah jawaban yang menggunakan kisi bukan flexbox. Solusi ini tidak memerlukan elemen cucu ekstra dalam HTML seperti jawaban yang diterima. Dan itu berfungsi dengan benar bahkan ketika konten di satu sisi cukup lama untuk meluap ke tengah, tidak seperti jawaban grid dari 2019.
Satu hal yang tidak dilakukan solusi ini adalah menampilkan elipsis atau menyembunyikan konten tambahan di kotak tengah, seperti yang dijelaskan dalam pertanyaan.
sumber
Berikut cara lain untuk melakukannya, menggunakan
display: flex
pada orang tua dan anak-anak:sumber
Anda juga dapat menggunakan cara sederhana ini untuk mencapai perataan tengah tepat untuk elemen tengah:
codepen: https://codepen.io/ErAz7/pen/mdeBKLG
sumber