Як зробити DIV не обгортати?


179

Мені потрібно створити контейнерний стиль DIV, який містить декілька інших DIV. Попрошується, щоб ці DIV-файли не загорталися, якщо вікно веб-переглядача буде змінено на вузьке.

Я намагався змусити його працювати, як нижче.

<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>

Це працює в більшості випадків. Однак у деяких особливих випадках відображення є неправильним. Я знайшов зміну DIV контейнера на 3000px ширини в RTL IE7; і виявляється безладним.

Чи є інший спосіб зробити контейнер DIV не загортати?


я додав цей тег: white-space: nowrap; і цей тег: переповнення тексту: еліпсис; до мого коду
saber tabatabaee yazdi

Відповіді:


245

Спробуйте використовувати white-space: nowrap;в стилі контейнера (замість overflow: hidden;)


48

Якщо я не хочу визначати мінімальну ширину, тому що я не знаю кількість елементів, єдине, що працювало мені:

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

Але лише в Chrome і Safari: /


33

Наступне працювало для мене без плавання (я трохи змінив ваш приклад на візуальний ефект):

.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>

Дійки можуть бути розділені пробілами. Якщо ви не хочете цього, використовуйте margin-right: -4px;замість margin: 5px;для .slide(це некрасиво , але це складне завдання , щоб мати справу з ).


Чудова відповідь. Я додав подібний приклад нижче, але видалив його після того, як побачив ваш. Якщо вам не потрібно підтримувати IE9, ви також можете використовувати flexbox: jsfiddle.net/7gsrb38L/1
ValentinVoilean

Ви можете використовувати коментарі HTML між div, </div><!-- --><div class="slide">якщо ви хочете видалити зайві пробіли між ними. Стиль вбудованого блоку спричиняє пробіл у вашому коді як пробіл у документі HTML.
Джо.

@Jo. щоб зменшити розмір сторінки, ви скоріше можете використовувати щось, що не відображається, наприклад, при використанні php: </div><?php ?><div class="slide">renders, як </div><div class="slide">у вихідному коді.
Fleuv

Крім того, якщо ви генеруєте HTML за допомогою JavaScript, ви можете уникнути пробілів. Я використовую DOThtml . Наведений вище HTML можна замінити таким:dot("body").div(dot.iterate(4, function(i){return dot.div("something something something something").class("slide");})).class("container")
JSideris

30

Комбо, яке вам потрібно, є

white-space: nowrap

на батьківському і

display: inline-block; // or inline

на дітей


25

Це працювало для мене:

.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/


Це з переповненням: приховане працювало для мене частування. Дякую.
Альфі

10

overflow: hiddenповинні дати вам правильну поведінку. Я здогадуюсь, що RTLце зіпсовано, тому що у вас є float: leftінкапсульована divs.

Окрім цієї помилки, ви отримали правильну поведінку.


1
Я перевірю, чи це пов’язано з "float: left" на інкапсульованих дівах. Але, той же код добре працює на Firefox та Safari, тільки не на IE. Отже, я дуже сумніваюся, що це так.
Morgan Cheng


2

Ніщо з перерахованого вище не працювало для мене.

У моєму випадку мені потрібно було додати наступне до створеного управлінням користувача:

display:inline-block;


1

ви можете використовувати

display: table;

для вашого контейнера, і тому уникайте цього overflow: hidden;. Він повинен виконувати цю роботу, якщо ви використовували його лише для викривлення.


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

Використовуйте display:flexіwhite-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

<span>Тег використовується для групових інлайн-елементів в документі.
(джерело)


Хоча це правда, це питання взагалі не вирішує питання.
Квентін

Це прекрасно вирішує питання, тому що span і div є однаковими у вічному віці, за винятком того, що div є загорнутим, а span - ні. І ви можете втілити будь-які обхідні шляхи.
Майк

2
Чи означає це, що ваша пропозиція: "Використовуйте проміжки замість знаків"? Тому що це не те, що ти сказав.
Квентін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.