Display css table cell: Антигерой CSS-разметки — свойство «display: table» — журнал «Доктайп»

CSS свойство Display — все основные значения

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

Стандартное представление браузером большинства HTML-элементов включает стили шрифта, отступы, поля и, главным образом, типы отображения (display).

Главными типами отображения являются inline (встроенный), none (не показывать) и block-line (блок). Вы можете применять их, используя значения свойства display: inline, block и none.

inline действует так, как подсказывает его имя. Элементы, представленные с помощью inline всегда следуют потоку линии. Элементы strong (жирное начертание), emphasis (курсив) и anchor (якорь) обычно представлены инлайном на большинстве страниц.

block помещает разрыв строки над и под элементом. Элементы абзац и заголовок обычно отображаются в стиле block-line.

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

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

h2 {
	display: inline;
	font-size: 2em;
}
#header p {
	display: inline;
	font-size: 0.9em;
	padding-left: 2em;
}

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

#navigation, #seeAlso, #comments, #standards {
	display: none;
}

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

д., которые обычно избыточны при распечатке.

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

Например, если для второго из трех абзацев установить display: none, первый параграф приблизится вплотную к третьему. Если бы мы установили свойство visibility: hidden, то между первым и третьим абзацем осталось пустое пространство, где должен быть абзац.

Таблицы и свойства

Самый простой способ понять значения табличных свойств отображения, это рассматривать их в контексте HTML-таблиц. table – это базовое представление. Вы также можете представить элементы tr и td значениями свойств table-row и table-cell соответственно.

Свойство display дает вам еще больше возможностей и предлагает вам в качестве значений table-column, table-row-group, table-column-group, table-header-group, table-footer-group и table-caption. Я думаю, все эти значения говорят сами за себя. Что сразу приходит на ум – это преимущество конструирования таблиц колонками вместо метода, который применяется в HTML

В конечном счете значение inline-table фактически помещает вашу таблицу без разрывов строк сверху и снизу.

Если вы позволите себе увлечься CSS таблицами, доступность вашего сайта может серьезно пострадать. Цель HTML – передать значение. Следовательно, любые данные, которые должны быть представлены в табличном виде, лучше отображать при помощи значений HTML.

Если вы используете только CSS-таблицы, это можете привести к смешению информации, что недопустимо для людей с отсутствием CSS. Это неправильно.

Другие типы отображения

list-item говорит сам за себя. Работает практически идентично элементу li в HTML. Для корректного отображения, элементы должны быть вложены внутри элементов ul или ol.

run-in показывает элемент в строке или блоке. Это зависит от того, как показывается родительский элемент. Помните, что этот функционал недоступен в IE и браузерах на основе Mozilla.

compact также показывает элемент встроенным в линию или блок в зависимости от контекста. Он также не очень полезен…

marker используется только вместе с псевдоэлементами :before и :after, чтобы описать отображение значения свойства content. По умолчанию свойство content уже отображается как marker. Поэтому marker полезен тогда, когда вы пытаетесь переписать предыдущее свойство display для псевдоэлемента.

[ads-pc-1]
[ads-mob-1]

Оцени статью

Средняя оценка 0 / 5. Количество голосов: 0

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

Напишите комментарий, что можно добавить к статье, какой информации не хватает.

CSS свойство display

Определяет, как элемент должен быть показан в документе (тип его отображения)

CSS синтаксис

display: значение;

Возможные значения
ЗначениеОписание
inlineЭлемент отображается как встроенный (подобно <span>).
blockЭлемент отображается как блоковый (подобно <div>).
flexЭлемент отображается как flex-контейнер блочного уровня (гибкий контейнер). Может использоваться в создании гибкой верстки страницы по модели FlexBox. Добавлено в CSS3.
inline-blockГенерирует блочный элемент, который обтекается другими элементами веб-страницы подобно встроенному элементу. При этом его внутренняя часть форматируется как блочный элемент, а сам элемент — как встроенный.
inline-flexЭлемент отображается как flex-контейнер встроенного уровня (гибкий элемент). Может использоваться в создании гибкой верстки страницы по модели FlexBox. Добавлено в CSS3.
inline-tableОпределяет, что элемент является таблицей как при использовании тега <table>, но при этом таблица является встроенным элементом и обтекается другими элементами.
list-itemЭлемент ведет себя подобно элементу <li>.
run-inГенерирует либо встроенный, либо блочный элемент в зависимости от контекста.
tableЭлемент ведет себя подобно элементу <table>.
table-captionЭлемент ведет себя подобно элементу <caption>.
table-column-groupЭлемент ведет себя подобно элементу <colgroup>.
table-header-groupЭлемент ведет себя подобно элементу <thead>.
table-footer-groupЭлемент ведет себя подобно элементу <tfooter>.
table-row-groupЭлемент ведет себя подобно элементу <tbody>.
table-cellЭлемент ведет себя подобно элементу <td>.
table-columnЭлемент ведет себя подобно элементу <col>.
table-rowЭлемент ведет себя подобно элементу <tr>.
noneЭлемент не отображается (и не имеет никакого воздействия на верстку страницы).
inheritЗначение наследуется от родительского элемента.
initialУстанавливает значение по умолчанию.

Совместимость: Полностью поддерживаются всеми браузерами только значения block, inline, list-item и none. Значения inline-table, table, table-caption, table-cell, table-column, table-column-group, table-row и table-row-group не поддерживаются IE7 и более ранними версиями. В IE8 требуется декларация !DOCTYPE. IE9 поддерживает все значения. В Safari для значений flex и inline-flex требуется указывать префикс, например, «display: -webkit-flex» и «display: -webkit-inline-flex;«.

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

Отображаем параграф, как встроенный элемент

p.inline {
     display: inline;
}

html — Стилизация таблиц CSS, где используется display: table-row

спросил

3 года 11 месяцев назад

Изменено 3 года, 11 месяцев назад

Просмотрено 3к раз

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

 .table_row_line {
  граница: 2px сплошной темно-серый;
  ширина: 100%;
  высота: 100%;
  отступ: 5px;
} 
 <раздел>
  <заголовок>
    <дел>
    <дел>
    <дел>
  
  <дел>
    <дел>
    <дел>
    <дел>
  

Это никак не влияет на стиль.

Я попытался поместить заголовок в div, что позволит мне стилизовать его, но тогда он перестает вести себя как таблица, и первая строка заголовка перестает выравниваться с основным содержимым.

Как стилизовать эту таблицу css?

  • HTML
  • CSS
  • CSS-таблицы
3

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

Установить граница-коллапс: свернуть .

 раздел {
  граница коллапса: коллапс;
}

.table_row_line {
  граница: 2px сплошной темно-серый;
  ширина: 100%;
  высота: 100%;
  отступ: 5px;
} 
 <раздел>
  <заголовок>
    <дел>1
    <дел>2
    <дел>3
  
  <дел>
    <дел>4
    <дел>5
    <дел>6
  

(Также подумайте, действительно ли display: table является правильным подходом, и спросите, будет ли вам лучше использовать реальную таблицу или flexbox или сетку).

4

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

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

html — CSS: display:block; против дисплея: таблица;

спросил

Изменено 3 года, 5 месяцев назад

Просмотрено 30 тысяч раз

Есть ли разница между display:block; и дисплей:таблица; ? Мне кажется, что тип отображения dom-узла, содержащего узлов table-row и table-cell , не имеет значения. MDN говорит, что display:table; заставляет его вести себя как таблица, но не уточняет, что это за поведение. Что это за поведение?

Аналогично, есть ли разница между display:inline-block; Дисплей и : встроенная таблица; ?

  • HTML
  • CSS
  • html-таблица
0

Оба будут блочными, поскольку по умолчанию они не будут отображаться рядом с чем-либо еще.

Фактическое отображение элемента существенно отличается.

дисплей: блок; расширит до 100% доступного пространства, а display: table; будет иметь ширину, равную его содержимому.

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

Я знаю это только потому, что столкнулся с проблемой при попытке получить display: table; , чтобы заполнить ширину контейнера. Я не смог увидеть, есть ли разница в отображении display: inline; Дисплей и : встроенная таблица; .

https://jsfiddle.net/nnbonhc6/

1

Сравнивая их (блок и таблицу), я не знаю каких-либо основных отличий (могут быть незначительные), которые можно было бы увидеть в вакууме. Я считаю, что основные различия касаются именно детей. Таблицы и их дочерние элементы имеют очень разные атрибуты/отношения, чем div и его дочерние элементы.

Что касается встроенного блока и встроенной таблицы, см. В чем разница между встроенным блоком и встроенной таблицей?

В этой статье (http://css-tricks.com/almanac/properties/d/display/) есть некоторая интересная информация, особенно касающаяся всех различных свойств отображения, связанных с таблицей.

2

Я исследовал это сегодня и нашел этот раздел спецификации CSS полезным: http://www.w3.org/TR/CSS21/tables.html#model

В частности,

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

Насколько я понимаю, это по существу означает, что браузер генерирует невидимый блок-контейнер для чего-либо с отображением : table !

1

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

Таким образом, вы можете получить коробку, размер которой изменяется вместе с вашим содержимым, но остается в своей «линии»

есть еще одно различие, которое я нашел между display:block и display:table в том, что когда у любого из них есть position:fixed , top:0 , слева:0 , справа:0 , bottom:0 , overflow:auto , если содержимое превышает область просмотра,

display:block покажет полосу прокрутки, а display:table не будет

2

Одним из основных преимуществ использования display: table вместо display: block в родительском элементе является то, что вы можете безопасно использовать display: inline-block в дочерних элементах, не беспокоясь о пробелах. между детьми.

В противном случае вам придется избавиться от этого лишнего пробела, используя html-комментарии между закрывающими/открывающими тегами (например, с несколькими элементами

  • для типичной горизонтальной навигации) или поместив все в строку в вашем коде без возврата несущей (что является кошмаром редактирования).

    1

    Недавно я нашел еще один пример различия между display: block

    и display: table

    Я беру шаблон письма из лакмуса:

     
          <тд>
            <таблица>
              
                <тд>
                   
    Свяжитесь с нами:
    <таблица> <тд> Фейсбук
    <таблица> <тд> Твиттер
    <таблица> <тд> Google+ <тд> <тд> <таблица> <тд>
    Контактная информация:

    Телефон: 408 341 0600

    Электронная почта: com">[email protected]

    <тд>

    с дисплеем : заблокировать !важно; в таблице нижнего колонтитула, выглядит так:

    с дисплеем : таблица !важно; в таблице футера, выглядит так:

    Снимок сделан почтовым приложением на iOS 10.0.1.

    1

    Дополнительно: в теме WordPress со сложным CSS, в котором были конфликтующие эффекты в области специального класса, я просто не мог центрировать эту область из-за конфликтов CSS. В конце концов, единственным способом центрировать эту часть было переключить ее с display: inline-block на display:table, и тогда, наконец, она приняла правила центрирования, будь то text-align или margin:0 auto.

    Я не утверждаю, что мой случай является статистически значимым, просто предоставляю отзыв из личного опыта на случай, если другие люди, находящиеся в похожем положении, наткнутся на эту страницу после поиска в Интернете 🙂

    По сути, display:inline-block позволяет размещать элементы друг над другом другие без каких-либо медиа-запросов.

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

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