какая высота будет у блока описываемого в коде ниже

Блочная модель

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.1. Свойства, формирующие блочный элемент

Для наглядности свойства блока можно представить в виде матрёшек (рис. 3.2). Любую маленькую матрёшку можно вставить в более крупную матрёшку, но никак не наоборот.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Полем будем называть расстояние от внутреннего края границы или края блока до воображаемого прямоугольника, ограничивающего содержимое блока. Из-за того, что значения полей могут различаться на каждой стороне, применяют выражения «верхнее поле» или «поле сверху», и им подобные для других сторон. Обозначение «поля» следует понимать как одинаковое значение полей для всех сторон. Основное предназначение полей — создать пустое пространство вокруг содержимого блочного элемента, например текста, чтобы он не прилегал плотно к краю элемента. Использование полей повышает читабельность текста и улучшает внешний вид страницы. В примере 3.1 показано использование полей для оформления текста.

Пример 3.1.Использование свойства padding

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Результат примера показан на рис. 3.3.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.3. Поля вокруг текста

Значения полей не могут быть отрицательными.

Границы

Пример 3.2. Красная пунктирная линия

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Результат данного примера показан на рис. 3.4.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.4. Линия возле текста

Отступы

Отступом будем называть пустое пространство от внешнего края границы, полей или содержимого блока. Как уже упоминалось, границы с полями не обязательны и могут отсутствовать, так что способ формирования отступов зависит от ситуации. Как и в случае с полями, применяют выражения «верхний отступ» или «отступ сверху», и им подобные для других сторон. Обозначение «отступы» следует понимать как одинаковое значение отступов для всех сторон.

Для отступов характерны следующие особенности.

В примере 3.3 показано схлопывание отступов и их прозрачность.

Пример 3.3. Использование отступов

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Результат данного примера показан на рис. 3.5. Обратите внимание, что расстояние между блоками равно 20 пикселов, а не 40, которые получаются суммированием верхнего и нижнего отступа у блоков. Это происходит за счёт эффекта схлопывания, при котором близлежащие отступы объединяются.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.5. Отступы в элементе

Ширина блока

Ширина блока это комплексная величина и складывается из нескольких значений свойств:

Как уже упоминалось, какие-то свойства могут отсутствовать и в этом случае на ширину не оказывают влияние. Общая ширина показана на рис. 3.6 в виде чёрной пунктирной линии.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.6. Ширина блока

Допустим, для слоя написан следующий стиль.

Ширина блока согласно этой записи будет равна 342 пиксела, эта величина получается складыванием значения ширины контента плюс отступ слева, граница слева и поле слева, плюс поле справа, граница справа и отступ справа. Суммируем все числа.

Ширина = 300 + 7 + 7 + 4 + 4 + 10 + 10 = 342

Надо отметить, что блочная модель с формированием ширины несет в себе кучу неудобств. Постоянно приходится заниматься вычислениями, когда требуется задать определенную ширину блока. Также начинаются проблемы при сочетании разных единиц измерения, в частности, процентов и пикселов. Предположим, что ширина контента задана как 90%, если сюда приплюсовать поля и границы, заданные в пикселах, то нельзя вычислить суммарную ширину блока, поскольку проценты напрямую в пикселы не переводятся (в CSS3 так суммировать можно, только поддерживается эта возможность далеко не всеми браузерами). В итоге может получиться так, что общая ширина блока превысит ширину веб-страницы, что приведёт к появлению горизонтальной полосы прокрутки. Выходов из подобной ситуации два — поменять алгоритм блочной модели и воспользоваться вложенными слоями.

Алгоритм блочной модели

Табл. 3.1. Поддержка браузерами свойства box-sizing

БраузерInternet ExplorerChromeOperaSafariFirefox
Версия8.0+2.0+7.0+3.0+1.0+
Свойствоbox-sizing-webkit-box-sizingbox-sizing-webkit-box-sizing-moz-box-sizing

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

Пример 3.4. Ширина блока

XHTML 1.0 CSS 3 IE 7 IE 8+ Cr Op Sa Fx

Вложенные слои

Использование свойства box-sizing всем хорошо, кроме того, что не работает в старых версиях IE. Если вы верстаете сайт с учетом IE7 и IE6, вам подойдёт старый проверенный метод с вложением слоев. Идея простая — для внешнего блочного элемента задаётся только необходимая ширина, а для вложенного блока всё остальное — поля, границы и отступы. Поскольку по умолчанию ширина блока равна доступной ширине родителя, получится, что блоки в каком-то смысле накладываются друг на друга, при этом фактическая ширина такого комбинированного элемента будет чётко задана. В примере 3.5 показано использование вложенных слоев.

Пример 3.5. Вложенные слои

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Результат данного примера показан на рис. 3.7.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.7. Ширина блока в процентах

Преимуществом вложенных слоев является использование отступов ( box-sizing их не учитывает), универсальность метода, также то, что фон по желанию можно добавлять к одному или другому слою. Тем самым несколько меняется внешний вид элементов, это особенно актуально при включении фоновых рисунков. Из недостатков метода можно отметить добавление дополнительного блока, который усложняет структуру кода, особенно при частом применении метода. Но это можно считать мелочью по сравнению с преимуществами.

Высота блока

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.8. Высота блока

Пример 3.6. Высота блока

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

Результат данного примера показан на рис. 3.9.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.9. Высота блока в процентах

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

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 3.10. Превышение размеров блока

Код, приводящий к подобному результату, приведен в примере 3.7.

Пример 3.7. Превышение размеров блока

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 11. Использование свойства overflow

Если задать одновременно цвет фона и пунктирную границу блока, то становится заметно, что граница проходит внутри цветной области. Правда в разных браузерах наблюдается разночтение, в частности Internet Explorer до версии 7.0 включительно содержит ошибку, при которой фон выводится по внутреннему краю границы (рис. 12в). Начиная с версии 8.0 эта ошибка исправлена, и фон выводится по стандартам (рис. 12г). Браузеры Opera (рис. 12а), Firefox (12б), Safari и Chrome (рис. 12д) фон выводят правильно. Небольшие различия наблюдаются при отображении пунктирной рамки, но они не влияют на блочную модель.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Рис. 12. Отображение фона в браузере

В примере 3.8 показано, как создать код для получения подобной границы.

Пример 3.8. Фон и граница

XHTML 1.0 CSS 2.1 IE 7 IE 8+ Cr Op Sa Fx

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

Источник

Свойства блочной модели CSS. Объяснение с примерами

Приветствую всех жителей хабравиля! Сегодня я подготовил для вас материал по основам по блочной модели CSS. Безусловно, многие из вас знают о чём идёт речь, но сегодня я постараюсь объяснить прописные истины более понятно и наглядно, что поможет вам создавать веб-сайты, с идеально подходящими друг другу элементами (с точностью до пикселя), и научит более точно использовать свойства размеров, полей, отступов и границ. Итак, всех приглашаю под кат и погнали!

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Оглавление

Зачем изучать блочную модель CSS?

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Блочная модель CSS состоит из свойств: box-sizing, padding и margin. Если их не использовать, то получим что-то похожее ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеВеб-сайт без полей и отступов

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

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеВеб-сайт, использующий свойства блочной модели

В этой статье мы поговорим о том, как использовать эти свойства:

Как использовать свойства блочной модели CSS

Давайте посмотрим на несколько примеров, где мы можем использовать свойства блочной модели CSS. Мы собираемся проанализировать сайт, показанный выше. ​

Давайте внимательнее посмотрим на навигационную панель (navbar). Вы можете заметить разницу между примером, в котором используется свойство padding, и примером, в котором его нет:

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеЭлементы навигационной панели, использующие свойство padding

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеРаздел содержимого, использующий свойство padding

Структура блочной модели CSS

Говоря о блочной модели, стоит воспринимать её как луковицу. И эта «луковица» имеет 4 слоя:

1 слой: Content

