Что значит display block в css. Свойство CSS display (block, inline, none) — способы отображения HTML элементов на вэбстранице

display является наиболее важным стилевым свойством в CSS для управления шаблоном. Каждый элемент имеет значение отображения по умолчанию в зависимости от того, к какому типу относится данный элемент. Для большинства элементов, значения отображения по умолчанию, как правило, будут block или inline . В оригинале, блочный элемент часто еще называют элементом блочного уровня(block-level element).У строчного же элемента нет альтернативного названия.

block

div является стандартным блочным элементом. Блочные элементы начинаются с новой строки и их содержимое растягивается влево и вправо настолько, насколько это возможо. Другие распространенные блочные элементы это p и form , а также новые блочные элементы из HTML5, такие как header , footer , section , и прочие.

inline

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

none

Еще одно распространенное значение для отображения это none . Некоторые специализированные элементы, такие как script используют это значение по умолчанию. Оно широко используется с JavaScript, чтобы скрывать и показывать элементы вместо того, чтобы удалять и воссоздавать их снова.

Оно отличается от visibility . При задании свойству display значения none страница будет отображаться словно элемент не существует. visibility: hidden; просто скроет элемент, но элемент по прежнему будет продолжать занимать место, как если бы он был полностью виден.

другие display значения

Есть много более экзотичных стилевых значений для отображения, таких как list-item и table . Вот полный список . Позже мы обсудим inline-block и flex .

дополнение

Как я уже говорил, каждый элемент имеет тип отображения по умолчанию. Тем не менее, вы всегда можете переопределить это! Хотя это не имело бы смысла для того, чтобы сделать div строчным, вы можете использовать это, чтобы настроить отображение элементов с частной семантикой. Типичный пример – возможность выстраивания li элементов для горизонтального меню.

2 / 19

Свойство CSS Display нужен для установки типа html элемента относительно других элементов. Проще говоря это опция отвечает за то, как отображать элемент относительно других. Благодаря ему можно добиваться нужных "спецэффектов".

Синтаксис CSS Display

display : value ;

