Por que as tags <b> e <i> estão obsoletas?

98

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?

LanceLafontaine
fonte
38
Estou bastante certo <b>e <i>não estão obsoletos.
Doval
4
Costumo argumentar assim: quero que um leitor de tela leia isso de maneira diferente ou não? Se eu apenas quiser escolher palavras que sejam fáceis de encontrar por um leitor (não cego), eu poderia usar 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 fazer bou i, geralmente, queria dizer strongou em.
Luaan 5/09/14
1
@MichaelT Lembro que, quando comecei a usar o LaTeX, fiquei confuso sobre todas as maneiras diferentes de colocar o texto em itálico e em negrito ao iniciar em um documento em branco (sem pacotes de estilos).
Cole Johnson
@Luaan: Mesmo se <i>e <b>não são realmente obsoleto, <tt>e <u>são, e a pergunta seria tão aplicáveis a esses.
supercat

Respostas:

135

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, ie bestavam realmente fora de moda. O motivo foi que eles funcionaram essencialmente como eme strong, respectivamente, mas com foco na apresentação e não na semântica (o que é ruim).

De fato, isignificava que o texto deveria estar em itálico (dizia algo sobre como o texto deveria ser renderizado na tela). Por outro lado, emsignificava 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

  • O gato é meu. (= não o cachorro!)
  • O gato é meu . (= não o seu!)

não tem o mesmo significado.

A mesma diferença se aplica a b(fonte em negrito) e strong(ê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:

  • É muito mais fácil para os programas de computador interpretar o documento. Esses programas incluem navegadores, aplicativos de conversão de texto em fala, mecanismos de pesquisa e assistentes digitais. (Por exemplo, o navegador pode permitir que você salve um endereço em seu catálogo de endereços, se ele puder encontrá-lo e interpretá-lo. Além disso, você deve saber que o Microsoft Word pode criar e atualizar automaticamente um sumário, se você marcar seus títulos corretamente .)
  • É muito mais fácil mudar o estilo mais tarde. (Se você quiser alterar a cor de todos os seus títulos de terceiro nível no documento de 860 páginas, poderá alterar uma única linha na folha de estilo. Se você misturou conteúdo e apresentação, teria que passar pelo documento inteiro manualmente E você provavelmente perderia um ou dois títulos, tornando o documento pouco profissional.)
  • Você pode usar folhas de estilo diferentes, dependendo da circunstância (o documento está sendo exibido na tela ou impresso em papel?). Você pode até deixar o usuário final escolher o estilo. (Meu site oferece várias folhas de estilo alternativas. No IE e FF, você as altera usando o menu Exibir.)

Então, em resumo, ie bforam preteridos porque eram tags HTML preocupadas com a apresentação , o que é totalmente errado.

Em HTML5

No HTML5 ie bnã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ê emcostuma enfatizar: "O gato é meu". Mas você usa ipara quase todos os outros casos em que usaria itálico em uma obra impressa. Por exemplo:

  • Você costuma imarcar as designações taxonômicas: "Gosto de R. norvegicus ".
  • Você usa ipara marcar uma frase em um idioma diferente em comparação com o texto ao redor: À la carte
  • Você usa ipara marcar uma palavra quando fala sobre a própria palavra: " bebida é um substantivo e um verbo"

Também é uma boa ideia usar o classatributo para especificar o uso preciso (também "microformato" e "microdados" do Google). E, é claro, no segundo caso, você realmente deve usar o langatributo 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 citedeveria ser usado para marcar nomes de livros, filmes, óperas, pinturas etc.:

  • O que você acha do ninfomaníaca ?

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):

  • Um grupo é um conjunto X equipado com uma única operação binária * de forma que ...

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 stronge b, a especificação HTML5 diz que strongdeve 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, bdeve ser usado para marcar itens que precisam ser fáceis de encontrar no texto, como palavras-chave. Eu também uso bcomo títulos em itens de lista (LIs).

Andreas Rejbrand
fonte
1
Correção: a tag de definição <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íveis display:run-in, a marcação de palavras-chave embutida é <b>ou <span>é o melhor que você pode fazer.
AmeliaBR
@AmeliaBR. Obrigado por observar o erro de digitação (def). Sobre as listas de definições: as listas de definições devem ser usadas para pares nome-valor, e eu sempre as uso para isso (dê uma olhada no meu livro de visitas , por exemplo). Também adorei display:run-in, mas como o suporte está diminuindo , você precisa usar floato content:truque ou , consulte rejbrand.se/rejbrand/news.asp?ItemIndex=169 . Quando falo em usar bpara 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.
Andreas Rejbrand
1
@SarahofGaia Há pelo menos duas falhas no raciocínio que <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>.
8bittree
1
Finalmente, você está sempre livre para fornecer o seu próprio CSS se você não confiar no navegador: 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.
Andreas Rejbrand
1
Esta resposta me deu a compreensão de por que preciso alterar minhas tags de fonte para css. Eu sempre gostei de tags de fonte em negrito e tudo isso, agora entendo por que não devo usá-las. Obrigado
Andreas
58

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.

