Какой браузер из представленных корректно без багов поддерживает все значения свойства display

Обновлено: 07.07.2024

Определите, что будет выведено в окно браузера после обработки следующего кода:

(CSS2.1 - CSS3, HTML 5)

Тема/шкала: Кроссбраузерность, различия в трактовке CSS между браузерами (IE , Opera, Mozilla/Firefox) Какие из перечисленных способов задания прозрачности для элемента сработают для IE 9.0+? Тема/шкала: Кроссбраузерность, различия в трактовке CSS между браузерами (IE , Opera, Mozilla/Firefox) Какой браузер из представленных корректно(без багов) поддерживает все значения свойства display? Тема/шкала: Позиционирование и работа со слоями

Каким будет порядок расположения слоев после обработки браузером следующего кода?

(CSS2.1 - CSS3, HTML 5)

?) Оба слоя видны полностью; на первой строке слой First, на второй - Second ?) Слой First расположен в верхнем левом углу; слой Second перекрывает его частично ?) Оба слоя невидимы, так как расположены за границей экрана ?) Слой First расположен в левом верхнем углу страницы, а Second – в правом верхнем ?) Слой Second расположен в верхнем левом углу; слой First перекрывает его частично

Как можно корректно заменить универсальным свойством background следующий стиль (то есть оптимизировать данный фрагмент кода)?

(CSS2.1 - CSS3, HTML 5)

Укажите неверные значения свойств word-spacing и letter-spacing. Тема/шкала: Работа с блочными элементами

Каким будет положение двух блоков текста "box1" и "box2" после обработки браузером следующего кода?

(CSS2.1 - CSS3, HTML 5)

?) Оба блока находятся в центре родительского элемента ?) "box1" прижат к левой части родительского элемента , "box2" – к правой ?) "box1" прижат к правой части родительского элемента, "box2" – к левой В каких из представленных строк присутствуют некорректные значения свойства font-weight? Тема/шкала: Позиционирование и работа со слоями Какое значение из предложенных не может приобретать свойство position?

Необходимо указать цвет фона для ссылки при нажатии на нее.

Какой псевдокласс позволит решить поставленную задачу?

Тема/шкала: Синтаксис и базовые типы данных

Как работает следующая запись?

?) Селекторы a, li, ul приобретут идентичные свойства вне зависимости от вложений и позиционирования ?) Селектор "а" приобретет данное свойство только когда он будет последовательно вложен в расположенные слева от него селекторы,
в указанном порядке, но необязательно подряд ?) div.menu приобретет указанное свойство лишь тогда, когда он находится внутри конструкции <ul> <li><a. ></li> </ul> ?) Селектор "a" приобретет свойство , описанное в таблице стилей лишь в том случае, когда он будет находится
внутри конструкции <div > <ul> <li>. </li> </ul> </div> ?) div.menu приобретет указанное свойство лишь тогда, когда внутрь него будет вложена конструкция <ul> <li><a. ></li> </ul>

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

Какие 2 значения НЕ являются верными для свойства background, заданного для логотипа?

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

Но после ухода IE7-, стало возможным использовать и другие значения тоже. Рассмотрим здесь весь список.

Значение none

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

Значение block

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

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

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

Значение inline

  • Элементы располагаются на той же строке, последовательно.
  • Ширина и высота элемента определяются по содержимому. Поменять их нельзя.

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

Если вы присмотритесь внимательно к примеру выше, то увидите, что между внутренними <span> и <a> есть пробел. Это потому, что он есть в HTML.

Если расположить элементы вплотную – его не будет:

Содержимое инлайн-элемента может переноситься на другую строку.

При этом каждая строка в смысле отображения является отдельным прямоугольником («line box»). Так что инлайн-элемент состоит из объединения прямоугольников, но в целом, в отличие от блока, прямоугольником не является.

Это проявляется, например, при назначении фона.

Например, три прямоугольника подряд:

Если инлайн-элемент граничит с блоком, то между ними обязательно будет перенос строки:

Значение inline-block

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

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

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

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

  • Элемент всегда прямоугольный.
  • Работают свойства width/height .

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

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

Как и в случае с инлайн-элементами, пробелы между блоками появляются из-за пробелов в HTML. Если элементы списка идут вплотную, например, генерируются в JavaScript – их не будет.

Значения table-*

Современные браузеры (IE8+) позволяют описывать таблицу любыми элементами, если поставить им соответствующие значения display .

Для таблицы целиком table , для строки – table-row , для ячейки – table-cell и т.д.

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

Это хорошо для семантической вёрстки и позволяет избавиться от лишних тегов.

С точки зрения современного CSS, обычные <table> , <tr> , <td> и т.д. – это просто элементы с предопределёнными значениями display :

Очень подробно об алгоритмах вычисления размеров и отображении таблиц рассказывает стандарт CSS 2.1 – Tables.

Вертикальное центрирование с table-cell

Внутри ячеек свойство vertical-align выравнивает содержимое по вертикали.

Это можно использовать для центрирования:

CSS не требует, чтобы вокруг table-cell была структура таблицы: table-row и т.п. Может быть просто такой одинокий DIV , это допустимо.

При этом он ведёт себя как ячейка TD , то есть подстраивается под размер содержимого и умеет вертикально центрировать его при помощи vertical-align .