2 слой: Padding

3 слой: Border

4 слой: Margin

1 слой блочной модели: Content

В HTML все ведет себя как ящик с контентом. Давайте вставим контент с изображением котенка. ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеПервый слой

2 слой блочной модели: Padding

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеВторой слой

3 слой блочной модели: Border

4 слой блочной модели: Margin

Следующим и последним слоем блочной модели CSS является слой полей. Он обертывает наш контент + отступ + границу следующим образом

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеЧетвёртый слой

Итак, давайте посмотрим, как эти свойства работают в проекте.

Как настроить проект

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Это руководство подходит для всех, в том числе для новичков. Если вы хотите писать код, выполните следующие действия.

Откройте VS Code или Codepen.io и напишите этот код ​ внутри тега body:

Очистите стили нашего браузера по умолчанию ​

Теперь давайте стилизуем наш блок ​

Все готово, приступим к программированию! ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Свойство Padding

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

Обычно я использую отступы, чтобы оставить пространство между содержимым. Посмотрите на эту навигационную панель

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеЭлементы навигационной панели, использующие свойство padding

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижераздел содержимого с использованием свойства заполнения

Как использовать свойство padding в CSS

Ниже представлены названия четырех свойств заполнения:

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеСвойства padding

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеВторой слой

Чтобы воссоздать результаты, указанные выше, ​ напишите этот код в свой CSS: ​

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

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Давайте попробуем добавить отступ только к одной стороне нашего контента (только с правой стороны):

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижесвойство padding-right

Чтобы воссоздать результаты, указанные выше, ​ напишите этот код в свой CSS: ​

Теперь откройте вычисляемый раздел в консоли разработчика ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Свойство Border

Обычно вы будете использовать свойство border при создании кнопок. Вот демонстрация GIF ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеКнопки, использующие свойство Border

Обратите внимание, как появляется белая рамка вокруг кнопки, когда наводится указатель мыши на кнопку.

Как использовать свойство границы в CSS

Есть три важных параметра свойства границы:

border style: solid (сплошная линия) / dotted («точечная» линия) / dashed (пунктир)

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеСинтаксис свойства границы

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

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Чтобы воссоздать приведенные выше результаты, напишите этот код в своем CSS: ​

Откроем консоль и посмотрим расчеты блочной модели:

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Свойство Margin

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

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеДобавление отступов на сайт

Обратите внимание, что я добавил поля к левому и правому краям веб-сайта выше ​

Вот еще один пример использования свойства margin: ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеДобавление отступов на сайт

Как использовать свойство margin в CSS

Margin имеет всего четыре свойства поля:

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеСвойства margin

Давайте добавим отступ к нашему контенту. Весь наш набор смещается из-за margin, как в этом GIF:

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеСмещение

Чтобы воссоздать приведенные выше результаты, напишите этот код в своем CSS: ​

Можем еще раз проверить расчеты: ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Давайте попробуем добавить поле только к одной стороне нашего контента (только левой стороне):

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеСвойство margin-left

Чтобы воссоздать результаты выше, напишите этот код в своем CSS ​

На консоли мы видим, что поле в 50 пикселей применено только к левой стороне

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Свойство box-sizing

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

Примечание:

Мы не будем обсуждать padding-box, поскольку его поддерживает только Firefox, и он используется не очень часто.

В чем разница между content-box и border-box в CSS?

И border-box, и content-box работают одинаково. Посмотрите на эти изображения: ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеБлоки, использующие свойство border-box какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеБлоки, использующие свойство content-box

Итак, в чем здесь главное отличие? Разница заметна, когда мы добавляем поля, границу или отступы к нашим блокам.

Когда мы используем box-sizing: content-box, который является значением по умолчанию, он добавит поля, отступы и границы за пределами поля, например: ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеЗаполнение применяется стандартно

Вы также можете увидеть расчеты здесь: ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеРасчеты с content-box

