Почему тег <nobr> устарел?
Я понимаю, что этот тег можно легко заменить на <span class="nowrap">
и немного CSS, но в реальной разметке я часто нахожу, что тег <nobr>
более уместен. Это не о стиле, это о содержании. <nobr>V. V. Putin</nobr>
например (в русской фамилии и фамилии типографии не должно быть разрыва строки, я думаю, что подобные правила применяются к другим языкам).
Я предполагаю, что усталость означает что-то лучше, но я не вижу, как стиль лучше, чем отдельный тег. Конечно, есть места, где нужно использовать CSS. Я что-то пропустил?
Ответы
Ответ 1
Он не устарел, потому что он никогда не был стандартным.
HTML (теоретически) - семантический язык разметки. Он описывает структуру и семантику документа вместе с отношениями с другими ресурсами.
HTML не должен описывать презентацию. Во время войн браузера была добавлена куча презентационных функций. Некоторые из них стали стандартизованными. Большинство из них впоследствии были устарели, когда появился CSS.
CSS - это язык описания описания. Когда у вас есть кусок текста, который не должен иметь разрыв строки в нем, это обычно вопрос презентации, поэтому CSS - это подходящее место для этого.
Исключения обычно обрабатываются неразрывными пробелами (
).
Ответ 2
Я нашел этот интересный и очень объяснительный комментарий к списку рассылки w3c:
<NOBR> не может быть устаревшим, поскольку он никогда не был частью даже переходных версий HTML W3C; это чисто личное.
Угу. Таким образом, это никогда не было и никогда не будет частью спецификации. Просто что-то "отсутствует" добавлено с помощью CSS.
Ответ 3
Это потому, что правильный тег должен быть семантически полезным, когда <nobr>
не имеет какой-либо семантики, кроме ее стиля. Я предполагаю, что по той же причине, почему <center>
и подобные теги стиля были устаревшими.
Ответ 4
Правильный способ добиться того, что вы хотите, - объявить, что "В. В. Путин" является правильным существительным и определяет в CSS, что такое собственное существительное не должно быть разбито на строки.
<span class="propernoun">V. V. Putin</span>
а в CSS вы определяете
.propernoun {
white-space: nowrap;
}
Так как... HTML не о стиле, а о содержании. В принципе, это то же самое, что предлагал OP, но nowrap в class= "nowrap" описывает презентационное свойство в html, которое должно быть в таблице стилей.
Ответ 5
Глупость. Это единственная причина.
<nobr>
поддерживается повсеместно, потому что это необходимо, чтобы передать тот факт, что вложенный контент семантически представляет собой единое целое, поэтому его нельзя разделить на несколько строк.