CSS - выравнивание div по горизонтали

У меня есть контейнерный div с фиксированным width и height, с overflow: hidden.

Мне нужен горизонтальный ряд блоков float: left в этом контейнере. Дивы, которые перемещаются влево, естественным образом нажимают на «строку» ниже после того, как прочитают правую границу своего родителя. Это произойдет, даже если height родителя не разрешит этого. Вот как это выглядит:

! [Неправильно] [1] - удалено изображение лачуги изображения, которое было заменено рекламой

Как бы я хотел, чтобы это выглядело:

! [Вправо] [2] - удалено изображение лачуги изображения, которое было заменено рекламой

Примечание: желаемый эффект может быть достигнут с помощью встроенных элементов и white-space: no-wrap (именно так я сделал это на показанном изображении). Однако для меня это нехорошо (по причинам, слишком длинным, чтобы объяснять здесь), поскольку дочерние блоки div должны быть плавающими элементами уровня блока.

Ссылки на ваши изображения, кажется, не работают. Если у вас остались оригиналы, повторно загрузите их в stack.imgur. Спасибо!

Ilmari Karonen 27.07.2015 11:18
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
85
1
210 335
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Это похоже на то, что вы хотите:

#foo {
  background: red;
  max-height: 100px;
  overflow-y: hidden;
}

.bar {
  background: blue;
  width: 100px;
  height: 100px;
  float: left;
  margin: 1em;
}
<div id = "foo">
  <div class = "bar"></div>
  <div class = "bar"></div>
  <div class = "bar"></div>
  <div class = "bar"></div>
  <div class = "bar"></div>
  <div class = "bar"></div>
</div>

вы можете использовать свойство clip:

#container {
  position: absolute;
  clip: rect(0px,200px,100px,0px);
  overflow: hidden;
  background: red;
}

обратите внимание на position: absolute и overflow: hidden, необходимые для работы clip.

что такое поддержка браузера клипом?

alex 28.10.2008 09:27

От w3schools.com/cssref/pr_pos_clip.asp: Свойство clip поддерживается во всех основных браузерах. Примечание. Значение «наследовать» не поддерживается в IE7 и более ранних версиях. IE8 требует! DOCTYPE. IE9 поддерживает «наследование».

dsomnus 16.08.2012 21:56
Ответ принят как подходящий

Вы можете поместить в контейнер внутренний div, достаточно широкий, чтобы вместить все плавающие div.

#container {
  background-color: red;
  overflow: hidden;
  width: 200px;
}

#inner {
  overflow: hidden;
  width: 2000px;
}

.child {
  float: left;
  background-color: blue;
  width: 50px;
  height: 50px;
}
<div id = "container">
  <div id = "inner">
    <div class = "child"></div>
    <div class = "child"></div>
    <div class = "child"></div>
  </div>
</div>

как я могу сделать внешний центр div? Я пробовал добавить align = "center" во внешний div, похоже, не работает.

hakunami 27.02.2014 07:39

Это работает и для процентной ширины. В моем случае я использую контейнерный div с width: 200%;, а каждый из дочерних элементов - width: 50%;. Затем я могу использовать transform: translateX(n%); в контейнере для имитации эффекта карусели, если у меня есть родительский контейнер с overflow: hidden;.

evolross 25.10.2017 01:22

style = "overflow:hidden" для родительского div и style = "float: left" для всех дочерних divs важны для выравнивания divs по горизонтали для старых браузеров, таких как IE7 и ниже.

В современных браузерах вы можете использовать style = "display: table-cell" для всех дочерних divs, и он будет правильно отображаться по горизонтали.

Проплывите их влево. По крайней мере, в Chrome вам не нужна оболочка id = "container" в примере LucaM.

Float: left, display: inline-block не сможет выровнять элементы по горизонтали, если они превышают ширину контейнера.

Важно отметить, что контейнер не должен оборачиваться, если элементы ДОЛЖНЫ отображаться горизонтально: white-space: nowrap

Теперь вы можете использовать CSS Flexbox для выравнивания div по горизонтали и вертикали, если вам нужно. общая формула выглядит так

parent-div {
  display: flex;
  flex-wrap: wrap;
  /* for horizontal aligning of child divs */
  justify-content: center;
  /* for vertical aligning */
  align-items: center;
}

child-div {
  width: /* yoursize for each div */
  ;
}

элегантное решение.

zawhtut 15.10.2020 10:40

Вы можете сделать что-то вроде этого:

#container {
  background-color: red;
  width: 200px;
}

.child {
  background-color: blue;
  width: 150px;
  height: 50px;
}
<div id = "container">
  <div id = "inner">
    <div class = "child"></div>
    <div class = "child"></div>
    <div class = "child"></div>
  </div>
</div>

Другие вопросы по теме