thorsten müller
fonte
1
Existem situações em que é preferível usar <b> em oposição a <strong>? Ou <strong> sempre é uma tag "mais semântica"?
precisa saber é o seguinte
4
Aproximadamente, você pode usar <b> para coisas que devem ser "destacadas", mas não "enfatizadas", como palavras-chave em um texto. Na documentação técnica, você costuma encontrar estilos de texto diferentes usados ​​para mostrar determinados atributos, como nos livros de programação exemplos de código ou termos técnicos. Para tais casos de uso, como um termo técnico <b> ou <i>, pode ser usado.
thorsten Müller
3
@LanceLafontaine Dê uma olhada no padrão oficial .
Rufflewind 4/04
4
@ thorstenmüller Eu acho que também é um mau exemplo ... é o caso do livro didático em que a gerência decide mais tarde que, em vez de negrito, eles querem seus atributos na fonte do tipo escritor e não em negrito, mas sublinhados, caso em que o uso <span class="keyword">...</span>em primeiro lugar o salva um monte de problemas.
CompuChip
2
O @LanceLafontaine <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>.
AmeliaBR 5/09
41

A verdadeira história é que, be eles iforam 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 be ifazem 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.

Jukka K. Korpela
fonte
3
Dito isto, você pode seguir a semântica quasischolastic apenas tratando <b>como um tipo engraçado <span>disso, por padrão, fica em negrito. Então, se você puder se incomodar, atribua um classatributo 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 fazer b.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 ;-)
Steve Jessop
1
@SteveJessop: Para alguns de nós no mundo que ainda se preocupam com o tamanho do arquivo, dizer <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>?
Supercat 4/14
4
@ supercat: é para isso que serve a codificação de transferência: gzip. Ou talvez XML + XSLT, dependendo exatamente de onde e como você deseja introduzir uma notação mais concisa para "charlatão".
Steve Jessop
7
@supercat 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 .
2
Nos dias de 14,4 modems, o CSS era uma ideia ainda não realizada ou implementada em nenhum agente do usuário. Esses elementos HTML são meramente um antigo legado que ficaremos presos para sempre.
Michael Hampton
11

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.

Simon B
fonte
2
Estritamente falando, o agente do usuário pode renderizar <b>e da maneira <i>que achar melhor também.
Jonathan Eunice
8

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 ...

SAL
fonte
14
Eu gostaria que as pessoas que pressionavam pela marcação "semântica" reconhecessem que, em alguns casos, as tags antigas eram mais semanticamente corretas do que quaisquer alternativas. Se o texto de um documento fizer referência a certas palavras sublinhadas, mostrá-las de qualquer maneira que não seja sublinhada seria semanticamente errada. Se alguém está importando texto de um sistema que coloca parte dele, in a monospaced typefacemas 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.
Supercat 4/14
Concordo com a adequação be iem 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!
Jukka K. Korpela
1
@ supercat: a alegação geral (que eu admito nem sempre é aplicável) é que você não deve preencher cheques que o agente do usuário não pode descontar. Em particular, você não deve escrever uma página que alega que o leitor de tela de alguém falará em uma fonte monoespaçada (imagino que uma voz de robô seria apropriada: eu nunca usei um leitor de tela). É claro que isso ignora que as páginas da maioria das pessoas não funcionam nem um pouco nos leitores de tela e, portanto, não faz sentido que paguem qualquer preço por uma acessibilidade hipotética de que não se importam. Mas o W3C negligencia deliberadamente esse fato por uma questão de princípio.
Steve Jessop
No caso da importação de código, suponho que a resposta canônica (se não satisfatória) seja 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.
Steve Jessop
1
@SteveJessop: Em outras palavras, devemos melhorar <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">.
supercat
0

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.

James Anderson
fonte
Como você diz que não pode ter um discurso em itálico - mas você pode ter um texto em itálico, onde o fato de ele estar em itálico tem significado semântico, por exemplo, equações ...
SAL
2
'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. ... Sim, e é assim <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 dizem iquando querem dizer em .
nmclean
@ SAL: Por que não se pode "falar em itálico"? Se a fala normal é falada com um valor de "pitch" de 100, o texto dentro de uma <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 ...
supercat
... não possui uma boa fonte em itálico, mas às vezes uma fonte somente em itálico pode parecer boa quando definida em um texto escrito usando outra família de fontes].
supercat
@ supercat Você está descrevendo fala enfatizada, não itálica. Se você quiser um tom diferente, use-os, como o nmclean disse. Se você quiser itálico, use i. Não importa que um leitor de tela não saiba o que fazer, porque não há nada para fazer. Os títulos dos livros geralmente estão em itálico, mas você não os pronuncia de maneira diferente.
precisa saber é o seguinte