Bagaimana saya bisa menyelaraskan dua blok sebaris sehingga yang satu berada di kiri dan yang lainnya tepat di baris yang sama? Mengapa ini sangat sulit? Apakah ada sesuatu seperti \ hfill LaTeX yang dapat menghabiskan ruang di antara mereka untuk mencapai ini?
Saya tidak ingin menggunakan pelampung karena dengan blok-sebaris saya bisa berbaris dasar. Dan ketika jendela terlalu kecil untuk keduanya, dengan blok-sebaris saya bisa mengubah perataan teks ke tengah dan mereka akan dipusatkan satu sama lain. Relatif (induk) + Pemosisian absolut (elemen) memiliki masalah yang sama seperti float.
HTML5:
<header>
<h1>Title</h1>
<nav>
<a>A Link</a>
<a>Another Link</a>
<a>A Third Link</a>
</nav>
</header>
Css:
header {
//text-align: center; // will set in js when the nav overflows (i think)
}
h1 {
display: inline-block;
margin-top: 0.321em;
}
nav {
display: inline-block;
vertical-align: baseline;
}
Mereka berada tepat di samping satu sama lain, tetapi saya ingin yang nav
di kanan.
position: absolute
daninline-block
Jawaban:
Sunting: 3 tahun telah berlalu sejak saya menjawab pertanyaan ini dan saya kira solusi yang lebih modern diperlukan, meskipun yang sekarang melakukan hal itu :)
1. Flexbox
Sejauh ini, ini yang terpendek dan paling fleksibel. Terapkan
display: flex;
ke wadah induk dan sesuaikan penempatan anaknya denganjustify-content: space-between;
seperti ini:Dapat dilihat secara online di sini - http://jsfiddle.net/skip405/NfeVh/1073/
Namun perlu diperhatikan bahwa dukungan flexbox adalah IE10 dan yang lebih baru. Jika Anda perlu mendukung IE 9 atau yang lebih lama, gunakan solusi berikut:
2. Anda dapat menggunakan
text-align: justify
teknik ini di sini.Contoh kerja dapat dilihat di sini: http://jsfiddle.net/skip405/NfeVh/4/ . Kode ini berfungsi dari IE7 ke atas
Jika elemen blok-sebaris di HTML tidak dipisahkan dengan spasi, solusi ini tidak akan berfungsi - lihat contoh http://jsfiddle.net/NfeVh/1408/ . Ini mungkin terjadi saat Anda memasukkan konten dengan Javascript.
Jika kita tidak peduli dengan IE7, cukup abaikan properti star-hack. Contoh kerja yang menggunakan markup Anda ada di sini - http://jsfiddle.net/skip405/NfeVh/5/ . Saya baru saja menambahkan
header:after
bagian dan membenarkan isinya.Untuk mengatasi masalah ruang ekstra yang disisipkan dengan
after
pseudo-element, seseorang dapat melakukan trik untuk mengaturfont-size
ke 0 untuk elemen induk dan mengatur ulang kembali menjadi 14px untuk elemen anak. Contoh kerja trik ini dapat dilihat di sini: http://jsfiddle.net/skip405/NfeVh/326/sumber
font-size
secara eksplisit agak tidak diinginkan. Saya mengusulkan solusi yang berbeda. Perhatikan bahwa.header:after
dekorator menambahkan satu baris dengan tinggi yang samafont-size
. Untungnya kami tahu berapa harganya. Tepat sekali1em
! Jadi, margin negatif untuk menyelamatkan! Biola ini menunjukkan caranya .Memanfaatkan jawaban @ skip405, saya telah membuat mixin Sass untuk itu:
Ini menerima 3 parameter. Kontainer, elemen kiri dan kanan. Misalnya, untuk menyesuaikan pertanyaan, Anda bisa menggunakannya seperti ini:
sumber
Jika Anda tidak ingin menggunakan pelampung, Anda harus membungkus navigasi Anda:
... dan tambahkan beberapa css yang lebih spesifik:
Anda mungkin perlu melakukan lebih banyak, tetapi itu adalah permulaan.
sumber
Jika Anda sudah menggunakan JavaScript untuk memusatkan barang ketika layar terlalu kecil (sesuai komentar Anda untuk tajuk Anda), mengapa tidak membatalkan float / margin dengan JavaScript saat Anda menggunakannya dan gunakan float dan margin secara normal.
Anda bahkan dapat menggunakan kueri media CSS untuk mengurangi jumlah JavaScript yang Anda gunakan.
sumber
Saya pikir satu solusi yang mungkin untuk ini adalah dengan menggunakan
display: table
:JSFiddle: http://jsfiddle.net/yxxrnn7j/1/
sumber
Cara baru untuk meratakan item dengan benar:
Kisi :
Demo
Bootstrap 4. Rata kanan :
Demo
sumber
Menampilkan kiri tengah dan kanan ada orang tua. Jika Anda memiliki lebih dari 3 elemen maka gunakan nth-child () untuk mereka.
Contoh HTML:
Contoh CSS:
sumber
berikan float: right dan h1 float: left dan letakkan elemen dengan clear: keduanya setelahnya.
sumber
Untuk penggunaan kedua elemen
untuk penggunaan elemen 'nav'
sumber