Отменить обтекание css: Очистка float | WebReference

Содержание

Как убрать обтекание и раскрыть родительский блок с float элементами?

Когда внутри родительского блока находятся только float (плавающие) элементы, то родительский блок схлопывается. Как убрать обтекание и раскрыть родительский блок рассмотрим далее.

Перед тем как начать, давайте обозначим некоторые определения:
родительским блоком можно назвать любой блок относительно вложенных в него блоков, например блок <ul> – родительский для вложенных в него элементов списка – <li>;
дочерний блок – это соответственно любой вложенный блок относительно бока верхнего уровня.

ДемоИсходники

Обозначим проблему с обтекаемостью

Сделаем обычный список, элементы которого имеют float:left;


    <ul>
      <li>Элемент №1</li>
      <li>Элемент №2</li>
      <li>Элемент №3</li>
      <li>Элемент №4</li>
    </ul>

ul li { float:left; }

В результате родительский блок схлопывается:

(для наглядности я прописал красный бордер для родительского элемента)

Для того чтобы этого не происходило необходимо убрать обтекаемость после элементов списка и для этого есть несколько способов.

Убрать обтекаемость

Первый способ борьбы – это задать overflow:hidden для родительского элемента.


ul {overflow: hidden;}

Таким образом мы убираем обтекаемость, родительский блок понимает где кончается плавающие элементы и схлопывания не происходит.

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

Второй способ.
Второй способ очень хорош и имеет кроссбраузерную поддержку. Необходимо родительский элемент обозначить как inline-block и задать 100% ширину.


ul {display: inline-block; width: 100%;}

Проблему с whitespace`ом у инлайновых элементов можно решить почитав этот пост CSS — как убрать промежутки между inline блоками?

Третий способ.
Можно банально добавить внутрь родительского блока, в самом конце еще один блок, которому прописать стили с очисткой обтекаемости.


    <ul>
      <li>Элемент №1</li>
      <li>Элемент №2</li>
      <li>Элемент №3</li>
      <li>Элемент №4</li>
      <div></div>
    </ul>

И прописать стили для класса .clear


.clear {
	clear: both; 
	visibility: hidden; 
	line-height: 0; 
	height: 0;
}

Но этот вариант весьма не практичен, т.к. мы создаем отдельный пустой элемент в нашей верстке, что не есть гуд 🙂

Четвертый способ.


По сути он отталкивается от предыдущего решения, но вместо создания пустого блока, мы воспользуемся псевдо-элементом :after.


ul:after {
	content: "."; //не пустой для Opera это важно 🙂
	display: block; 
	clear: both; //очищаем обтекаемость
	visibility: hidden; //не отображаем
	line-height: 0; //высоту блока и строки сводим на ноль, чтобы не было видно этого блока
	height: 0;
}

Вот такое решение намного эстетичнее!

Для вас все примеры со стиля ми выложил в демке, можете потестить на разных браузерах и подобрать себе свой вариант.

ДемоИсходники

clear — CSS | MDN

Свойство clear CSS указывает, может ли элемент быть рядом с плавающими floating элементами, которые предшествуют ему или должны быть перемещены вниз (очищены) под ними. Свойство clear

применяется как к плавающим, так и к неплавающим элементам.

При применении к неплавающим блокам он перемещает границу края border edge (en-US) элемента до тех пор, пока не окажется ниже края margin edge (en-US) поля всех соответствующих поплавков. Вертикальный край неплавающего блока сжимается.

Вертикальные поля между двумя плавающими элементами, с другой стороны, не будут разрушаться. При применении к плавающим элементам — margin edge (en-US) нижнего элемента перемещается ниже margin edge (en-US) всех соответствующих поплавков. Это влияет на положение более поздних поплавков, поскольку более поздние поплавки не могут быть расположены выше предыдущих.

Поплавки, которые имеют отношение к очистке, — это более ранние поплавки в одном и том же контексте форматирования блоков (en-US)

.

Примечание: Если элемент содержит только плавающие элементы, его высота сворачивается в ничто. Если вы хотите, чтобы он всегда мог изменять размер, чтобы он содержал в себе плавающие элементы, вам нужно самоочистить своих детей. Это называется clearfix, и один из способов сделать это — это заменит clear заменённый ::after псевдоэлемент на нем.«`css #container::after { content: «»; display: block; clear: both; }