Где value может принимать значения:

  • block - блочный элемент (автоматически создает перевод строки)
  • inline - встроенный элемент (не создает перевода строки);
  • inline-block - производная от inline. Он также не создает перевода строки, но элементу можно задать ширину и высоту;
  • list-item - блочный элемент с маркером списка;
  • run-in - устанавливает элемент как блочный или встроенный в зависимости от контекста;
  • table - равносильно таблице (тег ), с переносом строки;
  • inline-table - производная от table. Элемент является встроенным, но соседние элементы его обтекают;
  • table-caption - создания заголовка таблицы (аналог тега
  • );
  • table-cell - создания элемента ячейки таблицы (аналог тега
  • );
  • table-column - элемент определяющий столбец таблицы;
  • table-row - элемент определяющий строку таблицы;
  • none - элемент не отображается на странице и все другие элементы ведут себя так, как будто его нет вообще;
  • inherit - наследование от элемента родителя;
  • Примечание
    По умолчанию все элементы являются строчными display :inline

    Примеры использования Display

    Пример №1. Использование display:block

    Как видите, строка перенеслась автоматически

    В примере добавлено свойство border:1px solid #000 чтобы показать, какую область занимает блочный элемент.

    Абзац №1. Рассматриваем элементы display. текст со свойством display:block Как видите, строка перенеслась автоматически

    Пример №2. Использование display:none

    Вот как это выглядит на странице:

    Абзац №1. Рассматриваем элементы display:none. текст со свойством display:none Как видите, блок с текстом none отсутствует

    Логично провести ассоциацию с атрибутом visibility: hidden , но в отличии от него, display:none не отводит места под объекты.

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

    Пример №3. Использование display:inline-block

    Как видите, блок с текстом none отсутствует

    Вот как это выглядит на странице:

    Абзац №1. Рассматриваем элементы. текст со свойством display:inline-block Как видите, блок вставлен прямо в контент

    Свойство display является одним из самых важных свойств CSS, которые используются верстальщиками для построения макета. Самыми популярными значениями этого свойства являются block , inline и none . Значения table и inline-block также довольно распространены. Но кроме этих значений есть еще масса других, которые можно и нужно использовать, и о которых вы, возможно, не знали. Поэтому, этот пост посвящен рассмотрению различных значений свойства display в CSS-стилях.

    Прежде чем мы поговорим о свойстве display , мы должны упомянуть «дерево блоков» (box tree).

    CSS берет исходный документ, организованный как дерево элементов и текстовых узлов, и отображает его на холст (например, экран монитора). Для этого он создает промежуточную структуру, дерево блоков , которая представляет собой структуру форматирования для готового (визуализированного) документа. Каждый блок в дереве блоков соответствует соответствующему элементу в пространстве и/или времени на холсте.

    Чтобы создать дерево блоков, CSS сначала использует каскадирование и наследование, чтобы назначить вычисленное значение для каждого свойства CSS каждому элементу в исходном дереве. Затем для каждого элемента CSS генерирует ноль или более блоков, как указано в свойстве display этого элемента. Другими словами, свойство display определяет тип отображения каждого блока в дереве блоков .

    Все элементы имеют значение display по умолчанию, но его можно переопределить, явно установив значение display на что-то другое. Значение по умолчанию в XML (а также для элементов SVG) является inline . А в HTML значения свойств display по умолчанию берутся из поведения, описанного в спецификациях HTML, или из таблицы стилей по умолчанию для браузера/пользователя.

    Основные значения свойства display в CSS

    Элемент генерирует «коробку» блочного уровня. Все элементы на этом уровне начинаются с новой строки (вертикально) и, если не указано иное, растягиваются до ширины своего контейнера. Элементы прилегают вплотную друг к другу, если для них не заданы отступы (margin).

    Удаляет элемент и его дочерние элементы из обычного потока документа. Документ отображается так, как будто этого элемента никогда не было, а занимаемое им место не резервируется. Считыватели экрана также игнорируют содержимое такого элемента.

    display: inline;

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

    display: list-item;

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

  • имеют значение по умолчанию для элемента списка (list-item). Значение обычно используется для возврата элементов
  • к их дефолтному поведению.

    display: inline-block;

    Элемент генерирует «коробку» блочного уровня, но весь блок ведет себя как встроенный (инлайновый) элемент. Т.е., он «обтекается» другими элементами веб-страницы.

    Табличный уровень

    Существует много значений display , которые позволяют элементам вести себя так же, как и HTML таблицы. В таблице ниже представлены значения «табличного уровня» и их краткое описание.

    table Соотносится с HTML элементом. Определяет «коробку» блочного уровня. HTML элементом. HTML элементом. HTML элементом. HTML элементом. HTML элементом. HTML элементом.
    table-header-group Соотносится с
    table-row Соотносится с
    table-cell Соотносится с HTML элементом.
    table-row-group Соотносится с
    table-footer-group Соотносится с
    table-column-group Соотносится с
    table-column Соотносится с
    table-caption Соотносится с
    HTML элементом.
    inline-table Это единственное значение, которое не имеет прямого сопоставления с HTML элементом. Элемент будет вести себя как элемент HTML таблицы, но как инлайновый блок, а не как элемент блочного уровня.

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

    Более современные значения

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

    А когда CSS ставал все более популярным, верстальщики перешли к плавающим макетам, размещая контент в разных плавающих div , чтобы добиться желаемого эффекта. Такая техника до сих пор очень распространена, но после появления flexbox (макета гибкой «коробки» в CSS), эта ситуация будет длиться все меньше. Когда макет гибкой «коробки» будет полностью поддерживаться всеми браузерами, гибкие макеты станут преобладающим методом верстки. Тем не менее, не все браузеры поддерживают спецификацию flexbox , и это сильно тормозит ее развитие.

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

    Объявляя display: flex; для элемента, он становится flex (гибким) контейнером, а его дочерние элементы становятся гибкими элементами этого контейнера. Свойства flex не распространяются на внуков этого элемента. Как гибкий контейнер, так и гибкие элементы имеют свои собственные гибкие свойства.

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

    Обратите внимание, что CSS-сетка официально не реализована ни в одном браузере. Чтобы поддерживать ее, браузерам нужно указывать префиксы поставщиков и устанавливать флаги.

    Экспериментальные значения (не должны использоваться в рабочем коде)

    display: run-in;

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

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

    Обратите внимание, что это значение поддерживается только в Internet Explorer 11 и Opera Mini.

    Элемент ведет себя как инлайновый и выдает свое содержимое в соответствии с моделью форматирования элемента HTML. Если вкратце, то это позволяет отображать аннотации рядом с базовой линией текста (обычно для помощи в произношении). Такая техника довольно распространена в китайском и японском языках.

    display: contents;

    Суть этого значения заключается в том, что когда вы его используете для элемента, он исчезает из DOM, но все его потомки остаются и занимают свое пространство. Эта спецификация на данный момент поддерживается только в Firefox >59, Chrome >65, Safari 11.1.

    Краткий итог

    Рассмотренный сегодня список значений свойства display действительно внушительный. Ведь развитие технологий обусловливает появление и новых методик, и новых подходов к решению различных задач в веб-дизайне. Хотя, с другой стороны, многие методики становятся морально устаревшими и теряют свою былую славу. Надеемся, что данная статья поможет вам идти в ногу со временем и позволит более эффективно решать задачи верстки.

    .

    А

    какой-то текст

    какой-то текст

  • если не задано значение width, элемент растягивается на весь родительский контейнер.

    какой-то текст

    какой-то текст

  • если задано значение width, ширина складывается из margin, border, padding, width (). Поэтому красная рамка выходит за пределы родительского блока при width: 100%.

    какой-то текст

    width: 100%;
    border: 4px double red;

    какой-то текст

  • если не задано значение height, элемент растягивается на высоту, необходимую содержимому блоку, иначе высота складывается из margin, border, padding, height.
  • при превышении указанной высоты/ширины содержимое отображается поверх блока, коли не указано иное с помощью свойства . В нашем случае красная рамка видна над голубой родительского блока.
  • Пример использования

    1. маленькая
    2. с длинным текстом
    Для того, чтобы вся строка была ссылкой
    Уберём ненужные отступы (padding, margin), маркер (list-style) и подчёркивание (text-decoration) и добавим рамку (border)

    display: inline;

    По умолчанию присвоен a, span, b, em и т.д.


    1. <span class="svetlyi">Аspan >

      какой-то текст прямоугольник А переносится на новую строку какой-то текст

    2. width и height игнорируются. Его ширина - это ширина содержимого плюс margin, border и padding.
    3. margin-top и margin-bottom игнорируются.
    4. совместно с padding-top и padding-bottom следует корректировать line-height, иначе строки будут "наезжать" друг на друга.

      какой-то текст прямоугольник А переносится на новую строку и наезжает на соседние строки из-за установленного значения padding какой-то текст

    5. не может иметь . Но при этом поддаётся его воздействию, если данное свойство задано родителю-блоку.
    Пример использования

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

    1. маленькая
    2. с длинным текстом

    display: inline-block;

    По умолчанию присвоен img, input и т.д. По отношению к внешним элементам ведёт себя как inline, а внутренним block.

    Пример использования

    1. маленькая

    display: list-item;

    По умолчанию присвоен li. Элемент показан как блочный с маркером списка. Вид маркера изменяет свойство . В примере выше маркер отсутствует, поскольку у li display отличный от list-item.

    display: run-in;

    Если после элемента с display в значении run-in следует блок, то он становится в одну строку с ним и является его частью. Иначе элемент вызывает разрыв строки. Не поддерживается Mozilla Firefox.

    А
    какой-то текст

    display: run-in;
    вторая строка

    какой-то текст

    display: table;

    По умолчанию присвоен table.

    1. на строку, на которой расположилась таблица, уже нельзя добавить другой элемент.
    2. если не задано значение width, элемент растягивается по длине содержимого, иначе ширина складывается из margin, border, padding, width. При превышении указанной высоты/ширины содержимое отображается поверх блока.

      какой-то текст

      width: auto;
      display: table;

      какой-то текст

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

    display: inline-table;

    Аналогичен display: inline-block.

    1. применимы свойства .

    display: table-row;

    По умолчанию присвоен tr. Объединяет группу ячеек, которые не будут перенесены на другую строку.

    1. на строку, на которой расположилась строка таблицы, уже нельзя добавить другой элемент.
    2. элемент растягивается по длине содержимого.
    3. width, border, padding, margin, vertical-align игнорируются.
    4. можно изменить значение height.
    5. не поддаются влиянию блоки, если у родителя , только их содержимое.

    display: table-cell;

    По умолчанию присвоен td и th. Я рассматриваю ситуацию, когда родитель имеет display: table-row.

    1. элементы следуют друг за другом.
    2. если не задано значение width, элемент растягивается по длине содержимого, иначе ширина складывается из border, padding, width. Но не более ширины контейнера и пропорционально всем длинам ячеек. Поэтому я советую, не задавать width для ячеек нижних строчек.
    3. высота всех ячеек в строке одинакова и составляет высоту самой высокой ячейки. Удобно при построении двух- и т.д. колоночных макетов, где требуются колонки одинаковой высоты.
    4. margin игнорируется. Это свойство заменяется border-spacing у родителя.
    5. на его содержимое можно воздействовать посредством и .
    111
    2
    33
    4
    55
    6

    Пример использования

    маленькая с длинным текстом в две строки
    цена цена

    display: table-caption (table-column, table-column-group, table-footer-group, table-header-group, table-row-group)

    По умолчанию присвоен caption (col, colgroup, tfoot, thead, tbody). Пока не вижу практической ценности.

    display: none;

    Элемент становится невидимым, не сохраняя занимаемое место.

    Пример использования

    1. маленькая
      1. подпункт1
      2. подпункт2
    2. с длинным текстом
    1. маленькая
      1. подпункт1
      2. подпункт2
    2. с длинным текстом
    1. маленькая
      1. подпункт1
      2. подпункт2 длинный
    2. с длинным текстом

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

    По сути, оно позволяет задавать и при необходимости менять способы отображения тех или иных элементов Html кода. С помощью него блочные элементы можно будет сделать строчными или даже списком, а также используя display:none можно реализовывать динамику на вебстранице, например, создавать выпадающие меню без использования скриптов на чистом CSS.

    Display block и inline — как блочный сделать строчным

    Как мы с вами уже узнали из курса по языку Html, на веб страницах формируются элементы с помощью тегов, которые в свою очередь обрабатывает парсер Html используемого вами браузера и отображает их на экране вашего компьютера. То, как будут выглядеть эти элементы (созданные на основе Html тегов), определяется в современной языком стилевой разметки CSS.

    Даже если вы никаких специальных стилей не задавали для каких-либо тегов, то они все равно будут отображаться браузером с учетом тех правил, которые были приняты для них по умолчанию. Где же можно посмотреть на эти самые CSS стили по умолчанию для всех Html тегов ? Ну, все в том же на этой странице . Если прокрутить ее оглавление до конца, то там вы увидите ссылку « », где и будет приведена нужная нам информация.

    К чему все это? Я уже неоднократно при описании тех или иных Html тегов акцентировал ваше внимание на том, к какому именно типу относится этот тег — строчный или же блочный . В зависимости от этого мы предполагали наличие определенного поведения у данных элементов — либо они будут стремиться занять все доступное им место по ширине (блочные), либо не будут (строчные).

    Но я так и не объяснил откуда берется такое разделение и где можно узнать к какому именно типу относится конкретный тег. Так вот, узнать это как раз можно на упомянутой нами странице спецификации CSS под названием «Default style sheet for HTML 4 » и отвечает за все это безобразие специальное правило Display.

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

    Здесь вы можете увидеть все те же теги , контейнеров и других блочных элементов. Если посмотреть на список CSS свойств и допустимых для них значений в валидаторе W3C, то для display мы увидим следующее:

    Если не указано другого, то по умолчанию будет использоваться вариант «display:inline» (т.к. именно это значение прописано в столбце «Initial value»), что будет соответствовать формированию строчных элементов. Поэтому в приведенной на странице спецификации «Default style sheet for HTML 4 » те теги, которые должны отображаться как строчные (например, span), вообще не описаны или для них не указано значение Дисплей, ибо по умолчанию они и так будут строчными.

    Правило Дисплей отвечает за то, как данный элемент надо строить и отображать браузеру. Оно говорит обозревателю, что из себя представляет тег и как его надо показывать. Имеется возможность показывать как элемент строки (display: inline) или как блок (block), показывать как таблицу (table) или как часть таблицы (inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption). Это правило очень важное.

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

    Давайте рассмотрим простой пример с тремя тэгами, один из которых по умолчанию будет строчным (span), а два других — блочными (H3 и P). Для большей наглядности я залил область отведенную для этих элементов :

    H3 по умолчанию будет отображать браузером как блочный

    Span - типичный пример строчного тега

    P - еще один по умолчанию блочный

    В результате браузер отобразил все элементы в полном соответствии с их умолчательными значениями правила Display:

    Как видите, первый блок H3 (с умолчательным значением block) занимает весь доступный ему размер по горизонтали (равно как и третий элемент P), ну а строчный Span (с умолчательным значением display:inline) занимает по ширине ровно столько места, сколько нужно для размещения заключенного в него контента.

    Ну, а теперь давайте из изначально блочного тега H3 сделаем строчный с помощью добавления к нему display inline (я уменьшил текст в первых двух элементах для получения большего эффекта наглядности):

    H3

    Span

    P - еще один по умолчанию блочный тэг

    Как вы можете видеть, браузер учел display:inline и теперь элемент заголовка H3 (изначально блочный) уже не занимает все доступное ему по ширине пространство, вследствие чего к нему вплотную оказался прижат следующий за ним строчный тэг Span.

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

    Точно так же можно из строчного тега Span сделать блочный с помощью добавления display:block:

    H3

    Span

    P - еще один по умолчанию блочный Html элемент

    И в результате наше наглядное пособие отобразит произошедшую :

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

    Display list-item — создание списков на основе блочных тегов

    А теперь давайте попробуем с помощью Дисплей сделать ряд блочных тегов элементами списка. С этим нам поможет справиться правило display:list-item . Пусть у нас изначально будут присутствовать несколько абзацев и заголовок:

    H3

    Первый абзац (тег P)

    Второй абзац

    Третий

    Которые будут выглядеть примерно так:

    Теперь, если мы добавим ко всем блочным тэгам абзаца CSS правило display:list-item, то браузер сгенерирует для всех этих элементов специальную область для маркера, в которых появятся эти самые маркеры используемые по умолчанию:

    H3

    Первый абзац (тег P)

    Второй абзац

    Третий

    Но в таком виде вы никаких изменений не заметите. Область маркера добавляется перед областью блочного тега и чтобы ее увидеть, нужно каким-либо образом отодвинуть этот блок слева от края контейнера, в котором он живет. Сделать это можно с помощью все того же , а именно прописав для нужных абзацев margin-left:20px (или заключив абзацы, например, в ) и тогда получим следующую картину:

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

    Удачи вам! До скорых встреч на страницах блога сайт

    посмотреть еще ролики можно перейдя на
    ");">

    Вам может быть интересно

    Float и clear в CSS - инструменты блочной верстки
    Position (absolute, relative и fixed) - способы позиционирования Html элементов в CSS (правила left, right, top и bottom)
    Позиционирование с помощью Z-index и CSS правило Cursor для изменения курсора мыши
    Height, width и overflow - CSS правила для описания области контента при блочной верстке
    CSS свойства text-decoration, vertical-align, text-align, text-indent для оформления текста в Html

    • Сергей Савенков

      какой то “куцый” обзор… как будто спешили куда то