Я где-то читал, что <img>
элемент ведет себя как оба. Если правильно, может кто-нибудь объяснить с примерами?
Я где-то читал, что <img>
элемент ведет себя как оба. Если правильно, может кто-нибудь объяснить с примерами?
Ответы:
Это правда, они оба - или, точнее, они являются элементами «встроенного блока». Это означает, что они текут как текст, но также имеют ширину и высоту, как блочные элементы.
В CSS вы можете установить элемент так, чтобы display: inline-block
он повторял поведение изображений *.
Изображения и объекты также известны как «замененные» элементы, так как они сами по себе не имеют содержимого, элемент по существу заменяется двоичными данными.
* Обратите внимание, что браузеры технически используют display: inline
(как видно из инструментов разработчика), но они уделяют особое внимание изображениям. Они все еще следуют всем чертам inline-block
.
img
элементы не являются, inline-block
но на самом деле inline
элементами. Вы можете проверить это в современном браузере, щелкнув правой кнопкой мыши на изображении, нажав «Проверить элемент», а затем просмотрев вычисленный стиль, который отобразится display: inline
. Внутри тега нет контекста блока, поэтому вызывать его некорректно inline-block
. Для получения дополнительной информации о замененных встроенных элементах см . Ответ Квентина и эту статью MDN .
img
элементы встроены - инструменты разработчика Google Chrome показывают img
элементы как встроенные. Этот пост - единственное место, которое я нашел до сих пор, где говорится, что они есть inline-block
. Интересно, что я не нашел ни одного авторитета, который бы сказал, что они inline
тоже. Может быть, как лечить тег зависит от реализации?
display:inline-block
.
img
Элемент является заменить встроенный элемент .
Он ведет себя как встроенный элемент (потому что он есть), но некоторые обобщения о встроенных элементах не применяются к img
элементам.
например
Обобщение: «Ширина не относится к встроенным элементам»
Что в действительности говорится в спецификации : «Применяется ко всем элементам, кроме незаменяемых встроенных элементов, строк таблицы и групп строк»
Поскольку изображение является замененным встроенным элементом, оно применяется.
Элементы IMG являются встроенными, что означает, что если они не плавают, они будут течь горизонтально с текстом и другими встроенными элементами.
Они являются «блочными» элементами в том смысле, что они имеют ширину и высоту. Но они ведут себя больше как «встроенный блок» в этом отношении.
Почти для всех целей думайте о них как о встроенном элементе с установленной шириной. По сути, вы можете сами определять, как изображения должны отображаться с помощью CSS. Я обычно устанавливаю несколько классов изображений примерно так:
img.center {display:block;margin:0 auto;}
img.left {float:left;margin-right:10px;}
img.right {float:right;margin-left:10px;}
img.border {border:1px solid #333;}
Это правда, они оба - или, точнее, они являются элементами «встроенного блока». Это означает, что они текут как текст, но также имеют ширину и высоту, как блочные элементы.