/* Значения ключевых слов */
clear: none;
clear: left;
clear: right;
clear: both;
clear: inline-start;
clear: inline-end;
/* Global values */
clear: inherit;
clear: initial;
clear: unset;

Значения

none

Является ключевым словом, указывающим, что элемент не перемещается вниз, чтобы очистить предыдущие плавающие элементы.

left

Является ключевым словом, указывающим, что элемент перемещается вниз, чтобы очистить левые поплавки.

right

Является ключевым словом, указывающим, что элемент перемещается вниз, чтобы удалить прошлые правые поплавки.

both

Это ключевое слово, указывающее, что элемент перемещается вниз, чтобы очистить как левые, так и правые поплавки.

inline-start

Является ключевым словом, указывающим, что элемент перемещается вниз для очистки поплавков в начале содержащего его блока, то есть левые поплавки на скриптах ltr и правые поплавки на скриптах rtl.

inline-end

Является ключевым словом, указывающим, что элемент перемещается вниз для очистки поплавков

в конце содержащего его блока, то есть правые поплавки на скриптах ltr и левые поплавки на скриптах rtl.

Формальный синтаксис

clear = 
inline-start | (en-US)
inline-end | (en-US)
block-start | (en-US)
block-end | (en-US)
left | (en-US)
right | (en-US)
top | (en-US)
bottom | (en-US)
none

clear: left

HTML
<div>
  <p>Давай лучше "бёзди хэппи" затянем, нежели Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus sit amet diam. Duis mattis varius dui. Suspendisse eget dolor.</p>
  <p>Пусть бегут неуклюже пешеходы по лужам, Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
  <p>Этот абзац очищается слева.</p>
</div>
CSS
.wrapper{
  border:1px solid black;
  padding:10px;
}
.left {
  border: 1px solid black;
  clear: left;
}
. black {
  float: left;
  margin: 0;
  background-color: black;
  color: #fff;
  width: 20%;
}
.red {
  float: left;
  margin: 0;
  background-color: pink;
  width:20%;
}
p {
  width: 50%;
}

clear: right

HTML
<div>
  <p>Лучше нести бред и околесицу, но более осмысленную, чем Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
  <p>- Так я ж намедни намекал, что Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
  <p>Этот абзац очищается справа.</p>
</div>
CSS
.wrapper{
  border:1px solid black;
  padding:10px;
}
.right {
  border: 1px solid black;
  clear: right;
}
.black {
  float: right;
  margin: 0;
  background-color: black;
  color: #fff;
  width:20%;
}
.red {
  float: right;
  margin: 0;
  background-color: pink;
  width:20%;
}
p {
  width: 50%;
}

clear: both

HTML
<div>
  <p>Лучше нести осмысленную белиберду, чем "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Phasellus sit amet diam. Duis mattis varius dui. Suspendisse eget dolor.</p> <p>Вот я и говорю, что "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus sit amet diam. Duis mattis varius dui. Suspendisse eget dolor".</p> <p>Этот абзац очищает оба.</p> </div>
CSS
.wrapper{
  border:1px solid black;
  padding:10px;
}
.both {
  border: 1px solid black;
  clear: both;
}
.black {
  float: left;
  margin: 0;
  background-color: black;
  color: #fff;
  width:20%;
}
.red {
  float: right;
  margin: 0;
  background-color: pink;
  width:20%;
}
p {
  width: 45%;
}
СпецификацияСтатусКоммент
CSS Logical Properties and Values Level 1
Определение ‘float and clear’ в этой спецификации.
Редакторский черновикДобавляет значения
inline-start
и inline-end.
CSS Level 2 (Revision 1)
Определение ‘clear’ в этой спецификации.
РекомендацияНикаких существенных изменений, хотя детали уточняются.
CSS Level 1
Определение ‘clear’ в этой спецификации.
РекомендацияНачальное определение
Начальное значениеnone
Применяется кблочные элементы
Наследуетсянет
Обработка значениякак указано
Animation typediscrete

BCD tables only load in the browser

