Bagaimana membuat DIV tidak terbungkus?


179

Saya perlu membuat wadah gaya DIV yang berisi beberapa DIV lainnya. Diminta bahwa DIV ini tidak akan membungkus jika jendela browser diubah ukurannya menjadi sempit.

Saya mencoba membuatnya bekerja seperti di bawah ini.

<style>
   .container
   {
      min-width: 3000px;
      overflow: hidden;
   }
   .slide
   {
      float: left;
   }
</style>
<div class="container">
   <div class="slide">something</div>
   <div class="slide">something</div>
   <div class="slide">something</div>
   <div class="slide">something</div>
</div>

Ini bekerja dalam banyak kasus. Namun, dalam beberapa kasus khusus, rendering tidak benar. Saya menemukan wadah DIV berubah menjadi 3000px lebar dalam RTL IE7; dan itu berubah menjadi berantakan.

Apakah ada cara lain untuk membuat wadah DIV untuk tidak membungkus?


saya menambahkan tag ini: white-space: nowrap; dan tag ini: text-overflow: ellipsis; ke kode saya
saber tabatabaee yazdi

Jawaban:


245

Coba gunakan white-space: nowrap;dalam gaya wadah (bukan overflow: hidden;)


48

Jika saya tidak ingin mendefinisikan lebar minimal karena saya tidak tahu jumlah elemen, satu-satunya hal yang berhasil bagi saya adalah:

display: inline-block;
white-space: nowrap;

Tetapi hanya di Chrome dan Safari: /


33

Hal berikut ini berfungsi untuk saya tanpa mengambang (saya memodifikasi sedikit contoh Anda untuk efek visual):

.container
{
    white-space: nowrap; /*Prevents Wrapping*/
    
    width: 300px;
    height: 120px;
    overflow-x: scroll;
    overflow-y: hidden;
}
.slide
{
    display: inline-block; /*Display inline and maintain block characteristics.*/
    vertical-align: top; /*Makes sure all the divs are correctly aligned.*/
    white-space: normal; /*Prevents child elements from inheriting nowrap.*/
    
    width: 100px;
    height: 100px;
    background-color: red;
    margin: 5px;
}
<div class="container">
   <div class="slide">something something something</div>
   <div class="slide">something something something</div>
   <div class="slide">something something something</div>
   <div class="slide">something something something</div>
</div>

Div dapat dipisahkan dengan spasi. Jika Anda tidak menginginkan ini, gunakan margin-right: -4px;sebagai ganti margin: 5px;untuk .slide(itu jelek tapi ini masalah sulit untuk ditangani ).


Jawaban yang bagus Saya telah menambahkan contoh serupa di bawah ini tetapi saya menghapusnya setelah saya melihat milik Anda. Jika Anda tidak harus mendukung IE9, Anda juga dapat menggunakan flexbox: jsfiddle.net/7gsrb38L/1
ValentinVoilean

Anda dapat menggunakan komentar HTML antar divs </div><!-- --><div class="slide">jika Anda ingin menghapus spasi ekstra di antara keduanya. Gaya inline-blok menyebabkan spasi putih dalam kode Anda diambil sebagai spasi dalam dokumen HTML.
Jo.

@ Jo. untuk mengurangi ukuran halaman Anda bisa menggunakan sesuatu yang tidak di-render misalnya ketika menggunakan php: </div><?php ?><div class="slide">render seperti </div><div class="slide">pada kode sumber.
Fleuv

Juga, jika Anda menghasilkan HTML dengan JavaScript, Anda dapat menghindari spasi. Saya menggunakan DOThtml . HTML di atas dapat diganti dengan ini:dot("body").div(dot.iterate(4, function(i){return dot.div("something something something something").class("slide");})).class("container")
JSideris

30

Combo yang Anda butuhkan adalah

white-space: nowrap

pada orang tua dan

display: inline-block; // or inline

pada anak-anak


25

Ini bekerja untuk saya:

.container {
  display: inline-flex;
}

.slide {
  float: left;
}
<div class="container">
  <div class="slide">something1</div>
  <div class="slide">something2</div>
  <div class="slide">something3</div>
  <div class="slide">something4</div>
</div>

https://css-tricks.com/snippets/css/a-guide-to-flexbox/


Ini dengan overflow: hidden bekerja untukku. Terima kasih.
Alfie

10

overflow: hiddenharus memberi Anda perilaku yang benar. Dugaan saya adalah itu RTLkacau karena Anda memiliki float: leftdi enkapsulasi div.

Selain bug itu, Anda memiliki perilaku yang benar.


1
Saya akan memeriksa apakah itu disebabkan oleh "float: left" pada divs yang dienkapsulasi. Tapi, kode yang sama berfungsi dengan baik di Firefox dan Safari, hanya saja tidak pada IE. Jadi, saya sangat meragukan hal ini.
Morgan Cheng


2

Tidak satu pun di atas bekerja untuk saya.

Dalam kasus saya, saya perlu menambahkan yang berikut ini ke kontrol pengguna yang saya buat:

display:inline-block;


1

kamu bisa memakai

display: table;

untuk wadah Anda dan karenanya hindari overflow: hidden;. Seharusnya melakukan pekerjaan jika Anda menggunakannya hanya untuk tujuan warpping.


0
<div style="height:200px;width:200px;border:; white-space: nowrap;overflow-x: scroll;overflow-y: hidden;">
   <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.</p>
</div>

0

Gunakan display:flexdanwhite-space:nowrap

p{
  display:flex;
  white-space:nowrap;
  overflow:auto;
}
<h2>Sample Text.</h2>

<p>Some example text that will not wrap..lla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum d</p>

<h3>Then some other text</h3>


-1

The <span>tag digunakan untuk kelompok inline-elemen dalam dokumen.
(sumber)


Meskipun ini benar, tampaknya tidak menjawab pertanyaan sama sekali.
Quentin

Ini dengan sempurna menjawab pertanyaan karena span dan div identik dalam everithing kecuali div itu dibungkus dan span tidak. Dan Anda dapat menerapkan solusi apa pun yang Anda inginkan.
Mike

2
Apakah itu berarti bahwa saran Anda adalah "Gunakan bentang alih-alih div"? Karena bukan itu yang kau katakan.
Quentin
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.