Essa pergunta surgiu em uma das minhas aulas da faculdade. O professor só deu a resposta que era mais descritivo, mas parece que <b>
e <i>
são bastante explícita no seu significado e é mais fácil de escrever do que <strong>
e <em>
.
Quais foram os argumentos oficiais para a descontinuação dessas tags?
html
deprecation
LanceLafontaine
fonte
fonte
<b>
e<i>
não estão obsoletos.b
- significa literalmente "isto é negrito", não "isso é enfatizado". Mas o ponto principal é que eles têm significado diferente - não há depreciação, apenas não quando você costumava fazerb
oui
, geralmente, queria dizerstrong
ouem
.<i>
e<b>
não são realmente obsoleto,<tt>
e<u>
são, e a pergunta seria tão aplicáveis a esses.Respostas:
No verão passado, li a especificação completa do HTML5, todas as especificações anteriores do HTML (mesmo as abandonadas), todas as especificações de CSS que eu encontrei e muitas especificações de XML. Como eu amo documentos de hipertexto semanticamente ricos, deixe-me dar a idéia por trás da semântica HTML relevante no HTML5.
Antes do HTML5
Antes do HTML5,
i
eb
estavam realmente fora de moda. O motivo foi que eles funcionaram essencialmente comoem
estrong
, respectivamente, mas com foco na apresentação e não na semântica (o que é ruim).De fato,
i
significava que o texto deveria estar em itálico (dizia algo sobre como o texto deveria ser renderizado na tela). Por outro lado,em
significava que o texto deveria ser enfatizado (dizia algo sobre a semântica do texto).Há uma diferença teórica importante aqui. Se você usar
em
, o agente do usuário (= navegador) sabe que o texto deve ser enfatizado, para que possa renderizá-lo em itálico se o documento for exibido na tela (ou em maiúsculas se a formatação não for possível, ou talvez em negrito). o usuário preferir isso), pode pronunciar de maneira diferente se o documento for falado com o usuário etc.Observe que a ênfase é realmente sobre semântica. Por exemplo, as frases
não tem o mesmo significado.
A mesma diferença se aplica a
b
(fonte em negrito) estrong
(ênfase forte).Um princípio geral da escrita digital em geral e da autoria de hipertexto em particular é que você deve separar conteúdo e estilo. Na criação de hipertexto, isso significa que o conteúdo deve estar no arquivo HTML e o estilo deve estar em um arquivo CSS (ou em vários arquivos CSS). Um princípio diferente, porém relacionado, é que o documento seja rico em semântica (como marcar cabeçalhos, rodapés, listas, ênfases, endereços, áreas de navegação etc.). Isso tem várias vantagens:
Então, em resumo,
i
eb
foram preteridos porque eram tags HTML preocupadas com a apresentação , o que é totalmente errado.Em HTML5
No HTML5
i
eb
não são mais preteridos. Em vez disso, eles recebem um significado somático . Portanto, agora eles são realmente sobre semântica, e não sobre apresentação.Como antes, você
em
costuma enfatizar: "O gato é meu". Mas você usai
para quase todos os outros casos em que usaria itálico em uma obra impressa. Por exemplo:i
marcar as designações taxonômicas: "Gosto de R. norvegicus ".i
para marcar uma frase em um idioma diferente em comparação com o texto ao redor: À la cartei
para marcar uma palavra quando fala sobre a própria palavra: " bebida é um substantivo e um verbo"Também é uma boa ideia usar o
class
atributo para especificar o uso preciso (também "microformato" e "microdados" do Google). E, é claro, no segundo caso, você realmente deve usar olang
atributo para especificar o idioma correto. (Caso contrário, por exemplo , um agente de conversão de texto em fala pode pronunciar incorretamente o texto.)Há um ano, mais ou menos, a especificação HTML5 também dizia que
cite
deveria ser usado para marcar nomes de livros, filmes, óperas, pinturas etc.:Finalmente, há muito tempo,
dfn
é usado para marcar a instância definidora de uma frase em um texto (como uma definição matemática ou a definição de um termo):Portanto, o itálico no seu livro impresso, que pode significar muitas coisas diferentes, é representado por quatro tags HTML5 diferentes, o que é realmente ótimo, porque a semântica é boa, como tentei convencê-lo anteriormente. (Por exemplo, você pode pedir ao seu navegador para fazer uma lista de todas as definições do texto, para garantir que você as conheça todas antes do exame.)
Virando-se para
strong
eb
, a especificação HTML5 diz questrong
deve ser usado para marcar uma parte importante do texto, como uma advertência ou uma palavra muito importante-a-captura em uma frase. Por outro lado,b
deve ser usado para marcar itens que precisam ser fáceis de encontrar no texto, como palavras-chave. Eu também usob
como títulos em itens de lista (LIs).fonte
<dfn>
não é<def>
. Caso contrário, ótimo resumo abrangente de todos os problemas. Sua sugestão para usar<b>
como títulos nos itens da lista é interessante; a abordagem semântica é usar uma lista de definições , mas como atualmente não há navegadores compatíveisdisplay:run-in
, a marcação de palavras-chave embutida é<b>
ou<span>
é o melhor que você pode fazer.display:run-in
, mas como o suporte está diminuindo , você precisa usarfloat
ocontent:
truque ou , consulte rejbrand.se/rejbrand/news.asp?ItemIndex=169 . Quando falo em usarb
para marcar 'cabeçalhos' em listas, não quero dizer pares nome-valor, mas sim listas simples em que quero usar um 'cabeçalho' em cada item.<b>
garantem texto em negrito. 1) Leitores de tela, telas em braille e outros meios de consumir texto para os quais glifos mais espessos são um conceito sem sentido. 2)b { font-weight: normal }
, o que significa que o estilo de exibição também não é fixo<b>
.b, strong { font-weight:bold; }
. Dessa forma, você pode ter a maior certeza possível. CSS é a maneira de especificar o formato visual. HTML é sobre o significado (conteúdo), CSS sobre a apresentação visual dele.Como Doval diz, eles não são preteridos. Eles ainda existem, mas devem ser usados de maneira diferente do que muitas pessoas costumavam fazer antes do HTML5.
É sobre html 'semântico'. Ele deve descrever 'o que' é, em vez de como deve ser. O navegador ou teoricamente qualquer outro meio de exibição (por exemplo, um aplicativo de leitura para cegos) deve ser capaz de decidir como exatamente deve ser interpretado.
É semelhante ao motivo pelo qual você não deve usar nomes de classes CSS como "red" e usar classes mais descritivas que descrevam a ideia funcional por trás do uso de uma cor diferente aqui. Mais tarde, você pode decidir que o verde é melhor (e talvez algo "forte" deva ser mostrado usando a cor vermelha em vez de texto em negrito). Ou um usuário daltônico pode ter algumas configurações especiais do navegador em que as cores são substituídas por outros meios.
fonte
<span class="keyword">...</span>
em primeiro lugar o salva um monte de problemas.<b>
é um caso delicado , mas há exemplos sólidos de uso<i>
para casos em que<em>
é inadequado: nomes científicos de espécies ou palavras latinas adotadas no inglês (você pode usar uma extensão com um atributo de idioma, mas com todo o tipo de outras implicações - - um leitor de tela pode mudar de voz para um idioma diferente). Também pode ser usado para colocar em itálico os títulos de outros trabalhos, embora seja usada a abordagem semanticamente correta<cite>
.A verdadeira história é que,
b
e elesi
foram primeiro obsoletos, preteridos, amaldiçoados e anatematizados como "apresentacionais" em vários rascunhos em HTML5 (em termos gerais), mas eles perceberam que essas tags são amplamente usadas e também geradas por muitos programas de criação. Em vez de simplesmente permitir, eles desenvolveram novas definições “semânticas” para eles, para permitir os elementos, mas ainda fingir serem rigorosos sobre a marcação “apresentacional”. As novas definições variaram de um rascunho para outro e são obscuras: é difícil encontrar duas pessoas que as entendam e as interpretem da mesma maneira.Desculpe, sem referências. A descrição acima é resultado de acompanhar as alterações e ler os rascunhos e discussões, geralmente entre as linhas. Eles não estão explicitamente dizendo a causa. Eu ainda acho que é a história verdadeira.
A conclusão é: seguir em frente. Não há nada útil aqui. Os elementos
b
ei
fazem o mesmo que sempre: eles tornam a fonte em negrito ou itálico, respectivamente, com as advertências usuais. Essa é a realidade que você deve levar em consideração, não a “semântica” quasischolastic que não tem impacto nos navegadores, mecanismos de pesquisa ou outro software.fonte
<b>
como um tipo engraçado<span>
disso, por padrão, fica em negrito. Então, se você puder se incomodar, atribua umclass
atributo a seus usos, para que, quando necessário, você possa mudar o estilo de várias coisas ao mesmo tempo que a usavam, porque elas têm semântica comum. É quasischolastic no sentido de que as pessoas vão pensar que você está quase na cabeça para fazerb.productname {font-weight: normal; font-style: italic; }
depois que você mudou de idéia sobre a apresentação e aproveitou a sua sábia escolha de marcação semântica ;-)<b>this</b>
parece muito mais razoável do que<span class="bold">this</b>
(a sobrecarga de oito bytes do primeiro é cansativa; a sobrecarga de 23 bytes do último parece louca). Eu me pergunto por que o HTML nunca definiu nenhuma representação abreviada<@quack>this</@>
como equivalente a<span class="quack">this</span>
?class='bold'
? O Mestre Suku do Código Sem Código teria palavras com você sobre o uso de nomes de classe tão pobres . Considere este o seu último boldRedText .As tags
<b>
e se<i>
originaram com os conceitos de "negrito" e "itálico". O problema é que esses podem ser completamente sem sentido para alguns agentes do usuário. Por exemplo, o que significa "itálico" em um leitor de tela para uma pessoa cega?Substituindo-os por
<strong>
e<em>
removendo o link direto para conceitos tipográficos. Em vez disso, o agente do usuário pode renderizá-los da maneira que achar melhor.fonte
<b>
e da maneira<i>
que achar melhor também.As tags
<b>
e<i>
são essenciais quando você literalmente exige texto em 'negrito' ou 'itálico'.Se você estiver escrevendo uma equação em HTML em que um ' I ' em itálico tenha um significado diferente de um 'I' não em itálico, é importante poder fazer essa distinção.
Penso nelas da mesma maneira que penso
<sup>
ou em<sub>
tags - você não pode representar corretamente o significado de uma equação sem usar essas tags de 'aparência'.A abordagem purista seria usar MathML ou TeX, mas o suporte ao navegador ainda não existe ...
fonte
in a monospaced typeface
mas que não faz distinção quanto ao motivo, o uso de uma das "substituições"<tt>
implicaria falsamente que o código que fazia a importação sabia mais do que sabia sobre o objetivo.b
ei
em contextos matemáticos (e físicos), mas esse uso não é mencionado nos rascunhos do HTML5. Quando levantei esta pergunta, foi seriamente respondido que os caracteres especiais Unicode (letras negrito matemáticas e itálico matemático) fossem usados!class="source-X-asserts-it-should-be-monospace"
, distinguindo-a do texto que é semanticamente diferente no sentido que alguma outra fonte afirma por razões desconhecidas que deve ser monoespaçada. Na verdade, isso é auditar as coisas que o HTML considera ruins, em vez de apenas traduzir a maldade no HTML.<TT>
, o que sugere diretamente que o texto deve ser definido em uma fonte monoespaçada contrastante, com marcação que, após algumas camadas de indireção, indicará que o texto deve ser mostrado em uma fonte específica que acontece com seja monoespaço. Embora eu não esperasse que todos os leitores de tela fizessem algo útil<tt>
, esperaria que eles tivessem um tempo muito mais fácil do<tt>
que<span class="styleNameThisImportUtilityPicked">
.Os princípios de design subjacentes às tags HTML são que eles devem ser "semânticos", isto é, devem indicar significado e intenção, em vez de instruções de baixo nível.
O teste clássico é "as tags podem ser usadas significativamente em um navegador para cegos"?
Portanto, para um navegador baseado em áudio, o "i" para itálico é bastante inútil, pois você não pode ter um discurso em itálico. No entanto, a tag "em" é significativa, pois um dispositivo de áudio pode enfatizar uma frase de várias maneiras: aumentando o tom, aumentando o volume ou alterando o sotaque. Um renderizador de Braille pode enfatizar aumentando os pontos, alterando o espaçamento, alterando o tamanho ou adicionando vibração.
fonte
<img>
porque você não pode falar uma imagem e um sistema sem hardware de som não pode apresentar<audio>
. Às vezes, a apresentação é o próprio objetivo de um elemento e não precisa ser universalmente suportada (e, diferentemente de outros elementos potencialmente não suportados,<i>
não precisa de texto alternativo porque o fato de estar em itálico é a única informação perdida). O verdadeiro problema é quando as pessoas dizemi
quando querem dizerem
.<i>
tag usa pitch de 120 e o texto dentro de uma<b>
tag usa 80, e o texto dentro de uma<tt>
sincronização do discurso com uma máquina de escrever sintetizada que produz o texto permitiria ao ouvinte distinguir facilmente essas formas de marcação. O trabalho seria muito mais difícil se, em vez de usar uma<i>
tag, o texto usasse uma<span class="whatever">
que fazia com que partes do texto fossem exibidas usando "Acme SemiScript" em vez de "Waldorf Sans" [algumas famílias de fontes ...