Разница в поведении строчных и блочных элементов




Послание № 8

Блочные, строчные и иные элементы через CSS

свойство "display"

Свойство display имеет много разных значений. Обычно, используются только четыре из них: none, inline и block, inline-block потому что, когда-то браузеры другие не поддерживали.

Значение none

Самое простое значение. Элемент не показывается, вообще. Как будто его и нет.

<div style="border:1px solid black">

<div style="display: none">Я - невидим!</div>

</div>

 

Значение block

Это CSS значение делает элемент блочным, то есть:

· блочные элементы располагаются один над другим, вертикально;

· блок стремится расшириться на всю доступную ширину;

· можно указать ширину и высоту.

Это значение display многие элементы имеют по умолчанию: контейнер <div>, заголовок <h1>, параграф <p>.

Блоки прилегают друг к другу вплотную, если у них нет margin.

Значение inline

Это CSS значение делает элемент строчными, то есть:

· элементы располагаются на той же строке, последовательно;

· ширина и высота элемента определяются по содержимому. Поменять их нельзя.

Строчные (инлайновые) элементы по умолчанию: <span>, <a>.

Значение inline-block

Это значение – означает элемент, который продолжает находиться в строке (inline), но при этом может иметь важные свойства блока.

Как и инлайн-элемент:

· Располагается в строке.

· Размер устанавливается по содержимому.

Во всём остальном – это блок, то есть:

· Элемент всегда прямоугольный.

· Работают свойства width/height.

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

Свойство vertical-align,применяемое к строчно-блочному элементу, позволяет выровнять этот элемент внутри по вертикали относительно строки.

Например:

<div class="block">

<span>Lorem, ipsum.</span>

<span class="ib-1">Unde, illum.</span>

<span>Voluptatibus, dolorum.</span>

<span class="ib-2">Voluptatibus, dolorum.</span>

</div>

 

<style>

.ib-1,.ib-2{

border: 1px solid #000;

width: 100px;

padding: 1rem;

margin: 1rem;

vertical-align: middle;

display: inline-block;

}

.ib-1{

height: 50px;

}

.ib-2{

height: 100px;

}

.block{

border: 1px solid red;

}

</style>

 

Вот, что получится:

 

 

vertical-align
Значение Описание
baseline Выравнивает базовую линию текущего элемента по базовой линии родителя. Если родительский элемент не имеет базовой линии, то за нее принимается нижняя граница элемента.
bottom Выравнивает основание текущего элемента по нижней части элемента строки, расположенного ниже всех.
middle Выравнивание средней точки элемента по базовой линии родителя плюс половина высоты родительского элемента.
sub Элемент изображается как подстрочный, в виде нижнего индекса. Размер шрифта при этом не меняется.
super Элемент изображается как надстрочный, в виде верхнего индекса. Размер шрифта остается прежним.
text-bottom Нижняя граница элемента выравнивается по самому нижнему краю текущей строки.
text-top Верхняя граница элемента выравнивается по самому высокому текстовому элементу текущей строки.
top Выравнивание верхнего края элемента по верху самого высокого элемента строки.
inherit Наследует значение родителя.

 

Важно!

Пробелы в html коде также учитываются, если они есть между строчно-блочными элементами (inline-block).

 

Свойство "float"

Свойство float в CSS занимает особенное место, до его появления расположить два блока один слева от другого можно было лишь при помощи таблиц. Но в его работе есть ряд особенностей.

Задаем значение float

Установка свойства float происходит следующим образом:

#element {

float: right;

}

Всего есть 4 значения для свойства float:

· left и right используются для соответствующих направлений;

· none (по умолчанию) - обеспечивает, что элемент не будет "плавать";

· inherit значение такое же, как и у родительского элемента.

Как работает float

После применения float свойства происходит следующее:

· Элемент вынимается из потока документа и сдвигается влево (для left) или вправо (для right) до того, как коснётся либо границы родителя, либо другого элемента с float.

· Если пространства по горизонтали не хватает для того, чтобы вместить элемент, то он сдвигается вниз до тех пор, пока не начнёт помещаться.

· Другие не позиционированные блочные элементы без float ведут себя так, как будто элемента с float нет, так как он убран из потока.

· Строки (inline-элементы), напротив, «знают» о float и обтекают элемент по сторонам.

Ещё детали:

· Элемент при наличии свойства float приобритает некоторые свойства блочных элементов. То есть, указав строчному элементу свойство float: left/right, для него будут работать width/height.

· Ширина float-блока определяется по содержимому.

· Вертикальные отступы margin элементов с float не сливаются с отступами соседей, в отличие от обычных блочных элементов.

"float" – элементы с текстом

Одно из первых применений float, для которого это свойство когда-то было придумано – это вёрстка текста с картинками, отжатыми влево или вправо.

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

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

 

Сетки через float?

Помимо обтекания текстом элементов, float может использоваться для создания макета всего сайта.

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

Для вёрстки в две колонки через float можно сделать два <div>. Первому указать float:left (левая колонка), а второму – float:right (правая колонка). Чтобы они не ссорились, каждой колонке нужно дополнительно указать ширину.

Например, вот простенький код:

<div>Шапка</div>

<div class="column-left">Левая колонка</div>

<div class="column-right">Правая колонка</div>

<div class="footer">Низ</div>

<style>

.column-left {

float: left;

width: 30%;

}

.column-right {

float: left;

width: 70%;

}

.footer {

clear: both;

}

</style>

 

Разница в поведении строчных и блочных элементов

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

Строчные элементы, в отличие от блочных, «чувствуют» float и уступают ему место, обтекая элемент.

Важно!

Строки и инлайн-элементы смещаются, чтобы уступить место float. Обычные блоки – ведут себя так, как будто элемента нет.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: