CSS clear — заборона обтікання плаваючих блоків


Властивість clear встановлює, з якого боку елемента заборонено його обтікання іншими елементами.

Властивість clear

Скасувати заборону на обтікання можна за допомогою css властивість clear. Іншими словами, властивість визначає чи елемент має бути розміщений поруч із пливучим елементом чи переміщений донизу.

Ви можете вказати сторону(або обидві), з якої елемент не буде обтікатися іншими.

Якщо застосувати властивість для непливучого елементу, він переміщується донизу, доки його межа не буде нижча за межі верхнього пливучого елементу. Під час цього переміщення не відбувається ефект об'єднання відступів(margin).

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

автор: Svitlana

Загальний опис

автор: NagarD

Нотатка

Важливо: Якщо елемент містить тільки пливучих нащадків, його висота дорівнюватиме нулю. Якщо Ви хочете змінити його висоту, треба задати для його нащадків очищення(clear). Це називається clearfix. Один зі способів це зробити, додати псевдоелемент з очищенням:

.element::after { 
   content: "";
   display: block; 
   clear: both;
}
автор: Svitlana

Синтаксис

clear: none|left|right|both|initial|inherit;

Властивість clear може отримувати 6 значень:

none

Без задання. Дозволяє обтікання елемента з усіх сторін.

автор: Svitlana

left

Скасовує обтікання з лівого краю елемента. При цьому всі елементи, що розташовані ліворуч будуть опущені вниз, тобто, розташуються під поточним елементом.

автор: Svitlana

right

Скасовує обтікання з правого боку елемента. При цьому всі інші елементи розташовані праворуч будуть опущені вниз і розташуються під поточним елементом.

автор: Svitlana

both

Скасовує обтікання елемента одночасно з правого і лівого краю.

автор: Svitlana

initial

Встановлює властивість у значення без задання

автор: Svitlana

inherit

Вказує на спадковість властивості від свого батьківського елемента

автор: Svitlana

Значення без задання: none
Наслідує: Ні
Анімується: Ні
JavaScript синтаксис: object.style.clear="both"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 3.5 12 4
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

+ запропонувати свій приклад у пісочниці

Демонстрація роботи властивості

HTML

<div class="info">
	<p>За допомогою властивості <code>clear</code> ми можемо встановити, з якого боку елемента заборонено його обтікання іншими елементами. </p>
	<p>Нижче, для світлого блоку другого контейнера, ми відмінили обтікання.</p>
</div>

<div class="wrapper">
	<div class="block one">
		<div class="child">float: right;</div>
		<div class="content">
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
		</div>
	</div>
	<div class="block two">
		<div class="child">float: right;</div>
		<div class="content">
			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
		</div>
	</div>
</div>

CSS

* {
	box-sizing: border-box;
}

body {
	font-family: monospace;
	font-size: 17px;
}

.info {
	padding: 4px 6px;
}

.info p {
	margin-bottom: 16px;
	margin-top: 0;
}

code {
	font-weight: 700;
	color: #444;
	border-bottom: 2px solid #666;
}

.wrapper {
	display: flex;
	justify-content: space-around;
}

.block {
	width: 25%;
	height: 150px;
	background-color: gold;
	position: relative;
	font-size: 13px;
	padding: 4px;
}

.content {
	background-color: #ccc;
	padding: 2px 4px;
}

.child {
	color: #999;
	background-color: #222;
	padding: 2px 4px;
	display: inline-block;
	float: right;
}

.content p {
	margin: 0;
}

.block.two .content {
	clear: both;
}
автор: Svitlana

HTML

<p>Цей приклад показує як працює властивість <code>clear</code>. Спробуйте вимкнути/ввімкнути перемикач, щоб додати або відмінити обтікання світлого блоку нижче.</p>

<strong>float (для темного блоку):</strong><div class="inputs_float">
  <input id="none" checked name="float" type="radio"/>
  <label for="none">none</label>
  <message for="none">Обтікання елемента не задано. Без задання.</message>
  
  <input id="left" name="float" type="radio"/>
  <label for="left">left</label>
  <message for="left">Вирівнює елемент по лівому краю, а всі інші елементи обтікають його по правому.</message>
  
  <input id="right" name="float" type="radio"/>
  <label for="right">right</label>
  <message for="right">Вирівнює елемент по правому краю, а всі інші елементи будуть обтікати його по лівому.</message>
</div>

<br><strong>clear (для світлого блоку):</strong> <div class="inputs_clear">
  <input id="none" checked name="clear" type="radio"/>
  <label for="none">none</label>
  <message for="none">Без задання. Дозволяє обтікання елемента з усіх сторін.</message>
  
  <input id="left" name="clear" type="radio"/>
  <label for="left">left</label>
  <message for="left">Скасовує обтікання з лівого краю елемента. При цьому всі елементи, що розташовані ліворуч будуть опущені вниз, тобто, розташуються під поточним елементом.</message>
  
  <input id="right" name="clear" type="radio"/>
  <label for="right">right</label>
  <message for="right">Скасовує обтікання з правого боку елемента. При цьому всі інші елементи розташовані праворуч будуть опущені вниз і розташуються під поточним елементом.</message>
  
  <input id="both" name="clear" type="radio"/>
  <label for="both">both</label>
  <message for="both">Скасовує обтікання елемента одночасно з правого і лівого краю.</message>
