Пустой html тег: Пустые теги HTML — CodeRoad – Когда тег считается пустым?

Пустые теги HTML - CodeRoad

У меня есть много пустых тегов span и так далее в моем коде, из-за методов замены изображений CSS. Они вызывают предупреждение проверки HTML. Стоит ли мне беспокоиться?

Спасибо.

html validation

Поделиться Источник Chris J Allen     18 февраля 2009 в 12:38

7 Ответов



10

Я согласен с @Gumbo,, но наличие большого количества предупреждений, которые не имеют никакого значения, может скрыть те, на которые вам действительно нужно обратить внимание. Если вы можете поместить что-то в промежуток, который избавляется от предупреждения, но не нарушает ваш UI, вы должны хотя бы подумать об этом.

Поделиться tvanfosson     18 февраля 2009 в 12:53



9

Я сделал валидацию частью своего рабочего процесса, потому что она помогает мне быстро находить ошибки. И хотя я не считаю пустые элементы проблемой, это сводит на нет некоторую ценность использования валидатора, если мне приходится мысленно анализировать список предупреждений каждый раз и решать, является ли предупреждение важным или нет. Поэтому я стараюсь, чтобы мои страницы были свободны от ошибок и предупреждений, так что быстрый взгляд на значок HTML Validator в строке состояния Firefox меняется только тогда, когда возникает реальная проблема. С этой целью я сохраняю пустые элементы "unempty", вставляя пустой комментарий.

<span><!-- --></span>

(По крайней мере, это работает с аккуратным валидатором.)

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

Поделиться David Kolar     18 февраля 2009 в 16:13



8

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

Смотрите CSS Zen Garden , где вы можете увидеть примеры, такие как h2 spans с текстом, заменяемым в CSS изображениями.

Это позволит улучшить не только доступность вашего сайта, но и поисковую способность.

Поделиться Geoff     18 февраля 2009 в 13:00



2

Тег "empty" имеет очень специфическое определение в HTML:

<span/>

против

<span></span>

Первое не разрешено HTML 4.0 Strict DTD, поэтому должно быть помечено валидатором. Единственные теги, которые могут использовать прежний синтаксис, - это те, которые специально определены как "EMPTY" в DTD (например, <br> ).

Вторая форма является допустимой HTML и не помечается валидатором W3C .

Поэтому я должен предположить, что либо (1) Ваш валидатор сломан, либо (2) вы неправильно используете тег.

Поделиться kdgregory     18 февраля 2009 в 16:28



1

Предупреждение-это не ошибка. Это просто напоминание о том, что вы должны что-то улучшить.

Поделиться Gumbo     18 февраля 2009 в 12:40



1

Я полагаю, что если бы пропускная способность была проблемой, эти пустые теги можно было бы пересмотреть, чтобы посмотреть, сможете ли вы получить их от появления alogether.

Поделиться kevchadders     18 февраля 2009 в 12:55



0

Эрик Мейер также говорит, что эмпирические теги плохи, семантически.

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

Точно так же

if("value"==variable)

это лучше, чем

if(variable=="value")

Поделиться Hikari     09 января 2013 в 20:59


Похожие вопросы:


Пустые теги HTML

Есть ли способ иметь пустые теги HTML или, другими словами, теги, которые ничего не делают? Например, <p> превращает вложенный текст в абзац, <b> выделяет текст жирным шрифтом,...


Удалите пустые теги с помощью простого парсера HTML DOM

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


Как убрать пустые теги абзацев

Я создаю приложение Rails 5. В этом приложении я получаю данные html из WYSIWYG-формы. В содержании от формы я получаю много пустого теги, как я могу удалить все эти пустые теги абзацев? Вот что я...


Какие браузеры не поддерживают пустые теги?

Intellij linter бросает тебе Empty Tag -предупреждение: Сообщает пустые теги (например, скрипт), которые не работают в некоторых броузеры. Проверка работает в типах файлов html или jsp. Какие...


Добавьте символ в пустые теги html с c# и regex

Я хочу найти все пустые теги HTML в строке, например: <div></div> <span>test</span> <a></a> и добавьте пробел или символ ко всем пустым тегам в этой строке:...


Удалить все пустые теги HTML?

Я представляю себе функцию, которая, как я полагаю, будет использовать Regex, и она будет рекурсивной для таких экземпляров, как <p><strong></strong></p> , чтобы удалить все...


Как удалить пустые теги html (содержащие пробелы и / или их коды html)

Нужен regex для preg_replace. На этот вопрос не был дан ответ в another question, потому что не все теги, которые я хочу удалить, не пусты. Я должен не только удалить пустые теги из структуры HTML,...


Удалите пустые теги <p></p> из строки html в Swift

Я пытаюсь удалить пустые теги <p></p> из моей строки, содержимое которой равно html. Я попытался использовать regex такие как; let deleteRegex = NSRegularExpression(pattern:...


Допустимы ли (не пустые) самозакрывающиеся теги в HTML5?

Валидатор W3C не любит самозакрывающиеся теги (те, которые заканчиваются на /> ) на непустых элементах . (Пустые элементы-это те, которые никогда не могут содержать никакого содержимого.) Они...


XMLPort пропускает пустые Теги

Я создал XMLport в Dynamics Nav. Проблема у меня есть, что пустые теги появляются в XML, и мне нужно удалить их. Я должен сделать, чтобы исправить это?


Удалите все пустые теги, кроме указанных

Следующий PHP regex удаляет все пустые теги: #<[^\/>]*>([\s]?)*<\/[^>]*>#u Я хочу удалить пустые теги, которые не совпадают: <div style=clear:both></div> Я пытался:...


Допустимы ли (не пустые) самозакрывающиеся теги в HTML5?

На практике использование самозакрывающихся тегов в HTML должно работать так, как вы ожидаете. Но если вы беспокоитесь о написании корректного HTML5, вы должны понимать, как использование таких тегов ведет себя в двух разных синтаксических формах, которые вы можете использовать. HTML5 определяет как синтаксис HTML, так и синтаксис XHTML, которые похожи, но не идентичны. Какой из них использовать, зависит от типа носителя, отправляемого веб-сервером.

Скорее всего, ваши страницы обслуживаются text/html, что соответствует более мягкому синтаксису HTML. В этих случаях HTML5 позволяет определенным начальным тегам иметь дополнительный / до его завершения>. В этих случаях / является необязательным и игнорируется, поэтому <hr>и <hr />идентичны. Спецификация HTML называет эти «пустые элементы» и предоставляет список допустимых. Строго говоря, необязательный / действителен только в начальных тегах этих пустых элементов; например, <br />и <hr />действительны HTML5, но <p />это не так.

Спецификация HTML5 проводит четкое различие между тем, что является правильным для авторов HTML и для разработчиков веб-браузеров, поскольку вторая группа обязана принимать все виды недопустимого «устаревшего» синтаксиса. В этом случае это означает, что HTML5-совместимые браузеры будут принимать недопустимые самозакрывающиеся теги, например <p />, и отображать их так, как вы, вероятно, ожидаете. Но для автора эта страница не будет действительной HTML5. ( Что еще более важно, дерево DOM , вы получаете от использования этого вида незаконного синтаксиса может быть серьезно облажались, самостоятельно закрытые <span />теги, например, как правило, натворить много ).

(В необычном случае, когда ваш сервер знает, как отправлять файлы XHTML как тип MIME XML, страница должна соответствовать синтаксису DTD и XML XHTML. Это означает, что для тех элементов, которые определены как таковые, требуются самозакрывающиеся теги .)

Автор: Michael Edenfield Размещён: 18.02.2011 10:11

8 HTML элементов, которые вы не используете (а следовало бы) / Habr


Веб сегодня все больше и больше семантический. Но что означает «семантический»? Почему это важно?

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

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

Ок, итак семантическая разметка — это хорошо, но как ее использовать. Лучше всего начать с замены обычных тегов на более выразительные. Давайте посмотрим восемь элементов, которые позволят вам войти в эту игру.

<q>

Подобно своему блочному двоюродному брату <blockquote>, тег <q> используется для обозначения цитирования.

Почему же просто не использовать кавычки? Кавычки не всегда подразумевают цитирование. Иногда они используются для смыслового выделения, иронии или обозначения названия чего-либо — и в этом контексте, они используются правильно. Однако, если вы цитируете что-то, <q> явно выражает ваше намерение.

<i> и <b>

В старые добрые времена, теги <i> и <b> обозначали текст выделенный, соответственно, курсивом и жирным шрифтом. Когда же идея об отделении семантики от представления стала набирать обороты, к этим тегом стали относиться с подозрением. Их заменили на теги <em> и <strong>, обозначающие соответственно эмфазис и сильный эмфазис.

В HTML5, наконец, эти теги получили отличную семантическую интерпретацию. Тегом <i> помечается текст, у которого отличается тон или настроение. Это полезно, например, для описания мыслей или технических терминов. Тег <b> помечает текст, который стилистически отличается от обычного текста, но не имеет какого-либо выделенного семантического значения. Чем это отличается от использования <span>? Ключ в том, что <b> не несет какого-либо семантически отличного смысла.

<abbr>

<abbr> используется для сокращений! Он может быть особенно полезен в документах, где их много. У этого тега есть необязательный атрибут title, в котором можно указать полную версию текста.
<abbr title="laugh out loud">lol</abbr>
<abbr title="I don't know">idk</abbr>
<abbr title="got to go">g2g</abbr>
<abbr title="talk to you later">ttyl</abbr>

<time>

Давайте взглянем на классическую проблему локализации дат. В США 5 октября 2013 года записывается как 10/05/13, в Британии это 05/10/13, в Южной Африке это 2013/10/05, в России это 05.10.13. Все эти варианты делают чрезвычайно трудной задачу автоматического распознавания дат.

Тег <time> позволяет указывать дату и время в машинночитаемом формате. Предыдущий пример мог бы выглядеть примерно так: <time datetime=«2013-10-05»>10/05/13</time>. HTML-парсеры смогут точно понять дату, несмотря на то, в каком формате мы ее указали. Тег <time> также позволяет опционально указывать время в 24-м формате: <time datetime=«2013-10-05 22:00»>10/05/13 at 10 PM</time>;

<mark>

Когда-нибудь так делали?
<p>
  Three hundred pages of boring, useless text. <span>The one thing you need to know and will never be able to find again if you don't highlight it.</span> More boring stuff…
</p>

Больше не надо. В HTML5 появился элемент <mark>, которым помечается текст, выделенный для справочных целей из-за его высокой важности.
<input>

Да, <input>. Вы, вероятно, используете <input type=«text»>, <input type=«submit»>, может быть даже <input type=«hidden»>, а вы когда-нибудь использовали другие типы? В HTML5 <input> может использовать с целой кучей новых типов:
  • email
  • tel
  • number
  • range
  • date
  • time
  • search
  • color

Это здорово, но сначала необходимо убедиться, что ваши целевые браузеры все это поддерживают. С этим пока проблема.
<menu>

Вы когда-нибудь делали меню из ненумерованного списка?
<ul>
  <li>New</li>
  <li>Open</li>
  <li>Save</li>
  <li>Quit</li>
</ul>

Больше так не делайте! Для этого есть <menu>, который представляет собой неупорядоченый список команд. У этого тега есть атрибут type, который может принимать значения: popup или toolbar.

<menu type="toolbar">
  <li>New</li>
  <li>Open</li>
  <li>Save</li>
  <li>Quit</li>
</menu>

Бонус

Большинство фронтенд-разработчиков используют &nbsp; при написании HTML, но многие не знают его истинного значения. Неразрывный пробел не разрывает строку. Это означает, что если два слова соединены неразрывным пробелом, они всегда будут вместе на одной строке. Иногда это очень важно. Вот несколько примеров:
  • Единицы измерения: 12 m/s
  • Время: 8 PM
  • Имена собственные: Dairy Queen

Так же существует неразрывный дефис (&#8209;), для аналогичных целей.
В заключение

HTML день ото дня становится все более и более семантическим. Использование всех этих элементов — неплохой старт для написания более доступной понятной разметки. Для более полной картины гляньте Periodic Table of the Elements, Mozilla Developer Network documentation ну или если вы чувствуете себя совсем уверено — W3C's HTML specification. Наслаждайтесь!

От переводчика: Это мой первый пост на хабре, еще во многое не въехал, поэтому, если уменьшаете карму, хоть комментируйте.

Оригинал стать- davidwalsh.name/8-html-elements

seodon.ru | Учебник HTML - Теги и синтаксис HTML

Опубликовано: 29.09.2010 Последняя правка: 08.12.2015

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

Открывающие и закрывающие теги, теги-контейнеры

Теги могут быть открывающими (начальными) и закрывающими (конечными). Открывающие теги состоят из знаков «<» и «>» между которыми указывается имя тега, а у закрывающих перед именем дополнительно ставится прямой слэш (/).

Большинство HTML-тегов являются парными — имеют обязательные открывающий и закрывающий теги, например: <STRONG> и </STRONG>. Некоторые имеют только открывающий тег, например <BR>, и называются пустыми. Другие же могут иметь открывающий тег, а закрывающий можно указывать, а можно и нет, тогда браузер сам определит, где заканчивается действие тега.

Теги, которые имеют обязательный или необязательный закрывающий тег принято называть теги-контейнеры или элементы-контейнеры.

Все теги HTML не чувствительны к регистру, то есть можно указывать <STRONG> и <strong> или вообще <sTRonG>.

Теперь совет. Рекомендую вам всегда писать теги в нижнем регистре (строчными буквами) и ставить необязательные закрывающие теги. Во-первых, это является признаком профессионализма и хорошего тона, а во-вторых, в HTML-коде со всеми закрывающими тегами гораздо проще ориентироваться и править его. Ну да я вам об этом еще не раз напомню.

Пример использования тегов

<b>Жирный шрифт</b> <i>Курсивный шрифт</i>

Результат в браузере

Жирный шрифт Курсивный шрифт

И все таки, как будет правильно — «теги» или «элементы»?

Вообще, в большинстве случаев правильно будет говорить — «элементы». Именно из HTML-элементов состоит веб-страница, и именно элементы выводят в окне браузера изображения, таблицы, ссылки и т.д. А теги предназначены для того, чтобы сообщить браузеру, где и какой элемент находится, начинается и заканчивается. Давайте еще раз рассмотрим пример, который расположен выше. Там указаны два элемента B и I. Каждый из них содержит обычный текст и имеет открывающий и закрывающий теги.

Так уж сложилось, что на сегодняшний день слово «тег» прочно вошло в русский язык (да и не только в русский) в качестве синонима слову «элемент». Я думаю из-за того, что при использовании обоих слов не теряется смысл повествования. Поэтому в данном учебнике я тоже буду использовать оба этих слова, чтобы вы привыкли к ним и научились подсознательно определять, о чем идет речь в каждом конкретном случае. И сильно на этом не заморачивайтесь, знаете, чем отличается тег от элемента — вот и хорошо.

Теги можно указывать в одну строку, а можно в несколько

Да, HTML-теги можно указывать в одну строку, а можно в несколько, для браузеров это не имеет никакого значения, они просто игнорируют переносы строк. А также между тегами можно ставить сколько угодно пробелов — все подряд идущие пробелы браузеры воспринимают как один. Например, вот так:

Пример

<b>Жирный      шрифт</b>
  <i>
   Курсивный шрифт
  </i>

Результат в браузере

Жирный шрифт Курсивный шрифт

Правильная вложенность тегов

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

<тег1><тег2><тег3>...</тег3></тег2></тег1> — правильно

<тег1><тег2><тег3>...</тег1></тег3></тег2> — неправильно

Пример использования вложенных тегов

<b><i>Жирный курсивный шрифт</i></b>

Результат в браузере

Жирный курсивный шрифт

Родительские и дочерние теги, потомки и предки

Чтобы указать иерархическую структуру HTML-тегов, их принято называть определенными словами. На самом деле все очень просто. Итак, давайте возьмем такой пример:

<тег1>
 <тег2>...</тег2>
 <тег3><тег4>...</тег4></тег3>
</тег1>

Родительские теги — тег является родительским для других тегов, если они вложены внутрь него на один уровень. В нашем примере <ТЕГ1> является родительским для <ТЕГ2> и <ТЕГ3>, но не является для тега <ТЕГ4>. А вот <ТЕГ3> родитель <ТЕГ4>.

Дочерние теги — обратно родительским. <ТЕГ2> и <ТЕГ3> дочерние для <ТЕГ1>, а <ТЕГ4> для тега <ТЕГ3>.

Предки — тег является предком для всех тегов, которые находятся внутри него на любом уровне вложенности. <ТЕГ1> предок для всех тегов, а <ТЕГ3> предок <ТЕГ4>.

Потомки — обратно предкам. Все теги — потомки тега <ТЕГ1>, но <ТЕГ4> еще и потомок тега <ТЕГ3>.

Ну что, не запутались? Чтобы проще запомнить, проведите аналогию со своим семейным древом и сразу все встанет на свои места.

Что значит «один тег содержит другой»?

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

<тег1>
 <тег2>...</тег2>
 <тег3><тег4>...</тег4></тег3>
</тег1>

Говорят, что один тег содержит другой только, если первый является родительским тегом, а второй — дочерним и никак иначе. то есть в нашем примере <ТЕГ1> содержит <ТЕГ2> и <ТЕГ3>, но не содержит <ТЕГ4>. А вот <ТЕГ3> как раз и содержит <ТЕГ4>. Немного необычно, правда? Но своя логика в этом есть, согласитесь.

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

Типы тегов

В HTML, теги делятся на несколько типов или моделей:

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

Пример использования встроенных тегов

<b>Жирный шрифт</b> <i>Курсивный шрифт</i>

Результат в браузере

Жирный шрифт Курсивный шрифт

Block (блочные, уровня блока) — все, что выводит каждый из таких тегов на страницу, отображается браузером с новой строки, После себя такие элементы также создают переносы строк.

Пример использования блочных тегов

<p>Параграф 1</p> <p>Параграф 2</p>

Результат в браузере

Параграф 1

Параграф 2

Есть еще теги других типов, но о них мы с вами поговорим в дальнейших уроках, а эти два типа самые распространенные в HTML.

Ну что, надеюсь пока все понятно? Тогда пошли дальше.

Отправить ответ

avatar
  Подписаться  
Уведомление о