with JavaScript enabled. Enable JavaScript to view data.
  • Box model (en-US)

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

Want to get more involved? Learn

how to contribute.

This page was last modified on by MDN contributors.

html — CSS без переноса текста

спросил

Изменено 2 года, 5 месяцев назад

Просмотрено 167 тысяч раз

См. код http://jsbin.com/eveqe3/edit, также приведенный ниже.

Мне нужно показать текст внутри элементов div таким образом, чтобы текст отображался только в зеленом поле с указанной шириной, остальную часть строки нужно скрыть. Любые предложения, пожалуйста…

 <стиль>
  #контейнер{
    ширина: 220 пикселей;
  }
  . элемент{
    плыть налево;
    граница: 1px сплошная #0a0;
    ширина: 100 пикселей;
    высота: 12 пикселей;
    отступ 2px;
    поля: 0px 2px;
  }
  .clearfix{
    ясно: оба;
  }


<тело>
  <дел>
    
Очень оооооооооооооооооочень длинный текст
Еще один оооооооооооооооооооочень длинный текст
<дел>
  • HTML
  • CSS
  • текст

2

В дополнение к overflow:hidden используйте

 white-space:nowrap;
 

2

Просто используйте:

 переполнение: скрыто;
пробел: nowrap;
 

В разделах вашего товара

0

Использовать переполнение свойства css. Например:

 .элемент{
    ширина: 100 пикселей;
    переполнение: скрыто;
  }
 

Свойство переполнения может иметь одно из многих значений, таких как ( скрытое , прокрутка , видимое ).

Надеюсь, это поможет.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

2022 Обновления CSS | 12 дней Интернета

Это был очень веселый год для развития CSS! Многочисленные долгожданные функции были интегрированы в наши вечнозеленые браузеры (Chrome, Edge, Firefox и Safari) с импульсом, который продлится до 2023 года.

Давайте быстро заглянем под дерево CSS и раскроем подарки, которые мы получили год!

Но сначала, вот три функции CSS 2022, уже рассмотренные в этой серии:

  • Каскадные слои появился после впечатляющих кросс-браузерных усилий в феврале/марте этого года, а автор спецификации Мириам Сюзанн в пятый день представила подробное руководство по каскадным слоям
  • :has() считается «родительским» селектором, но узнайте, почему это не вся история от Эстель Вейл в день 11
  • В ноябре для Chromium поступили новые блоки , чтобы дополнить вечнозеленую поддержку, а в первый день Эрик А. Мейер рассмотрел новые блоки динамического окна просмотра

Изменения макета элемента Finesse с запросами контейнера

#

Запросы размера контейнера CSS — это способ выйти за рамки мультимедийных запросов, которые привязаны к области просмотра, и вместо этого позволяют нам изменять поведение элемента в зависимости от контейнера, в котором он находится. Ожидайте, что они станут кросс-браузерными, когда они будут отправлены в январе в грядущем Firefox 109. С полифиллом контейнерных запросов вы можете начать использовать их прямо сегодня!

Я представил предварительную версию контейнерных запросов в серии 2021, но в то время они все еще были экспериментальной спецификацией. Тем не менее, я обновил эту статью, когда синтаксис стабилизировался позже в этом году, так что узнайте, как начать работу с контейнерными запросами!

Предстоящая функция, часто связанная с контейнерными запросами, предназначена для синтаксиса диапазона для медиа-запросов . В настоящее время он поддерживается в Chrome, Edge и Firefox, а также Safari Technical Preview 160. Он также поддерживается с помощью полифилла контейнерных запросов и инструментов обработки сборки, таких как LightningCSS.

В 2023 году также обратите внимание на запросов в стиле контейнера для стабилизации. У Ахмада Шадида есть отличный обзор того, как мы сможем использовать запросы стилей.

Лучшее управление эффектами с индивидуальными свойствами преобразования

#

В августе Chromium 104 завершил доступность отдельных свойств преобразования повернуть , масштабировать и перевести . Это означает, что когда вы определяете преобразование и вам необходимо обновить один из этих типов преобразования, вы можете сделать это разово, вместо того, чтобы дублировать остальную часть определения преобразования .

