Is < img > уровень блока элементов или встроенный уровень?

Мой ответ похож на другой, но, надеюсь, более ясен.

List<List<?>> is a list of (lists of anything).

List<List<String>> is a list of (lists of strings).

Последнее не может быть преобразовано в первое, потому что это позволит вам добавить список & lt; Number & gt; в ваш список & lt; List & lt; String & gt; & gt ;, который будет явно нарушен.

Обратите внимание, что правила для этого не изменяются, если вы заменяете List некоторым типом, который не имеет .add. Для Java понадобится ковариация сайта-адресата и / или контравариантность (например, C # IEnumerable & lt; out T & gt; или Scala's List [+ A]). Java имеет только ковариацию и контравариантность сайта (? Расширяет X,? Супер X).

145
задан Stickers 9 July 2015 в 19:51
поделиться

4 ответа

Это правда, они оба - или, точнее, они являются элементами «встроенного блока». Это означает, что они располагаются внутри строки, как текст, но также имеют ширину и высоту, как блочные элементы.

В CSS вы можете установить элемент на display: inline-block , чтобы он воспроизводил поведение изображений *.

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

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

176
ответ дан 23 November 2019 в 22:31
поделиться

Элемент img является замененным inline-элементом.

Он ведет себя как инлайн-элемент (потому что он им является), но некоторые обобщения о инлайн-элементах не применимы к элементам img.

например,

Обобщение: "Ширина не применяется к инлайн-элементам"

Что на самом деле сказано в спецификации: "Применяется ко всем элементам, кроме незамещенных инлайн-элементов, строк таблицы и групп строк"

Поскольку изображение является заменяемым инлайн-элементом, оно применяется.

46
ответ дан 23 November 2019 в 22:31
поделиться

Практически для всех целей воспринимайте их как встроенные элементы с установленной шириной. По сути, вы можете диктовать, как вы хотите, чтобы изображения отображались с помощью 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;}
6
ответ дан 23 November 2019 в 22:31
поделиться

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

Они являются "блочными" элементами, поскольку имеют ширину и высоту. Но в этом отношении они ведут себя скорее как "inline-block".

12
ответ дан 23 November 2019 в 22:31
поделиться