</div>

<div class="wm">
  <p id="message">Без задання. Дозволяє обтікання елемента з усіх сторін.</p>
</div>

<hr>

<div id="box">
  <div class="child">block</div>
  <div class="content">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
  </div>
</div>

CSS

* {
  box-sizing: border-box;
  padding: 0;
}

body {
  font-family: system-ui, sans-serif;
}

#box {
  margin-top: 25px;
  line-height: 1.45;
  width: 400px;
  background-color: gold;
  padding: 4px;
}

.child {
  background-color: #222;
  color: #999;
  padding: 16px;
  float: none;
  text-align: center;
}

.content {
  background-color: #ccc;
  padding: 2px 4px;
  clear: none;
}

message {
  display: none;
}

.wm {
  min-height: 100px;
}

JS

const message = document.querySelector('#message');

document.querySelectorAll('.inputs_float input').forEach((el) => el.addEventListener('change', function () {
  document.querySelectorAll('#box .child').forEach((n) => n.style.setProperty('float', this.id));
  document.querySelectorAll('#box .child').forEach((n) => n.innerHTML = this.id);
}));
document.querySelectorAll('.inputs_clear input').forEach((el) => el.addEventListener('change', function () {
  var messageText = document.querySelector("message[for='" + this.id + "']");
  message.textContent = messageText?.textContent ?? '';
  document.querySelectorAll('#box .content').forEach((n) => n.style.setProperty('clear', this.id));
}));
автор: Svitlana

Плаваючий квадрат в обох блоках однаковий. Ліворуч батько його не міряє — рамка й фон закінчуються вище квадрата. Праворуч батьку задано display: flow-root, і він охопив плаваючу дитину без жодного додаткового елемента.

HTML

<figure>
    <div class="box">
        <span class="ball"></span>
        <p>Короткий текст поруч із плаваючим блоком.</p>
    </div>
    <figcaption>батько не охоплює float</figcaption>
</figure>

<figure>
    <div class="box root">
        <span class="ball"></span>
        <p>Короткий текст поруч із плаваючим блоком.</p>
    </div>
    <figcaption>display: flow-root</figcaption>
</figure>

CSS

figure {
    display: inline-block;
    width: 220px;
    margin: 0 26px 0 0;
    font: 13px sans-serif;
    vertical-align: top;
}

figcaption {
    margin-top: 8px;
    font: 12px monospace;
    text-align: center;
}

.box {
    border: 2px solid #0172ad;
    background: #edf3f6;
}

.root {
    display: flow-root;
}

.ball {
    display: block;
    float: left;
    width: 70px;
    height: 70px;
    margin: 6px;
    background: #0172ad;
}

.box p {
    margin: 6px;
}
автор: NagarD

Демонстрації дії різних значень властивості clear

HTML

<p>Значення(ключові слова) для властивості <code>clear</code>:</p>
<hr>
<select id="form">
  <option value="none">none</option>
  <option value="left">left</option>
  <option value="right">right</option>
  <option value="both">both</option>
</select>
<hr>

<div class="float-l">
  <code>float: left;</code>
</div>

<div class="float-r">
  <code>float: right;</code>
</div>

<div id="block">
  Тестовий блок
</div>

<div class="float-r">
  <code>float: right;</code>
</div>

CSS

#block {
  font-family: monospace;
  background-color: #eee;
  border: 2px solid #666;
  padding: 16px;
  text-align: center;
  color: #222;
  margin-top: 36px;
  width: 150px;
  clear: none;
}

.float-l,
.float-r {
  background-color: #444;
  padding: 16px;
  width: 150px;
  text-align: center;
  color: #fff;
}

.float-l {
  float: left;
}

.float-r {
  float: right;
}

JS

var block = document.getElementById('block');
var form = document.getElementById('form');

form.onchange = function () {
  for (var i = 0; i < form.options.length; i++) {if (window.CP.shouldStopExecution(0)) break;
    if (form.options[i].selected == true) {
      block.style.clear = form.options[i].value;
    }
  }window.CP.exitedLoop(0);
};
//# sourceURL=pen.js
автор: Svitlana

Простий приклад роботи властивості clear

HTML

<div class="left">
  <code>float; left;</code>
</div>

<div class="right">
  <code>float; right;</code>
</div>

<div class="clear">
  <code>clear: both;</code>
</div>

<div class="right">
  <code>float; right;</code>
</div>

CSS

div {
 background-color: #eee;
 border: 2px solid #666;
 color: #222;
 width: 175px;
 padding: 24px 16px;
 margin: 4px;
 text-align: center;
}
.right {
 float: right;
}
.left {
 float: left;
}
.clear {
 clear: both;
 background: #444;
 color: #f1f1f1;
 border-color: #111;
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід