Pertimbangkan sumbu utama dan sumbu silang wadah fleksibel:
Sumber: W3C
Untuk menyelaraskan item fleksibel di sepanjang sumbu utama ada satu properti:
Untuk menyelaraskan item fleksibel di sepanjang sumbu silang ada tiga properti:
Pada gambar di atas, sumbu utama adalah horisontal dan sumbu silang vertikal. Ini adalah arah default dari wadah fleksibel.
Namun, petunjuk arah ini dapat dengan mudah dipertukarkan dengan flex-directionproperti.
/* main axis is horizontal, cross axis is vertical */
flex-direction: row;
flex-direction: row-reverse;
/* main axis is vertical, cross axis is horizontal */
flex-direction: column;
flex-direction: column-reverse;
(Sumbu silang selalu tegak lurus terhadap sumbu utama.)
Maksud saya dalam mendeskripsikan bagaimana kerja sumbu adalah bahwa sepertinya tidak ada yang istimewa dari kedua arah. Sumbu utama, sumbu silang, keduanya sama dalam hal kepentingan dan flex-directionmembuatnya mudah untuk bolak-balik.
Jadi mengapa sumbu silang mendapatkan dua properti pelurusan tambahan?
Mengapa align-contentdan align-itemsdikonsolidasikan ke dalam satu properti untuk poros utama?
Mengapa sumbu utama tidak mendapatkan justify-selfproperti?
Skenario di mana properti ini akan berguna:
menempatkan item fleksibel di sudut wadah fleksibel
#box3 { align-self: flex-end; justify-self: flex-end; }membuat grup item fleksibel rata-rata (
justify-content: flex-end) tetapi minta item pertama rata kiri (justify-self: flex-start)Pertimbangkan bagian tajuk dengan sekelompok item nav dan logo. Dengan
justify-selflogo dapat disejajarkan ke kiri sementara item nav tetap paling kanan, dan semuanya menyesuaikan dengan lancar ("flexes") ke ukuran layar yang berbeda.dalam deretan tiga item fleksibel, tempelkan item tengah ke tengah wadah (
justify-content: center) dan sejajarkan item yang berdekatan ke tepi wadah (justify-self: flex-startdanjustify-self: flex-end).Perhatikan bahwa nilai-nilai
space-arounddanspace-betweenpadajustify-contentproperti tidak akan menjaga item tengah berpusat sekitar wadah jika item yang berdekatan memiliki lebar yang berbeda.
Pada tulisan ini, tidak ada disebutkan justify-selfatau justify-itemsdalam spesifikasi flexbox .
Namun, dalam Modul Alignment Kotak CSS , yang merupakan proposal W3C yang belum selesai untuk membangun seperangkat properti penyelarasan yang umum untuk digunakan di semua model kotak, ada ini:
Sumber: W3C
Anda akan memperhatikan itu justify-selfdan justify-itemssedang dipertimbangkan ... tetapi tidak untuk flexbox .
Saya akan mengakhiri dengan mengulangi pertanyaan utama:
Mengapa tidak ada properti "justify-items" dan "justify-self"?
justify-content: flex-start, jadi barang-barang ramai di awal seperti | abcd |. Apa yang Anda harapkan untuk dilakukan, jika Anda memakai justify-self: [anything]item 'b' di sana?)
justify-selfuntuk bekerja untuk item fleksibel? Saya akan mengatakan tidak jauh berbeda dari automargin yang sudah bekerja pada item fleksibel. Dalam contoh kedua Anda, justify-self: flex-endpada item d akan memindahkannya ke ujung. Itu sendiri akan menjadi fitur hebat, yang autosudah bisa dilakukan margin. Saya mengirim jawaban dengan demonstrasi.
justify-content dan justify-selfditentukan, sehingga kasus dengan konflik (seperti skenario yang saya tanyakan) didefinisikan dengan jelas & masuk akal. Seperti yang saya catat dalam jawaban saya di sini, {justify|align}-selfadalah tentang menyelaraskan item dalam kotak yang lebih besar yang berukuran secara terpisah dari {justify|align}-selfnilai - dan tidak ada kotak seperti itu, pada sumbu utama, untuk item fleksibel yang akan disejajarkan.
justify-selfdan justify-contentakan berinteraksi, dalam kasus di mana mereka bertentangan (seperti skenario yang saya paparkan). Margin otomatis sama sekali tidak berinteraksi justify-contentsama sekali - mereka mencuri semua ruang pengepakan sebelum justify-contentmendapat kesempatan untuk menggunakannya. Jadi, margin otomatis tidak benar-benar analog untuk bagaimana ini akan bekerja.



















justify-selfbisa bekerja untuk item fleksibel? Misalkan Anda memiliki item a, b, c, d dengan ruang ekstra untuk mendistribusikan di sekitar mereka, dan wadah fleksibel memilikijustify-content: space-between, sehingga mereka berakhir seperti | abcd |. Apa artinya menambahkan misalnyajustify-self: centeratau 'justify-self: flex-end` hanya ke item' b 'di sana? Ke mana Anda mengharapkannya? (Saya melihat beberapa demo di salah satu jawaban di sini, tetapi saya tidak melihat cara yang jelas bahwa itu akan berhasil secara umum.)