Это обеспечивает больший контроль над созданием переходов и анимаций, например, масштабирование элемента с анимацией по ключевым кадрам. Раньше вы, возможно, использовали настраиваемые свойства, чтобы облегчить эту проблему и добиться аналогичного контроля, но использование отдельных свойств определенно предпочтительнее!

Дополнительные стили фокусировки с помощью `:focus-visible`

#

В марте Safari 15. 4 выпустил псевдокласс :focus-visible , и вскоре после этого он стал поведением фокуса элемента по умолчанию, используемым в вечнозеленых браузерах. При использовании :focus-visible , основываясь на эвристике, браузер определит, показывать ли «кольцо фокусировки» — если вы не укажете свои собственные стили :focus в качестве переопределения. На практике это означает, что при взаимодействии клавиатуры (вкладки) с фокусируемыми элементами, такими как кнопки, будет отображаться кольцо фокусировки, но не щелчки мышью.

Вы можете узнать больше о том, как это работает, и о моем любимом методе определения стилей фокуса с пользовательскими свойствами.

Пользовательские цвета управления формой с `accent-color`

#

Также в марте в Safari 15.4 появилось свойство акцентного цвета . Как автор серии из 4 частей о настройке полей формы, я могу сказать вам, что люди действительно заинтересованы в этой теме!

Использование акцентного цвета позволяет частично раскрасить четыре элемента управления: прогресс, диапазон, флажок и радио. Попробуйте изменить значение акцентного цвета в следующем CodePen.

См. CodePen.

Адаптация к темному/светлому режимам ОС с помощью «цветовой схемы»

#

Январь добавил в Firefox цветовую схему , чтобы завершить поддержку. Это свойство позволяет вам определить, какие цветовые режимы ОС поддерживают элементы вашего сайта. Его можно установить на :root для воздействия на страницу или на отдельные элементы. Он принимает одно или два значения для определения, где установка только «светлая» означает, что вы поддерживаете только светлую тему. Использование двух значений, таких как установка «светлый темный», означает, что ваш сайт предпочитает светлый режим, но также будет работать и с темным режимом. Это свойство не требует использования предпочитает-цветовую схему медиа-запрос для работы.

При установке на :root (и без переопределения сайта связанных свойств) он автоматически переключит весь макет в темный режим, если это опция ОС. Это включает в себя изменение фона страницы на черный, а цвета текста и элементов управления формой на более светлый цвет для соответствующего контраста. CodePen демонстрирует страницу с некоторым текстом и несколькими полями формы и только свойством цветовой схемы , используемым для адаптации к светлым и темным режимам.

См. CodePen.

Даже если вы хотите создавать собственные светлые и темные темы, это свойство по-прежнему полезно и может сочетаться с акцентным цветом для адаптации элементов управления формы и достижения индивидуального ощущения.

Сара Джой рассказывает больше о том, как работает `color-scheme`, включая соответствующий метатег и изменение его с помощью JavaScript.

Предотвратить фоновую прокрутку страницы с помощью `overscroll-behavior`

#

Вас когда-нибудь раздражала страница документации, которая начинала прокручиваться после того, как вы доходили до конца прокрутки боковой панели навигации? Управление этой «цепочкой прокрутки» является целью свойство overscroll-behavior , которое стало кросс-браузерным с Safari 16 в сентябре. Свойство принимает три значения, где содержит — это то, что вы хотите использовать для предотвращения эффекта цепочки прокрутки, когда достигается граница прокрутки в элементе подстраницы (например, в примере с боковой панелью навигации).

В демо-версии CodePen область списка «Оглавление» прокручивается, а overscroll-behavior: contains предотвратит прокрутку фоновой статьи до тех пор, пока мышь не покинет контейнер списка.

См. CodePen.

Почти стабильный: `subgrid` для наследования макета сетки и повторного использования

#

Subgrid почти кросс-браузерный, Chromium немного отстает, но разрабатывается прототип, который показывает их намерение стабилизировать эту функцию. Определенно, с ним нужно начать знакомиться для использования позже в 2023 году!

Изучите 10 способов, которыми подсетка делает разметку сетки еще более эффективной на 12-м дне от Рэйчел Эндрю.