Есть ли базовый тип HTML Element (div, span), который является встроенным блоком? [Дубликат]

Необработанный тип - это имя общего класса или интерфейса без аргументов типа. Например, с учетом общего класса Box:

public class Box {
    public void set(T t) { /* ... */ }
    // ...
}

Чтобы создать параметризованный тип Box, вы указываете фактический аргумент типа для параметра формального типа T:

Box intBox = new Box<>();

Если аргумент фактического типа опущен, вы создаете необработанный тип Box:

Box rawBox = new Box();

. Поэтому Box является необработанным типом родового типа Box. Однако не общий тип или тип интерфейса не является сырым типом.

Необработанные типы отображаются в устаревшем коде, потому что многие классы API (например, классы Collections) не были типичными до JDK 5.0. При использовании сырых типов вы, по существу, получаете поведение перед генериками - Box дает вам Object s. Для обратной совместимости допускается присвоение параметризованного типа его необработанному типу:

Box stringBox = new Box<>();
Box rawBox = stringBox;               // OK

Но если вы назначаете сырой тип параметризованному типу, вы получите предупреждение:

Box rawBox = new Box();           // rawBox is a raw type of Box
Box intBox = rawBox;     // warning: unchecked conversion

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

Box stringBox = new Box<>();
Box rawBox = stringBox;
rawBox.set(8);  // warning: unchecked invocation to set(T)

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

В разделе «Тип стирания» содержится дополнительная информация о том, как компилятор Java использует необработанные типы.

Непроверенные сообщения об ошибках

As упомянутый ранее, при смешивании устаревшего кода с общим кодом вы можете столкнуться с предупреждающими сообщениями, подобными следующим:

Примечание: Example.java использует непроверенные или небезопасные операции.

Примечание. : Перекомпиляция с -Xlint: не проверяется для деталей.

blockquote>

Это может произойти при использовании более старого API, который работает с необработанными типами, как показано в следующем примере:

public class WarningDemo {
    public static void main(String[] args){
        Box bi;
        bi = createBox();
    }

    static Box createBox(){
        return new Box();
    }
}

Термин «непроверенный» означает, что компилятор не имеет достаточной информации о типе для выполнения всех проверок типа, необходимых для обеспечения безопасности типа. Предупреждение «unchecked» по умолчанию отключено, хотя компилятор дает подсказку. Чтобы просмотреть все «непроверенные» предупреждения, перекомпилируйте с помощью -Xlint: unchecked.

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

WarningDemo.java:4: warning: [unchecked] unchecked conversion
found   : Box
required: Box
        bi = createBox();
                      ^
1 warning

Чтобы полностью отключить unchecked warnings, используйте флаг -Xlint: -unchecked. Аннотации @SuppressWarnings("unchecked") подавляют непроверенные предупреждения. Если вы не знакомы с синтаксисом @SuppressWarnings, см. Аннотации.

Исходный источник: Учебники по Java

47
задан George Bailey 7 February 2014 в 01:41
поделиться

8 ответов

Из того, что я могу сказать, тег <img> по умолчанию является единственным inline-block. Чтобы быть в безопасности, я бы порекомендовал класс, вы никогда не знаете, когда меняются все элементы определенного типа, чтобы укусить вас. Или вы всегда можете создать свой собственный тег и назначить ему display:inline-block;. Таким образом, вы не меняете стандартные функции стандартных элементов ...

EDIT

Также появляется button, textarea, input и select inline-block

Источники:

В соответствии с этим img есть inline-block http://dev.w3.org/html5/markup/ img.html # img-display

И здесь утверждается, что button, textarea и т. д. также: http://www.w3.org/TR /CSS2/sample.html

EDIT # 2

Хотя источник выше утверждает, что img теги inline-block кажется (благодаря Alohci), что они являются только inline http://jsfiddle.net/AQ2yp/

В Firefox были протестированы следующие:

button есть inline-block : http://jsfiddle.net/GLS4P/

textarea is inline: http://jsfiddle.net/235vc/

input is inline: http://jsfiddle.net/RFKe8/

select is inline-block: http://jsfiddle.net/5B4Gs/

25
ответ дан Dryden Long 21 August 2018 в 03:01
поделиться
  • 1
    Почему это проголосовало? – Dryden Long 7 February 2014 в 00:07
  • 2
    Это показывает, насколько широко распространен миф о img, который был встроенным блоком. Тем не менее, это легко проверить. Просто используйте инспектор доминирования любого браузера на un CSS'd img, и вы увидите, что это отображение: inline. Или посмотрите эту скрипту JS: jsfiddle.net/AQ2yp – Alohci 7 February 2014 в 00:15
  • 3
    @Alohci Я думаю, вы правы, просто протестированы в Chrome, FF и IE, и все три появились как inline – Dryden Long 7 February 2014 в 00:18
  • 4
    @DrydenLong вы должны учитывать разницу в веб-браузерах – Guilherme Nascimento 7 February 2014 в 13:49
  • 5
    @DrydenLong, пожалуйста, ради ясности удалите неправильную информацию. – Jocelyn delalande 5 February 2017 в 22:26

Есть ли тот, который по умолчанию имеет значение inline-block?

Строго говоря, нет. Спецификации HTML W3 никогда не указывают значения свойств CSS по умолчанию для всех элементов any . Они предоставляют «таблицу стилей по умолчанию» для HTML 4, но разработчикам только рекомендуется использовать ее - это не требование или какой-либо мандат. Спецификации HTML 5 указывают на «типичные свойства отображения по умолчанию», но, опять же, они не требуются (также имейте в виду, что HTML 5 все равно работает рабочий проект ).

So который оставляет все значения по умолчанию до браузера и как разработчики на самом деле чувствуют элементы, должны отображаться пользователю. Никто не может гарантировать, что определенный элемент будет отображаться как inline-block или любым другим способом в чьем-то браузере. Вы должны всегда явно устанавливать это, если хотите, чтобы это произошло. Не полагайтесь на «defaults».

Если нет, какое специальное имя тега было бы подходящим для применения «встроенного блока» с помощью CSS? Или я должен придерживаться класса?

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

18
ответ дан animuson 21 August 2018 в 03:01
поделиться

Вы можете проверить мой codepen со всеми HTML-элементами и свойством display по умолчанию. Некоторые теги синтаксически нарушены, но это не имеет значения для нашей цели.

В настоящее время в FF есть [5]:

  1. <button>
  2. <select>
  3. <meter>
  4. <progress>
  5. <marquee>

И еще 2 (включая 5 выше) в Chrome:

  1. textarea
  2. input
2
ответ дан Avernikoz 21 August 2018 в 03:01
поделиться

ДА есть элемент, который по умолчанию имеет встроенный.

Ответ - это элемент span.

<span>
-5
ответ дан httpgio 21 August 2018 в 03:01
поделиться
  • 1
    ОП просил inline-block не inline – Dryden Long 7 February 2014 в 00:35
  • 2
    ахх этого не понимал. – httpgio 7 February 2014 в 00:36
  • 3
  • 4
    Кроме того, что это неправильная отображаемая ценность, это тоже бесполезно. Все элементы , которые иначе не имеют свойства отображения, установленные в таблице стилей по умолчанию браузера, будут отображаться в строке - это начальное значение для этого свойства. – animuson♦ 7 February 2014 в 21:06

button, textarea, input и select по умолчанию inline-block.

Если вы хотите inline-block a div, вы должны дать это имя класса.

.inline-block {
    display: inline-block
}

Затем ...

<div class="inline-block"></div>

КОРРЕКЦИЯ

Я ошибся в img. Кажется, он по умолчанию inline, а не inline-block

1
ответ дан jonsuh 21 August 2018 в 03:01
поделиться

В принципе, браузер зависит от того, какое значение по умолчанию для свойства display для каждого элемента. Даже черновики HTML5 не предписывают, какие значения должны использоваться, хотя он представляет «ожидаемый рендеринг» элементов с точки зрения CSS.

Согласно таблице стилей по умолчанию для HTML в CSS 2.1, элементы, которые по умолчанию имеют display: inline-block, - button, input, select и textarea. Браузеры используют такие настройки, за исключением того, что в Firefox это относится только к button и select.

В разделе Rendering HTML5 CR, meter и progress дополнительно описывается как наличие встроенного блока как «ожидаемого рендеринга», и браузеры, которые реализовали эти элементы, по-видимому, ведут себя таким образом. Элемент keygen также описывается как встроенный блок, но Firefox этого не делает (он реализовал keygen внутренне как select в DOM); IE не поддерживает keygen вообще; Chrome реализует его, как было предложено.

Поскольку все эти элементы имеют довольно специализированные значения, функциональность и рендеринг idiosyncracies, ни один из них не является адекватным для общего использования в качестве элемента, который является встроенным блоком по умолчанию и может иметь различные значения. То, что вы можете использовать для такого элемента, обычно span или div, в зависимости от того, предпочитаете ли вы встроенный или блок как рендеринг по умолчанию.

2
ответ дан Jukka K. Korpela 21 August 2018 в 03:01
поделиться

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

Fiddle

В chrome встроенный блок по умолчанию элементами являются: "INPUT", "BUTTON", "TEXTAREA", "SELECT"

6
ответ дан Preston S 21 August 2018 в 03:01
поделиться
  • 1
    Ницца, +1. В Firefox это только button и select. IE 11 имеет все 4 как inline-block – Dryden Long 7 February 2014 в 00:30

Это не настоящий ответ на вопрос прямо сейчас, но с достаточной поддержкой он может когда-нибудь быть.

<seg> short для «сегмента». Как и в, сегменты линии.

с полиполнением:

<style> seg { display: inline-block; } </style>

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

0
ответ дан Seph Reed 21 August 2018 в 03:01
поделиться