Это означает, что все может выйти из-под контроля, и вы можете получить неожиданный результат. Это означает, что при таком подходе, будет сложно создавать адаптивные веб-сайты. Вместо этого всегда используйте свойство box-sizing: border-box.

Но когда мы используем свойство box-sizing: border-box, оно добавит поля, отступы и границы вовнутрь блока, например: ​

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде нижеПрименение вовнутрь блока

Заключение

Вот собственно и всё. Для желающих оставлю ссылку на видео-инструкцию к данному уроку от автора (Джоя Шахеба):

Источник

Блочная модель

Базовая компьютерная грамотность, установка базового ПО, базовые знания о работе с файлами, основы HTML (изучите Введение в HTML) и понимание работы CSS (изучите Введение в CSS.)

Узнать как работает блочная модель CSS, из чего она состоит и как переключиться на альтернативную модель.

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

В CSS мы, говоря упрощённо, имеем два типа элементов — блочные и строчные. Эти характеристики относятся к поведению блоков в контексте потока страницы и относительно других блоков на странице.

Если элемент определён как блочный, то он будет вести себя следующим образом:

Если не изменить намеренно тип отображения на строчный, то такие элементы, как заголовки (например,

, все используют block как свой внешний тип отображения по умолчанию.

Если элемент имеет тип отображения inline (строчный), то:

Экскурс: внутренний и внешний типы отображения

Здесь следует объяснить, что такое внутренние и внешние типы отображения. Как уже говорилось выше, каждый блок в CSS имеет внешний тип отображения, который определяет, блочный он или строчный.

Элементы также имеют внутренний тип отображения, который определяет расположение элементов внутри них. По умолчанию элементы внутри блока располагаются в нормальном потоке: они ведут себя так же, как и любые другие блочные или строчные элементы (как описано выше).

Примечание: Чтобы узнать больше о значениях display, и о том, как работают элементы при блочном или строчном расположении, посмотрите руководство MDN Блочное и срочное расположение (en-US).

Тем не менее, блочное и строчное расположение — это поведение web-элементов по умолчанию. Как было сказано выше, это иногда называют нормальным потоком (normal flow), потому что при отсутствии какой-либо другой инструкции элементы имеют блочное или строчное расположение.

Примеры разных типов отображения

Мы можем видеть, как строчные элементы ( inline ) ведут себя в следующем примере. Элементы в первом абзаце строчные по умолчанию и поэтому не приводят к переносу строки.

В примере вы можете заменить display: inline на display: block или display: inline-flex на display: flex для переключения между этими двумя режимами отображения.

Позже в этих уроках вы встретите такое понятие как flex-раскладка; главное, что нужно запомнить сейчас, это то, что изменение значения свойства display может изменить внешний тип отображения элемента на блочный или строчный, что меняет способ его отображения относительно других элементов в раскладке страницы.

В оставшейся части урока мы сосредоточимся на внешнем типе отображения.

Что такое блочная модель CSS?

Полностью блочная модель в CSS применяется к блочным элементам, строчные элементы используют не все свойства, определённые блочной моделью. Модель определяет, как разные части элемента — поля, рамки, отступы и содержимое — работают вместе, чтобы создать объект, который вы можете увидеть на странице. Дополнительная сложность заключается в том, что существуют стандартная и альтернативная блочные модели.

Составляющие элемента

Составляя блочный элемент в CSS мы имеем:

Рисунок ниже показывает эти слои:

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Стандартная блочная модель CSS

Пространство, занимаемое нашим объектом с использованием стандартной блочной модели, на самом деле будет равно 410px в ширину (350 + 25 + 25 + 5 + 5) и 210px в высоту (150 + 25 + 25 + 5 + 5), поскольку отступы и рамки добавляются к размерам поля содержимого.

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Примечание: Внешний отступ не считается в фактическом размере объекта. Конечно, он влияет на общее пространство, занимаемое объектом на странице, но только на внешнюю часть. Область элемента заканчивается на рамке — она не распространяется за нее.

Альтернативная блочная модель CSS

Вы можете подумать, что довольно неудобно добавлять рамки и отступы, чтобы получить реальный размер элемента, и окажетесь правы! По этой причине, спустя некоторое время после стандартной блочной модели, в CSS была введена альтернативная блочная модель. При использовании альтернативной модели любая ширина — это ширина видимой части элемента на странице, поэтому ширина области содержимого будет равна общей ширине минус ширина рамки и внутреннего отступа. Тот же CSS, который использовался выше, даст следующий результат (ширина = 350px, высота = 150px).

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Примечание: Интересный факт — Internet Explorer по умолчанию использовал альтернативную блочную модель без доступного механизма для переключения.

Играем с блочными моделями

Примечание: вы можете найти решение этой задачи здесь.

Использование инструментов разработчика в браузере для просмотра блочных моделей

Инструменты разработчика вашего браузера могут значительно облегчить понимание блочной модели. Если вы проверите элемент в инструментах разработчика Firefox, вы можете увидеть его размер, а также внешний и внутренний отступы и рамку. Проверка элемента таким способом — отличный способ выяснить, действительно ли размер вашего блока такой, какой вы думаете!

какая высота будет у блока описываемого в коде ниже. Смотреть фото какая высота будет у блока описываемого в коде ниже. Смотреть картинку какая высота будет у блока описываемого в коде ниже. Картинка про какая высота будет у блока описываемого в коде ниже. Фото какая высота будет у блока описываемого в коде ниже

Внешние, внутренние отступы и рамки

Давайте рассмотрим эти свойства более подробно.

Внешний отступ (margin)

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

В примере ниже, попробуйте изменить значение margin чтобы увидеть как блок смещается, создавая или удаляя пространство (если вводить отрицательные значения margin) между этим элементом и элементом его содержащим.

Схлопывание внешних отступов

Ключевой момент, который нужно понимать в отношении внешних отступов (margin), это концепция схлопывания. Если у вас есть два элемента, внешние отступы которых соприкасаются, и оба значения margin положительные, то эти значения будут объединены в одно, равное большему из двух значений. А если одно или оба значения отрицательны, то сумма отрицательных значений будет вычтена из общей суммы.

В примере ниже есть два абзаца. Первому абзацу задан margin-bottom 50 пикселей. У второго абзаца margin-top 30 пикселей. Отступы схлопываются так, что в результате margin между двумя блоками составляет 50 пикселей, а не сумму отдельных значений margin.

Существует ряд правил, которые определяют, когда внешние отступы схлопываются, а когда нет. Для получения подробной информации см. margin collapsing. Главное, что нужно сейчас помнить, — это то, что схлопывание отступов существует. Если вы создаёте пространство с внешними отступами и не получаете ожидаемого результата, вероятно, именно это и происходит.

Рамка

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

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

Для установки ширины, стиля или цвета всех рамок используйте:

Чтобы установить ширину, стиль или цвет для каждой рамки индивидуально, вы можете использовать следующие свойства:

В примере ниже мы использовали различные сокращённые и полные способы создания рамок. Поиграйте с различными свойствами, чтобы проверить, как вы поняли принципы их работы. Информацию о различных стилях, которые вы можете использовать, можно найти на страницах MDN о свойствах рамок.

Внутренний отступ (padding)

Внутренний отступ расположен между рамкой и областью контента блока. В отличии от внешних отступов (margin), вы не можете использовать отрицательные значения для padding: они должны быть положительными или равными 0. Любой применённый к вашим элементам фон будет отображаться под областью padding, поэтому внутренний отступ обычно используется, чтобы отодвинуть контент от рамок.

Блочная модель и строчные элементы

Использование display: inline-block

Элемент с display: inline-block применяет ряд свойств блочного элемента, о которых мы уже знаем:

Проверьте свои навыки!

В этой статье мы многое рассмотрели, но получится ли у вас вспомнить самую важную информацию? Вы можете пройти дополнительные тесты, чтобы убедиться, что вы всё усвоили, прежде чем двигаться дальше — см. Проверка своих навыков: блочная модель.

Заключение

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *