CSS Display block inline и сравнение блочных и строчных элементов.
Свойство DISPLAY меняет поведение элемента на странице в зависимости от того, какое ему значение задаем. Значений много, но на ПРАКТИКЕ применяются ВСЕГО пять: block, inline, inline-block, none, flex;
display:none
Начнем с самого простого: display:none — убирает элемент из верстки, то как будто мы его удалили или закомментировали. Не стоит путать с visibility:hidden и opacity:0; — они делают элемент полностью прозрачным, но не убирают его, то есть его место остается не занятым, поскольку другие элементы думают что он есть, а при display:none они займут его место.
display:flex
Flex — относительно новое значение, по сути, элемент ведет себя как блочный, но вся суть в том, как ведут себя элементы внутри него. Это довольная обширная тема, об этом будет несколько уроков чуть дальше.
display:block
Блочный элемент — применяется для создания структуры сайта или его элементов. Типичный и наиболее распростаненный представитель — DIV. То есть блочный элемент —
это обычный прямоугольник, но в отличие от строчного он изначально принимает всю доступную ширину, а высота — в зависимости от количества контента в нем. если в нем ничего нет, то высота =0.
Если с помощью height задать ему размеры, например, 50px, то он их примет, в независимости от контента, и не важно контента больше или меньше. Аналогично с шириной.
К блочным относятся: DIV, h2-H6, P, header, footer, section и другие
display:inline
Строчные элементы — в подавляющем большинстве случаев применяются для форматирования текста, например, сделать полужирным, наклонным, поменять цвет, подчеркивание итд. Типичным строчным элементов является span, который сам по себе ничего не делает, но с помощью стилей можно поменять текст внутри него, например, сделать полужирным или наклонным, то есть без использования b и i.
К строчным относятся: span, i, em, a, b, strong и другие
display:inline-block
Блочно-строчные все таки ближе по поведению к строчным, но в отличие от строчных они изначально имеют определенную высоту и ширину, но встраиваются в текст,
например, вставленные смайлики внутри текста, если они по высоте меньше или равны высоте букв, то вы и не заметите особой разницы, а вот если вставить блочный элемент
внутри текста, то увидите как все сильно поменяется.
К блочно-строчным относятся: IMG, input, select и другие. Важно! В документациях часто противоречивая информация, поэтому проверяйте все на практике:
https://jsfiddle.net/ybdagzn7/
Также в документациях бывает только разделение на два вида: блочные и строчные, а все блочно-строчные хаотично разбросаны в одну из категорий, но чаще к строчным.
Сравнительная таблица блочных и строчных элементов
block | inline-block | inline | |
---|---|---|---|
Ширина width по умолчанию |
Занимает всю доступную ширину, то есть 100%. | Занимает ширину по количеству контента | Занимает ширину по количеству контента |
width=500px | принимает | принимает | проигнорирует |
height | по количеству контента | по количеству контента | по количеству контента |
внутренний отступ = padding | принимает | принимает | применяется, но на соседние элементы не влияет. |
margin | принимает | принимает | применяется только справа и слева, влияние на соседей оказывает |
Более подробно про отличия: https://html5book.ru/block-inline-elements/ и тут https://webref.ru/layout/howtocodeinhtml/chapter10
Пред. урок След. урок
html — отображение: дополнительное поле встроенного блока
спросил
Изменено 1 год, 9 месяцев назад
Просмотрено 160 тысяч раз
На этот вопрос уже есть ответы здесь :
Как убрать пробел между элементами inline/inline-block? (41 ответ)
Закрыта 7 лет назад.
Я работаю с несколькими div
s, которые настроены на display: inline-block
и имеют высоту
и ширину
. В HTML, если после каждого div
есть разрыв строки, справа и внизу div автоматически добавляется поле в 5 пикселей.
Пример:
Некоторый текстНекоторый текст
Есть ли свойство, которое я упустил из виду, которое позволит мне сбросить автоматическую маржу?
Обновление
Из того, что я обнаружил, нет способа удалить поля… за исключением случаев, когда все находится в одной строке, или если вы добавляете комментарии, чтобы закомментировать разрывы строк. пример:
Некоторый текстНекоторый текст
Не лучшее решение, но все же легче читать, если у вас несколько строк.
- html
- css
- xhtml
5
Пробел влияет на строчные элементы .
Это не должно вызывать удивления. Мы видим это каждый день с элементами span, strong и другими строчными элементами. Установите размер шрифта на ноль, чтобы удалить лишнее поле.
.контейнер { размер шрифта: 0px; межбуквенный интервал: 0px; интервал между словами: 0px; } .контейнер > раздел { отображение: встроенный блок; поле: 0px; отступ: 0px; размер шрифта: 15px; межбуквенный интервал: 1em; интервал между словами: 2em; }
Тогда пример будет выглядеть так.
<дел>ПервыйВторой
Версия этого jsfiddle. http://jsfiddle.net/QtDGJ/1/
7
Элементы div рассматриваются как встроенные элементы. Точно так же, как пробел или разрыв строки между двумя интервалами создает разрыв, он создает разрыв между встроенными блоками. Вы можете либо дать им отрицательную маржу, либо установить межсловный интервал: -1;
на окружающем контейнере.
12
Год спустя я наткнулся на этот вопрос для встроенной проблемы LI
, но нашел отличное решение, которое может применяться здесь.
CSS display: inline-block: why it rocks, and why it sucks
vertical-align:bottom
на всех моих Элементы LI
исправили мою проблему с «лишним полем» во всех браузерах.
10
размер шрифта: 0
в родительский контейнер
(Источник: https://twitter.com/garand/status/183253526313566208)
5
Более чистый способ удалить эти пробелы — использовать float: left;
:
HTML:
Некоторый текстНекоторый текст
CSS:
раздел { цвет фона: красный; плыть налево; }
Поддерживается во всех новых браузерах. Никогда не понимал, почему тогда, когда IE правил, многие разработчики не заставляли судиться, что их сайт хорошо работает на firefox/chrome, но сегодня, когда IE упал до 14,3%. в любом случае, не было много проблем в IE-9, даже если он не поддерживается, например, приведенная выше демонстрация работает нормально.
4
Вы можете получить вертикальное пространство, даже если у вас НЕТ ПРОБЕЛА между элементами встроенного блока.
Для меня это было вызвано высотой строки
. Простое исправление:
div.container { высота строки: 0; } div.контейнер > * { высота строки: нормальная; }
Для справки, этот сброс полей и отступов не помог мне, но эта цитата из одного из комментариев выше оказалась решающей и решила проблему для меня: «Если я поместил div в один и тот же линия, это поле исчезает.»
0
Существует ряд обходных путей для этой проблемы, которые включают расстояние между словами или размер шрифта, но в этой статье предлагается удалить поле с правым полем -4px;
http://designshack. net/articles/css/whats-the-deal-with-display-inline-block/
Много раз мучаясь с этой проблемой, я нашел очень элегантное решение в HTML 5. В HTML 5 нельзя закрывать несколько тегов (li,p и т.д.); стремление стать XML ушло навсегда. Например, предпочтительный способ сделать список:
<ул>
Браузеры ДОЛЖНЫ закрыть LI, и они должны сделать это без пробелов, решая эту проблему. Если у вас все еще есть XML-мышление, это кажется неправильным, но как только вы справитесь с этим, это избавит вас от многих кошмаров. И это не взлом, поскольку он основан на формулировке спецификации HTML 5. Лучше, поскольку не закрывающие теги широко распространены, я не ожидаю проблем с совместимостью (хотя и не тестировался). Бонусом является то, что средства форматирования HTML хорошо с этим справляются.
Немного проработанный пример: http://cssdesk.com/Ls7fK
1
Можете ли вы опубликовать ссылку на рассматриваемый HTML-код?
В конечном итоге вы должны сделать:
div { маржа: 0; заполнение: 0; }
для удаления интервала. Это только в одном конкретном браузере или во всех?
3
Другим решением этой проблемы является использование минификатора HTML. Это лучше всего работает с процессом сборки Grunt, где HTML можно минимизировать на лету.
Удалены лишние разрывы строк и пробелы, что аккуратно решает проблему полей и позволяет вам писать разметку в IDE так, как вам нравится (нет
Столкнулся с такой же проблемой.
Причиной этого для меня была куча пробелов (
), которые я вставил.
После их удаления проблема решилась.
Очень активный вопрос . Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.
Примеры Display Block и Inline-Block
TL;DR — Свойство CSS display управляет способом представления HTML-элементов на веб-страницах.
Содержание
- 1. Встроенные и блочные элементы
- 2. Использование свойства отображения
- 2.1. встроенный
- 2.2. блок
- 2.3. inline-block
- 3. Скрытие элементов: отображение или видимость
Встроенные и блочные элементы
Элементы HTML делятся на две основные категории : блочные и встроенные элементы.
Блочные элементы (
,
и т. д.) всегда максимально растянуты в стороны и начинаются с новой строки.
Элемент
Встроенные элементы (, , и т. д.) занимают только необходимое пространство. Они не должны начинаться с новой строки.
Использование дисплея Свойство
Используя свойство CSS display
, вы можете вручную указать, какой тип контейнера должен использовать элемент:
Пример
p. inline { дисплей: встроенный; /*делает элемент, который по умолчанию является элементом уровня блока, отображается как встроенный элемент, если ему присвоен класс "inline".*/ }
Попробуйте вживую. Учитесь на Udacity
Синтаксис довольно интуитивен:
display: value;
В таблице ниже вы можете увидеть все доступные значения. Три наиболее распространенных из них будут обсуждаться отдельно в следующих разделах.
Значения свойств
Значение | Описание |
---|---|
нет | Элемент не отображается |
рядный | Элемент остается на той же строке и занимает только ширину своего содержимого |
блок | Элемент начинается с новой строки и занимает всю доступную ширину |
встроенный блок | Элемент отображается как встроенный элемент, но может быть оформлен как элемент уровня блока |
стол | Элемент отображается как элемент табличного типа |
гибкий | Элемент отображается как гибкий элемент уровня блока |
встроенный гибкий | Элемент отображается как встроенный гибкий элемент |
встроенный стол | Элемент отображается как встроенный элемент таблицы |
обкатка | Элемент отображается как первый встроенный дочерний элемент блочного элемента |
встроенный
Вот несколько характеристик элементов, установленных на display: inline
:
- Элементы занимают только необходимое пространство .
- Они также появляются рядом друг с другом на та же строка .
- Одним из недостатков является то, что вы не можете управлять свойствами встроенных элементов.
- Отображение
: встроенный
игнорирует настройкиpadding
иmargin
. - Может иметь только встроенных элементов.
В этом примере показано, как несколько элементов
появляются в одной и той же строке :
Пример
Я один элемент. Я второй элемент. Я третий элемент. Мы все в одной строке!
Попробуйте в прямом эфире. Учитесь на Udacity
Также можно сделать так, чтобы блочных элементов отображались в одной строке, установив отображение : inline
. В этом примере переопределяются настройки по умолчанию для маркеров
Пример
li { дисплей: встроенный; }
Попробуйте живое обучение на Udacity
С этим элементом происходит то же переопределение настроек по умолчанию:
Пример
span { дисплей: блок; }
Попробуйте Live Learn на Udacity
Pros
- Упрощенный дизайн (без лишней информации)
- Качественные курсы (даже бесплатные)
- Variety of features
Main Features
- Nanodegree programs
- Suitable for enterprises
- Paid certificates of completion
EXCLUSIVE: 75% OFF
Pros
- Easy to navigate
- No технические вопросы
- Кажется, заботятся о своих пользователях
Основные характеристики
- Большое разнообразие курсов
- 30-дневная политика возврата
- Бесплатные сертификаты о завершении
AS AS 12,99 $
Pros
- Отличный пользовательский опыт
- Предлагает качественное содержимое
- Очень прозрачные с их ценами
487777787878 8. Секретирование Free Seartic завершение
75% СКИДКА
блок
Вот характеристики блок элементов:
- Элементы занимают максимально возможную ширину .
- Каждый элемент блока появляется в новой строке .
- Элементы реагируют со свойствами на
, ширину
и, высоту
. Элементы - могут содержать как встроенных , так и блочных элементов.
Пример
Я один элемент.Я второй элемент.Я третий элемент.Мы все в отдельных строках!Попробуйте вживую. Учитесь на Udacity
встроенный блок
Отображение CSS
: встроенный блок
представляет собой комбинацию функций встроенного и блочного уровня . Основное отличие от заключается в том, чтовстроенный блок
отвечает свойствамwidth
иheight
.Пример
раздел { отображение: встроенный блок; высота: 100 пикселей; ширина: 100 пикселей; фон: красный; белый цвет; отступ: 6px; поле: 3px; }Попробуйте Live Learn на Udacity
Эта функция делает CSS
display: inline-block
более подходящим для создания макетов. Одним из наиболее популярных способов использования встроенных блочных элементов является создание горизонтальных навигационных меню.Вот еще один пример использования отображения
: встроенный блок
:Пример
.float-box { отображение: встроенный блок; ширина: 200 пикселей; высота: 100 пикселей; поле: 20 пикселей; граница: 5px сплошной черный цвет; }Попробуйте в прямом эфире Узнайте на Udacity
Скрытие элементов: отображение или видимость
Существует разница в использовании
видимости: скрыто
иотображение: нет
.