HTML атрибут с / без кавычек

есть ли разница между

<iframe src="www.example.com" width=100%></iframe>

и

<iframe src="www.example.com" width="100%"></iframe>

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

6 ответов


речь идет об истинной действительности разметки HTML. Это то, для чего работает W3C (WWW Consortium). Многие вещи могут работать в HTML, но они должны быть проверены, чтобы быть более тщательно распознаны веб-браузером. Вы даже можете опустить <html> и </html> теги в начале и конце, но это не рекомендуется вообще, никто этого не делает, и это считается "плохим кодом".

поэтому правильнее поместить их в кавычки.


нет никакой практической разницы, кроме

  1. если вы проверяете свою страницу, кавычки могут быть или не быть необходимо избегать сообщений об ошибках, в зависимости от используемого doctype
  2. если вы обслуживаете страницу с типом контента XML для браузеров (которые редко и редко полезно), то котировки обязательны-в противном случае страница не отображается вообще, просто сообщение об ошибке
  3. если страница иначе обрабатывается с помощью инструментов XML, кавычки необходимый.

в противном случае кавычки действительно необходимы, только если значение атрибута содержит пробел, разрыв строки, кавычку Ascii ("), Апостроф Ascii ('), серьезный акцент (`), знак равенства (=), меньше знака ( ). Так что style = width:20em будет работать (хотя это может показаться несколько неясным), тогда как style = width: 20em не будет-из-за пространства, вам нужно будет написать style = "width: 20em".

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

совершенно независимо от этого, src="www.example.com" означает относительную ссылку URL, а не то, что люди ожидают иметь в виду. Ты наверное имел ввиду src="http://www.example.com".


по словам W3C по существует четыре типа синтаксиса атрибутов:

  1. пустой синтаксис атрибута
  2. unquoted attribute-value синтаксис
  3. single-quoted attribute-value синтаксис
  4. синтаксис значения атрибута с двойными кавычками

Они действительно относятся к HTML5, однако при обращении к W3C по говорит, что кавычки (single или double) требуются на основе doctype (например, строгий, переходный и т. д.) используемый.


Это из Google-лучшие практики - " минимизировать размер полезной нагрузки" https://developers.google.com/speed/docs/best-practices/payload (мой акцент)

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


синтаксис значения атрибута без кавычек

атрибут name, за которым следует ноль или более пробельных символов, затем одиночный U+003d с знак равенства символов, за которыми следует ноль или более пробельных символов, затем значение атрибута, который, в дополнение к требованиям, указанным выше для значений атрибутов, не должны содержать ни пробелов, ни от U+0022 символы кавычек ("), от U+0027, Апостроф символы ( ' ) или U+003d с знак равенства символов (=), U + 003C меньше, чем знаковые символы ( ), или U+0060 серьезные акцентные символы ( ` ) и не должны быть пустой строкой.

- спецификация HTML5 W3-sec 8.1.2.3. Атрибуты


нет, оба одинаковы..

в HTML 5 кавычки вокруг атрибутов просто необязательно.

но я чувствую, что лучше заключить их в кавычки..