Значения list-item, run-in и flex

У свойства display есть и другие значения. Они используются реже, поэтому посмотрим на них кратко:

Этот display по умолчанию используется для элементов списка. Он добавляет к блоку с содержимым ещё и блок с номером(значком) списка, который стилизуется стандартными списочными свойствами:

Если после run-in идёт block , то run-in становится его первым инлайн-элементом, то есть отображается в начале block .

Если ваш браузер поддерживает это значение, то в примере ниже h3 , благодаря display:run-in , окажется визуально внутри div :

Если же вы видите две строки, то ваш браузер НЕ поддерживает run-in .

Вот, для примера, правильный вариант отображения run-in , оформленный другим кодом:

Если этот вариант отличается от того, что вы видите выше – ваш браузер не поддерживает run-in . На момент написания этой статьи только IE поддерживал display:run-in .

Flexbox позволяет удобно управлять дочерними и родительскими элементами на странице, располагая их в необходимом порядке. Официальная спецификация находится здесь: CSS Flexible Box Layout Module

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

CSS проверка на поддержку

Долгое время проверить поддержку с помощью одного CSS было невозможно. Но в 2013 году Firefox, Chrome и Opera «объявили» о поддержки специальной директивы под названием @supports и её JavaScript аналога — функции CSS.supports() , про которую я буду писать ниже. С помощью этой директивы, можно проверить браузер на поддержку указанного CSS свойства.

Общий вид директивы


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

Если браузер поддерживает свойство display: flex , то он запустит свойства из директивы.


Ключевое слово not

С помощью ключевого слова not, можно осуществить проверку на отсутствие поддержки какого-либо свойства.

Если браузер не поддерживает display: flex , то он запустит свойства из директивы


Ключевое слово or

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

Если браузер поддерживает display: flex или display: -webkit-flex , то он запустит свойства из директивы


Ключевое слово and

Если указать ключевое слово and, то можно проверить поддержку браузером двух или более свойств сразу.

Если браузер поддерживает display: flex и display: -webkit-flex , то он запустит свойства из директивы


Множественные проверки и условия

Если браузер поддерживает display: flex или display: -webkit-flex , и flex-wrap: wrap , то он запустит свойства из директивы

Примечание: директива @supports достаточно новая и IE её не поддерживает.

JavaScript проверка на поддержку

Есть четыре варианта на поддержку браузером CSS свойства с помощью JavaScript, про которые я знаю.

    С помощью функции CSS.supports() , про которую я упоминал выше.

Технология работы функции почти не отличается от работы директивы. Отличие состоит в том, что функция CSS.supports() возвращает true , если свойство поддерживается, и false — если нет.

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

Если браузер поддерживает display: flex , то скрипт вернёт true .


Второй вариант требует передачи в качестве аргумента целой строки:

Если браузер поддерживает display: flex или display: -webkit-flex , и flex-wrap: wrap , то скрипт вернёт true .

Примечание: так же, как и директива @supports , эта функция новая и IE её не поддерживает.

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

В итоге у нас выходит следующая функция:


Или же можно обойтись без try. catch , если будем записывать свойства через cssText :


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


Преимущество данной функции в том, что она будет работать во многих браузер, в том числе старых. Я протестировал функцию в браузерах IE, Edge, старом Safari, Chrome, Opera.

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

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

На этом закончу статью. Я рассказал про все варианты проверки, про которые знал. Если вы знаете ещё варианты — пишите про них в комментариях.

css-display-values

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

В начале стоит сказать, что все значения сгруппированы по нескольким категориям:

  • глобальные значения – группа содержит общие значения;
  • display-outside – значения из этой группы определяют внешний тип отображения элемента;
  • display-inside - значения определяют внутренний тип отображения элемента;
  • display-listitem - значения показывают элемент в виде списка;
  • display-internal – группа содержит внутренние значения, которые можно применять к элементам;
  • display-box - группа содержит общие значения, которые можно применять к элементам;
  • display-legacy – значения из этой группы содержат в себе сразу несколько разных значений.

Итак, какие значения есть у свойства display? Они будут перечислены ниже по группам. Важно помнить, что в настоящее время следует указывать одно значение, хотя последние спецификации и позволяют сочетать некоторые значения, но это пока поддерживается не всеми браузерами. Будет приведен полный список возможных значений с описанием для тех значений, которые наиболее востребованы.

Группа глобальных значений:

Группа display-outside имеет следующие значения:

Группа display-inside имеет следующие значения:

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

Группа display-internal имеет следующие значения:

Группа display-box имеет следующие значения:

Группа display-legacy имеет следующие значения:

Также существуют значения, входящие сразу в две группы - display-outside и display-inside:

Как видно значений очень много, часть из них совсем новые. Очень часто используются значения none и block. Например, при помощи JavaScript можно управлять показом элемента - скрывать его или показывать при помощи этих двух значений. Также можно заметить частое использование значения table-cell для блоков, оно применяется для того, чтобы сделать вертикальное выравнивание в div при помощи другого свойства - vertical-align: middle. Важно понимать, что браузеры могут поддерживать не все значения свойства display. Наиболее поддерживаемые браузерами значения: block, inline, list-item, none. Поэтому прежде чем использовать данное свойство и выбранное значение, стоит протестировать работу значения во всех популярных браузерах.

Читайте также: