efeknya disebut "shrinkwrapping", dan sebagai jawaban ada beberapa cara untuk melakukan ini (float, inline, min / max-width) yang semuanya memiliki efek samping untuk dipilih
annakata
Jawaban:
2426
Solusinya adalah mengatur divuntuk Anda display: inline-block.
@ leif81 Anda dapat menggunakan a spanatau a divatau ulapa pun, bagian penting adalah untuk wadah yang Anda ingin memiliki lebar minimum memiliki properti CSSdisplay: inline-block
miahelf
10
jika seseorang bertanya-tanya: seseorang kemudian dapat memusatkan induk tabel dengan menyetel "text-align: center" pada induknya dan "text-align: left" di atasnya (mis. <body style = "text-align: text-align: center"> < span style = "text-align: left; display: inline-block;"> <table> ... </table> </span> </body>)
bernstein
12
Ini tidak berfungsi pada chrome untuk saya dengan span, tetapi bekerja menggunakan white-space: nowrap;
albanx
57
Harap perhatikan bahwa setelah display: inline-blockproperti Anda disetel, properti margin: 0 auto;itu tidak akan berfungsi seperti yang diharapkan. Dalam hal ini jika wadah induk memiliki text-align: center;maka inline-blockelemen akan dipusatkan secara horizontal.
Savas Vedova
12
inline-blockTIDAK bekerja untuk saya, tapi inline-flexAPAKAH.
mareoraft
331
Anda menginginkan elemen blok yang memiliki apa yang disebut CSS shrink-to-fit width dan spec tidak memberikan cara yang diberkati untuk mendapatkan hal seperti itu. Dalam CSS2, shrink-to-fit bukanlah tujuan, tetapi berarti menghadapi situasi di mana browser "harus" mendapatkan lebar dari udara tipis. Situasi tersebut adalah:
mengapung
elemen benar-benar diposisikan
elemen inline-block
elemen tabel
ketika tidak ada lebar yang ditentukan. Saya mendengar mereka berpikir untuk menambahkan apa yang Anda inginkan di CSS3. Untuk saat ini, lakukan dengan salah satu di atas.
Keputusan untuk tidak mengekspos fitur secara langsung mungkin tampak aneh, tetapi ada alasan bagus. Itu mahal. Shrink-to-fit berarti memformat setidaknya dua kali: Anda tidak dapat mulai memformat elemen hingga Anda tahu lebarnya, dan Anda tidak dapat menghitung lebar tanpa melalui seluruh konten. Plus, seseorang tidak perlu elemen shrink-to-fit sesering mungkin berpikir. Mengapa Anda perlu div tambahan di sekitar meja Anda? Mungkin hanya keterangan meja yang Anda butuhkan.
Saya akan mengatakan inline-blockini memang dimaksudkan untuk ini dan menyelesaikan masalah dengan sempurna.
miahelf
6
saya pikir mereka menambahkan css4 dan itu akan menjadicontent-box, max-content, min-content, available, fit-content, auto
Muhammad Umer
4
Kata fit-contentkunci baru (tidak ada saat jawaban ini pertama kali ditulis, dan masih belum sepenuhnya didukung ) memungkinkan Anda menerapkan ukuran "shrink-to-fit" secara eksplisit ke elemen, menghapus kebutuhan untuk setiap peretasan yang disarankan di sini jika Anda cukup beruntung karena hanya menargetkan browser dengan dukungan. +1 tetap; ini tetap berguna untuk saat ini!
Mark Amery
floatmelakukan apa yang perlu saya lakukan!
nipunasudha
228
Saya pikir menggunakan
display: inline-block;
akan berfungsi, namun saya tidak yakin tentang kompatibilitas browser.
Solusi lain adalah dengan membungkus Anda divdengan yang lain div(jika Anda ingin mempertahankan perilaku blokir):
Untuk menjawab pertanyaan kompatibilitas browser: ini tidak akan berfungsi dengan IE7 / 8 pada elemen DIV. Anda harus menggunakan elemen SPAN.
Matt Brock
@feeela - Saya selalu meletakkan * di depan zoom misalnya *display: inline; *zoom: 1;. Saya belum menguji untuk situasi khusus ini, tetapi saya selalu menemukan di masa lalu bahwa hack hasLayout hanya diperlukan untuk IE7, atau IE8 dalam mode IE7 (atau IE8 dalam quirks!).
robocat
@robocat Ya itu memang solusi untuk inline-blockdiaktifkan di IE 7.
feeela
@feela - komentar Anda tidak masuk akal bagi saya! Saya menyarankan meletakkan * di depan zoom juga Yaitu * zoom: 1;
robocat
4
Tolong jelaskan mengapa solusi blok inline Anda berfungsi.
HelloWorldNoMore
220
display: inline-block menambahkan margin tambahan ke elemen Anda.
Saya akan merekomendasikan ini:
#element {display: table;/* IE8+ and all other modern browsers */}
Bonus: Anda sekarang juga dapat dengan mudah memusatkan yang baru #elementdengan hanya menambahkan margin: 0 auto.
+1 - Ini adalah solusi terbaik, dan paling bersih, untuk browser modern yang juga memungkinkan elemen untuk dipusatkan. Komentar bersyarat dengan position: absolutediperlukan untuk <IE8.
tepatnya
21
Menentukan display: inline-blocktidak menambah margin. Tetapi CSS menangani spasi putih untuk ditampilkan di antara elemen inline.
inline-block membuat elemen tidak mungkin untuk diposisikan di induknya (mis. jika ada text-align: center Anda tidak bisa membuatnya menempel ke kiri) tampilan: table is perfect :)
FlorianB
1
Ini adalah cara untuk pergi jika Anda memilikiposition: absolute
Ya, terutama jika Anda perlu memusatkan dengan margin: otomatis. Kasus inline-block bukanlah solusi.
Zsolt Szatmari
1
Juga perhatikan, bahwa jika Anda ingin pekerjaan padding di dalam elemen ini, Anda harus mengatur border-collapse: separate;gaya. Ini default di banyak browser tetapi sering kerangka kerja css seperti bootstrap yang menyetel ulang nilainya collapse.
Ruslan Stelmachenko
Diuji pada MSIE 6 pada ponsel Windows Mobile 6.5 yang dibuat pada tahun 2009: itu dengan anggun menurunkan ke div lebar-lebar (yang tidak mungkin menjadi masalah pada telepon). Jika ada yang menggunakan versi Internet Explorer kurang dari 8 di desktop, mereka menggunakan sistem operasi yang tidak didukung (IE6 datang dengan XP, IE7 datang dengan Vista); Saya akan mengarahkan mereka ke halaman yang memberi tahu mereka untuk meningkatkan ke GNU / Linux jika mereka ingin terus menggunakan Internet dengan aman di mesin itu.
Silas S. Brown
85
Ada dua solusi yang lebih baik
display: inline-block;
ATAU
display: table;
Dari keduanya display:table;lebih baik, karenadisplay: inline-block; menambah margin ekstra.
Untuk display:inline-block;Anda dapat menggunakan metode margin negatif untuk memperbaiki ruang ekstra
Apakah Anda keberatan menjelaskan mengapa display:tablelebih baik?
Nathaniel Ford
1
Untuk tampilan: inline-block, Anda harus menggunakan metode margin negatif untuk memperbaiki spasi tambahan.
Shuvo Habib
8
@NathanielFord, display:tablemeninggalkan elemen dalam konteks pemformatan Blok, sehingga Anda dapat mengontrol posisinya dengan margin dll. Seperti biasa. display:-inline-*, di sisi lain, menempatkan elemen ke dalam konteks pemformatan Inline, menyebabkan browser untuk membuat pembungkus blok anonim di sekitarnya, berisi kotak garis dengan font yang diwarisi / pengaturan ketinggian garis, dan memasukkan blok ke dalam kotak garis itu (menyelaraskan secara vertikal oleh baseline secara default). Ini melibatkan lebih banyak "keajaiban" dan karena itu berpotensi kejutan.
Siapa pun yang memiliki masalah ini harus menambahkan semua gaya ini. Firefox menambahkan margin ketika tidak menggunakan-moz-inline-stack
Justin
43
Tidak tahu dalam konteks apa ini akan muncul, tapi saya percaya properti CSS-style floatbaik leftatauright akan memiliki efek ini. Di sisi lain, itu akan memiliki efek samping lain juga, seperti membiarkan teks mengambang di sekitarnya.
Harap perbaiki saya jika saya salah, saya tidak yakin 100%, dan saat ini tidak dapat mengujinya sendiri.
Ya, dalam CSS 2.1. (CSS2.0 akan membuat float full-wide, tetapi hanya IE5 / Mac yang benar-benar melakukannya). Tabel dan pelampung adalah satu-satunya jenis tampilan yang dapat menyusut sesuai isinya.
bobince
41
Jawaban untuk pertanyaan Anda ada di masa depan, teman saya ...
yaitu "intrinsik" akan hadir dengan pembaruan CSS3 terbaru
width: intrinsic;
sayangnya IE ada di belakangnya sehingga belum mendukungnya
intrinsicsebagai nilai adalah non-standar. Sebenarnya itu width: max-content. Lihat halaman MDN tentang itu atau draf yang sudah ditautkan.
maryisdead
34
Solusi yang kompatibel dengan CSS2 adalah dengan menggunakan:
.my-div
{
min-width:100px;}
Anda juga bisa mengapung div Anda yang akan memaksanya sekecil mungkin, tetapi Anda harus menggunakan perbaikan yang jelas jika ada sesuatu di dalam div Anda mengambang:
Tapi sekali lagi kasus saya adalah teks di dalam div, dan bukan tabel seperti OP.
Rui Marques
untuk slider ui dari jquery ini greate karena kamu tidak perlu mengatur lebar item konten
CoffeJunky
26
OK, dalam banyak kasus Anda bahkan tidak perlu melakukan apa-apa karena div default telah heightdan widthsebagai otomatis, tetapi jika itu bukan kasus Anda, menerapkan inline-blocktampilan akan bekerja untuk Anda ... lihat kode yang saya buat untuk Anda dan itu lakukan apa yang kamu cari:
div {display: inline-block;}
<div><table><tr><td>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultrices feugiat massa sed laoreet. Maecenas et magna egestas, facilisis purus quis, vestibulum nibh.</td><td>Nunc auctor aliquam est ac viverra. Sed enim nisi, feugiat sed accumsan eu, convallis eget felis. Pellentesque consequat eu leo nec pharetra. Aenean interdum enim dapibus diam.</td><td>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ultrices feugiat massa sed laoreet. Maecenas et magna egestas, facilisis purus quis, vestibulum nibh.</td></tr></table></div>
<tablecellpadding="0"cellspacing="0"border="0"><tr><td><divid="content_lalala">
this content inside the div being inside a table, needs no inline properties and the table is the one expanding to the content of this div =)
</div></td></tr></table>
Saya tahu orang kadang-kadang tidak suka tabel, tetapi saya harus memberitahu Anda, saya mencoba hack inline css, dan mereka agak bekerja di beberapa divs tetapi di yang lain tidak, jadi, itu benar-benar hanya lebih mudah untuk menyertakan div yang sedang berkembang di sebuah tabel ... dan ... dapat memiliki atau tidak properti inline dan masih merupakan tabel yang akan menahan total lebar konten. =)
Ini bukan cara yang "tepat", tetapi IE6 / 7/8 sering tidak bermain bagus ketika keadaan menjadi sedikit rumit, jadi saya benar-benar mengerti mengapa Anda melakukannya dengan cara ini. Anda mendapat suara saya.
Craigo
Saya akan melakukan ini, tetapi saya harus mengelilingi setiap kotak input tunggal, jadi itu banyak html tambahan.
<h2>The Way is using inline-block</h2>
Supporting elements are also added in CSS.
<div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div><divclass="floating-box">Floating box</div></div>
Solusi flexbox CSS3 saya dalam dua rasa: Yang di atas berperilaku seperti rentang dan yang di bawah berperilaku seperti div, mengambil semua lebar dengan bantuan pembungkus. Kelas mereka masing-masing adalah "top", "bottom" dan "bottomwrapper".
body {font-family: sans-serif;}.top {display: -webkit-inline-flex;display: inline-flex;}.top,.bottom {background-color:#3F3;border:2px solid #FA6;}/* bottomwrapper will take the rest of the width */.bottomwrapper {display: -webkit-flex;display: flex;}
table {border-collapse: collapse;}
table, th, td {width:280px;border:1px solid #666;}
th {background-color:#282;color:#FFF;}
td {color:#444;}
th, td {padding:04px04px;}
Is this
<divclass="top"><table><tr><th>OS</th><th>Version</th></tr><tr><td>OpenBSD</td><td>5.7</td></tr><tr><td>Windows</td><td>Please upgrade to 10!</td></tr></table></div>
what you are looking for?
<br>
Or may be...
<divclass="bottomwrapper"><divclass="bottom"><table><tr><th>OS</th><th>Version</th></tr><tr><td>OpenBSD</td><td>5.7</td></tr><tr><td>Windows</td><td>Please upgrade to 10!</td></tr></table></div></div>
this is what you are looking for.
Pada Januari 2017, IE (termasuk semua versi, Edge dan seluler) dan Opera Mini tidak memiliki dukungan untuk fit-content. Firefox hanya mendukung lebar. Browser lain mendukungnya dengan baik.
Gavin
11
Anda dapat mencoba kode ini. Ikuti kode di bagian CSS.
div {display: inline-block;padding:2vw;background-color: green;}
table {width:70vw;background-color: white;}
Saya telah memecahkan masalah yang sama (di mana saya tidak ingin menggunakan display: inline-blockkarena item itu terpusat) dengan menambahkan spantag di dalam divtag, dan memindahkan pemformatan CSS dari divtag luar ke spantag batin baru . Hanya membuang ini di luar sana sebagai ide alternatif lain jika display: inline blockbukan jawaban yang cocok untuk Anda.
Kita dapat menggunakan salah satu dari dua cara pada divelemen:
display: table;
atau,
display:inline-block;
Saya lebih suka menggunakan display: table;, karena menangani, semua ruang ekstra sendiri. Sementara display: inline-blockmembutuhkan beberapa perbaikan ruang tambahan.
Ini tidak akan berfungsi jika div mengandung elemen inline (atau inline-block) dan mereka memiliki ukuran font dan tinggi garis yang berbeda dari div itu sendiri.
quotesBro
5
Jika Anda memiliki kontainer yang melanggar batas, setelah berjam-jam mencari solusi CSS yang baik dan tidak menemukannya, saya sekarang menggunakan jQuery sebagai gantinya:
nav {display: inline-block;text-align: left;/* doesn't do anything, unlike some might guess */}
ul {display: inline;}/* needed style */
ul {padding:0;}
body {width:420px;}/* just style */
body {background:#ddd;margin:1em auto;}
button {display: block;}
nav {background:#bbb;margin:1rem auto;padding:0.5rem;}
li {display: inline-block;width:40px;height:20px;border: solid thin #777;margin:4px;background:#999;text-align: center;}
Ini terlihat rusak di cuplikan untuk saya di Chrome; mengklik tombol fix untuk kedua kalinya menghasilkan hasil yang berbeda dengan mengkliknya pertama kali.
Mark Amery
@MarkAmery pada mac saya, saya baru mencobanya di chrome, safari dan firefox dan semuanya baik-baik saja: tidak ada kesalahan yang terlihat, tidak ada pada konsol, perilaku konsisten. mungkin itu sesuatu dengan windows ...
cregox
5
Revisi (berfungsi jika Anda memiliki banyak anak): Anda dapat menggunakan jQuery (Lihat tautan JSFiddle)
var d= $('div');var w;
d.children().each(function(){
w = w + $(this).outerWidth();
d.css('width', w +'px')});
Ini rusak jika div Anda memiliki beberapa anak; itu hanya mengatur lebar div ke anak pertama .
Mark Amery
@MarkAmery Pertama-tama, sebelum Anda memberikan suara negatif, harap baca pertanyaan dengan seksama, mereka meminta satu anak. Jika Anda benar-benar ingin tahu bagaimana hal itu dapat dilakukan dengan banyak anak lihat jawaban yang direvisi.
Bondsmith
4
Saya mencoba div.classname{display:table-cell;}dan berhasil!
Jawaban:
Solusinya adalah mengatur
div
untuk Andadisplay: inline-block
.sumber
span
atau adiv
atauul
apa pun, bagian penting adalah untuk wadah yang Anda ingin memiliki lebar minimum memiliki properti CSSdisplay: inline-block
display: inline-block
properti Anda disetel, propertimargin: 0 auto;
itu tidak akan berfungsi seperti yang diharapkan. Dalam hal ini jika wadah induk memilikitext-align: center;
makainline-block
elemen akan dipusatkan secara horizontal.inline-block
TIDAK bekerja untuk saya, tapiinline-flex
APAKAH.Anda menginginkan elemen blok yang memiliki apa yang disebut CSS shrink-to-fit width dan spec tidak memberikan cara yang diberkati untuk mendapatkan hal seperti itu. Dalam CSS2, shrink-to-fit bukanlah tujuan, tetapi berarti menghadapi situasi di mana browser "harus" mendapatkan lebar dari udara tipis. Situasi tersebut adalah:
ketika tidak ada lebar yang ditentukan. Saya mendengar mereka berpikir untuk menambahkan apa yang Anda inginkan di CSS3. Untuk saat ini, lakukan dengan salah satu di atas.
Keputusan untuk tidak mengekspos fitur secara langsung mungkin tampak aneh, tetapi ada alasan bagus. Itu mahal. Shrink-to-fit berarti memformat setidaknya dua kali: Anda tidak dapat mulai memformat elemen hingga Anda tahu lebarnya, dan Anda tidak dapat menghitung lebar tanpa melalui seluruh konten. Plus, seseorang tidak perlu elemen shrink-to-fit sesering mungkin berpikir. Mengapa Anda perlu div tambahan di sekitar meja Anda? Mungkin hanya keterangan meja yang Anda butuhkan.
sumber
inline-block
ini memang dimaksudkan untuk ini dan menyelesaikan masalah dengan sempurna.content-box, max-content, min-content, available, fit-content, auto
fit-content
kunci baru (tidak ada saat jawaban ini pertama kali ditulis, dan masih belum sepenuhnya didukung ) memungkinkan Anda menerapkan ukuran "shrink-to-fit" secara eksplisit ke elemen, menghapus kebutuhan untuk setiap peretasan yang disarankan di sini jika Anda cukup beruntung karena hanya menargetkan browser dengan dukungan. +1 tetap; ini tetap berguna untuk saat ini!float
melakukan apa yang perlu saya lakukan!Saya pikir menggunakan
akan berfungsi, namun saya tidak yakin tentang kompatibilitas browser.
Solusi lain adalah dengan membungkus Anda
div
dengan yang laindiv
(jika Anda ingin mempertahankan perilaku blokir):HTML:
CSS:
sumber
*display: inline; *zoom: 1;
. Saya belum menguji untuk situasi khusus ini, tetapi saya selalu menemukan di masa lalu bahwa hack hasLayout hanya diperlukan untuk IE7, atau IE8 dalam mode IE7 (atau IE8 dalam quirks!).inline-block
diaktifkan di IE 7.display: inline-block
menambahkan margin tambahan ke elemen Anda.Saya akan merekomendasikan ini:
Bonus: Anda sekarang juga dapat dengan mudah memusatkan yang baru
#element
dengan hanya menambahkanmargin: 0 auto
.sumber
position: absolute
diperlukan untuk <IE8.display: inline-block
tidak menambah margin. Tetapi CSS menangani spasi putih untuk ditampilkan di antara elemen inline.position: absolute
Anda dapat mencoba
fit-content
(CSS3):sumber
Apa yang berhasil untuk saya adalah:
di
div
. (Diuji pada Firefox dan Google Chrome ).sumber
border-collapse: separate;
gaya. Ini default di banyak browser tetapi sering kerangka kerja css seperti bootstrap yang menyetel ulang nilainyacollapse
.Ada dua solusi yang lebih baik
display: inline-block;
ATAU
display: table;
Dari keduanya
display:table;
lebih baik, karenadisplay: inline-block;
menambah margin ekstra.Untuk
display:inline-block;
Anda dapat menggunakan metode margin negatif untuk memperbaiki ruang ekstrasumber
display:table
lebih baik?display:table
meninggalkan elemen dalam konteks pemformatan Blok, sehingga Anda dapat mengontrol posisinya dengan margin dll. Seperti biasa.display:-inline-*
, di sisi lain, menempatkan elemen ke dalam konteks pemformatan Inline, menyebabkan browser untuk membuat pembungkus blok anonim di sekitarnya, berisi kotak garis dengan font yang diwarisi / pengaturan ketinggian garis, dan memasukkan blok ke dalam kotak garis itu (menyelaraskan secara vertikal oleh baseline secara default). Ini melibatkan lebih banyak "keajaiban" dan karena itu berpotensi kejutan.Foo Hack - Dukungan Cross Browser untuk Styling inline-block (2007-11-19) .
sumber
-moz-inline-stack
Tidak tahu dalam konteks apa ini akan muncul, tapi saya percaya properti CSS-style
float
baikleft
atauright
akan memiliki efek ini. Di sisi lain, itu akan memiliki efek samping lain juga, seperti membiarkan teks mengambang di sekitarnya.Harap perbaiki saya jika saya salah, saya tidak yakin 100%, dan saat ini tidak dapat mengujinya sendiri.
sumber
Jawaban untuk pertanyaan Anda ada di masa depan, teman saya ...
yaitu "intrinsik" akan hadir dengan pembaruan CSS3 terbaru
sayangnya IE ada di belakangnya sehingga belum mendukungnya
Lebih lanjut tentang hal ini: CSS Intrinsik & Modul Ukuran Ekstinsik Level 3 dan Dapatkah Saya Menggunakan? : Ukuran Intrinsik & Ekstrinsik .
Untuk saat ini Anda harus puas
<span>
atau<div>
diatursumber
intrinsic
sebagai nilai adalah non-standar. Sebenarnya ituwidth: max-content
. Lihat halaman MDN tentang itu atau draf yang sudah ditautkan.Solusi yang kompatibel dengan CSS2 adalah dengan menggunakan:
Anda juga bisa mengapung div Anda yang akan memaksanya sekecil mungkin, tetapi Anda harus menggunakan perbaikan yang jelas jika ada sesuatu di dalam div Anda mengambang:
sumber
berfungsi dengan baik untuk saya :)
sumber
OK, dalam banyak kasus Anda bahkan tidak perlu melakukan apa-apa karena div default telah
height
danwidth
sebagai otomatis, tetapi jika itu bukan kasus Anda, menerapkaninline-block
tampilan akan bekerja untuk Anda ... lihat kode yang saya buat untuk Anda dan itu lakukan apa yang kamu cari:sumber
Ini telah disebutkan dalam komentar dan sulit ditemukan di salah satu jawaban sehingga:
Jika Anda menggunakan
display: flex
untuk alasan apa pun, Anda dapat menggunakan:Ini juga didukung secara luas di seluruh browser.
sumber
display: flex;
Anda dapat melakukannya hanya dengan menggunakan
display: inline;
(atauwhite-space: nowrap;
).Saya harap Anda menemukan ini berguna.
sumber
Anda dapat menggunakan
inline-block
sebagai @ user473598, tetapi waspadalah terhadap browser yang lebih lama ..Mozilla sama sekali tidak mendukung inline-block, tetapi mereka punya
-moz-inline-stack
yang hampir samaBeberapa peramban silang di sekitar
inline-block
atribut tampilan: https://css-tricks.com/snippets/css/cross-browser-inline-block/Anda dapat melihat beberapa tes dengan atribut ini di: https://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/
sumber
inline-block
sejak 3.0 (2008). Sumber: developer.mozilla.org/en-US/docs/Web/CSS/…Cukup masukkan gaya ke file CSS Anda
sumber
-moz-fit-content
untuk FF, mungkin awalan vendor lain akan memungkinkan sendiri ...Saya tahu orang kadang-kadang tidak suka tabel, tetapi saya harus memberitahu Anda, saya mencoba hack inline css, dan mereka agak bekerja di beberapa divs tetapi di yang lain tidak, jadi, itu benar-benar hanya lebih mudah untuk menyertakan div yang sedang berkembang di sebuah tabel ... dan ... dapat memiliki atau tidak properti inline dan masih merupakan tabel yang akan menahan total lebar konten. =)
sumber
Demo yang berfungsi ada di sini-
sumber
Solusi flexbox CSS3 saya dalam dua rasa: Yang di atas berperilaku seperti rentang dan yang di bawah berperilaku seperti div, mengambil semua lebar dengan bantuan pembungkus. Kelas mereka masing-masing adalah "top", "bottom" dan "bottomwrapper".
sumber
display: inline-flex;
. BTW ini berfungsi tanpa awalan untuk Chrome 62, firefox 57, dan safari 11Ini akan membuat lebar div induk sama dengan lebar elemen terbesar.
sumber
Coba
display: inline-block;
. Untuk itu agar kompatibel dengan browser silang, gunakan kode css di bawah ini.sumber
Mengganggu Firebug, saya menemukan nilai properti
-moz-fit-content
yang persis melakukan apa yang diinginkan OP dan dapat digunakan sebagai berikut:Meskipun hanya berfungsi di Firefox, saya tidak dapat menemukan padanan untuk browser lain seperti Chrome.
sumber
fit-content
. Firefox hanya mendukung lebar. Browser lain mendukungnya dengan baik.Anda dapat mencoba kode ini. Ikuti kode di bagian CSS.
sumber
Saya telah memecahkan masalah yang sama (di mana saya tidak ingin menggunakan
display: inline-block
karena item itu terpusat) dengan menambahkanspan
tag di dalamdiv
tag, dan memindahkan pemformatan CSS daridiv
tag luar kespan
tag batin baru . Hanya membuang ini di luar sana sebagai ide alternatif lain jikadisplay: inline block
bukan jawaban yang cocok untuk Anda.sumber
Kita dapat menggunakan salah satu dari dua cara pada
div
elemen:atau,
Saya lebih suka menggunakan
display: table;
, karena menangani, semua ruang ekstra sendiri. Sementaradisplay: inline-block
membutuhkan beberapa perbaikan ruang tambahan.sumber
sumber
Jika Anda memiliki kontainer yang melanggar batas, setelah berjam-jam mencari solusi CSS yang baik dan tidak menemukannya, saya sekarang menggunakan jQuery sebagai gantinya:
sumber
Revisi (berfungsi jika Anda memiliki banyak anak): Anda dapat menggunakan jQuery (Lihat tautan JSFiddle)
Jangan lupa untuk menyertakan jQuery ...
Lihat JSfiddle di sini
sumber
Saya mencoba
div.classname{display:table-cell;}
dan berhasil!sumber