CSS / HTML: Qual é a maneira correta de fazer o texto itálico?

Qual é a maneira correcta de fazer o texto itálico? Vi as quatro abordagens seguintes:

<i>Italic Text</i>

<em>Italic Text</em>

<span class="italic">Italic Text</span>

<span class="footnote">Italic Text</span>


<i>

Este é o "velho caminho". <i> não tem significado semântico e apenas transmite o efeito presentacional de fazer o texto itálico. Tanto quanto Vejo, isto está claramente errado, porque não é semântico.


<em>

Isto usa marca semântica para fins puramente de apresentação. É que ... acontece que <em> por padrão torna o texto em itálico e por isso é frequentemente usado por aqueles que estão cientes de que <i> deve ser evitado, mas que não têm conhecimento do seu significado semântico. Nem todo o texto itálico é itálico porque é enfatizado. Às vezes, pode ser exactamente o oposto, como uma nota lateral ou um sussurro.


<span class="italic">

Isto usa uma classe CSS para colocar a apresentação. Isto é muitas vezes apontado como o caminho correto, mas novamente, isso me parece errado. Isto não parece ... transmitir qualquer significado semântico mais que <i>. Mas, seus proponentes gritam, é muito mais fácil mudar todo o seu texto itálico mais tarde, se você, digamos, queria negrito. No entanto, este não é o caso, porque eu ficaria com uma classe chamada "itálico" que rendeu texto negrito. Além disso, não é claro por que razão quereria alguma vez alterar todo o texto em itálico no meu sítio Web ou, pelo menos, podemos pensar em casos em que tal não seria desejável ou necessário.


<span class="footnote">

isto usa uma classe CSS para semântica. Até agora, esta parece ser a melhor maneira, mas na verdade tem dois problemas.

  1. nem todo o texto tem significado suficiente para justificar uma marcação semântica. Por exemplo, o texto em itálico no fundo da página é realmente uma nota de rodapé? Ou é um aparte? Ou outra coisa completamente diferente. Talvez não tenha um significado especial e só precise ser representado em itálico para separá-lo presentacionalmente do texto que o precedeu.

  2. significado semântico pode mudar quando não está presente em força suficiente. Vamos dizer que eu fui junto com" nota de rodapé " baseado em nada mais do que o texto que está no fundo da página. O que acontece quando alguns meses depois eu quero adicionar mais texto no fundo? Já não é uma nota de rodapé. Como podemos escolher uma classe semântica que é menos genérica do que <em> mas evita estes problemas?


resumo

Parece que a necessidade de semântica parece ser demasiado pesado em muitos casos em que o desejo de fazer algo itálico não se destina a ter significado semântico.

Além disso, o desejo de separar o estilo da estrutura levou o CSS a ser considerado como um substituto para <i> quando há ocasiões em que isso seria realmente menos útil. Então isso me deixa de volta com a humilde Etiqueta <i> e se perguntando se este trem de pensamento é a razão pela qual ele é deixado no HTML5 spec?

Há alguma boa postagem de blogs ou artigos sobre este assunto também? Talvez por aqueles envolvidos na decisão de manter/criar a marca <i>?

Author: Rupert Madden-Abbott, 2010-01-21

12 answers

Deve usar métodos diferentes para casos de Utilização diferentes:

  1. se quiser enfatizar uma frase, use <em>.
  2. a marca <i> tem um novo significado em HTML5 , representando "um espaço de texto numa voz ou estado de espírito alternativo". Então você deve usar esta tag para coisas como pensamentos/asides ou frases idiomáticas. O spec também sugere nomes de navios (mas não mais sugere nomes de livros/músicas/filmes; use <cite> para isso em vez).
  3. Se o texto em itálico fizer parte de um contexto maior, diga um parágrafo introdutório, você deve anexar o estilo CSS ao elemento maior, ou seja p.intro { font-style: italic; }
 184
Author: DisgruntledGoat, 2014-09-01 22:11:33

Não está errado porque não é semântico. É errado (normalmente) porque é presentacional. Separação de preocupações significa que as informações pré-convencionais devem ser transmitidas com o CSS.

Nomear em geral pode ser complicado para acertar, e os nomes das classes não são excepção, mas no entanto é o que você tem que fazer. Se você está usando itálico para fazer um bloco se destacar do texto do corpo, então talvez um nome de classe de "fluxo-distintivo" seria em ordem. Pense na reutilização: os nomes das classes são para categorização - onde mais você gostaria de fazer a mesma coisa? Isso deve ajudá-lo a identificar um nome adequado.

Está incluído no HTML5, mas é-lhe dada semântica específica. Se a razão pela qual você está marcando algo como itálico encontra uma das semânticas identificadas no spec, seria apropriado usar . Caso contrário, não.

 20
Author: Alohci, 2010-01-21 10:39:01
Não sou especialista, mas diria que se queres mesmo ser semântica, devias usar vocabulários (RDFa). Isto deve resultar em algo do género:
<em property="italic" href="http://url/to/a/definition_of_italic"> Your text </em>

em é usado para a apresentação (os humanos irão vê-la em itálico) e os atributos property e href estão a ligar-se a uma definição do que é itálico (para máquinas).

Devias verificar se existe um vocabulário para esse tipo de coisa, Talvez já existam propriedades. Mais informações sobre o RDFa aqui: http://www.alistapart.com/articles/introduction-to-rdfa/
 9
Author: Guillaume Flandre, 2010-01-21 10:31:08

Tl; dr

A forma correcta de fazer o texto itálico é ignorar o problema até chegar ao CSS, depois estilo de acordo com a semântica da apresentação. As duas primeiras opções que você forneceu pode estar certo, dependendo das circunstâncias. Os últimos dois estão errados.

Explicação Mais Longa

Não te preocupes com a apresentação quando escreveres a marcação. Não pense em termos de Itálico. Pense em termos de semântica. Se requer ênfase de stress, então é um em. Se for tangencial ao conteúdo principal, então é um aside. Talvez seja ousado, talvez seja itálico, talvez seja verde fluorescente. Não importa quando estás a marcar.

Quando você chegar ao CSS, você já pode ter um elemento semântico que faz sentido colocar itálico para todas as suas ocorrências em seu site. em é um bom exemplo. Mas talvez queiras tudo no teu site em itálico. Você tem que separar o pensamento sobre a marca de pensar sobre o apresentacao.

Tal como mencionado por i é semântica em HTML5. A semântica parece-me um pouco estreita. O uso provavelmente será raro.

A semântica de em mudou em HTML5 para ênfase de stress. strong também pode ser usado para mostrar importância. strong pode ser itálico em vez de negrito, se é assim que o queres estilo. Não deixe que a 'stylesheet' do navegador o limite. Você pode até usar uma reiniciar a 'stylesheet' para o ajudar a parar de pensar dentro padrao. (Embora haja algumas ressalvas .)

class="italic" é mau. Não o uses. Não é semântica nem flexível. A apresentação ainda tem semântica, apenas um tipo diferente de marcação.

class="footnote" é emular semântica de marcação, e é incorreto também. Seu CSS para a nota de rodapé não deve ser completamente exclusivo para a sua nota de rodapé. Seu site vai parecer muito bagunçado se cada parte é estilo diferente. Você deve ter alguns padrões visuais espalhados através de suas páginas que podes transformar-te em aulas de CSS. Se o seu estilo para as suas notas de rodapé e seus blockquotes são muito semelhantes, então você deve colocar as semelhanças em uma classe ao invés de repetir-se várias vezes. Você pode considerar adotar as práticas do OOCSS (links abaixo).

A separação entre preocupações e semântica é grande no HTML5. As pessoas muitas vezes não percebem que a marca não é o único lugar onde a semântica é importante. Há semântica de conteúdo (HTML), mas há também semântica presentacional (CSS) e semântica comportamental (Javascript) também. Todos eles têm sua própria semântica separada que são importantes para prestar atenção para a manutenção e ficar seco.

Recursos OOCSS

 7
Author: Eva, 2017-05-23 11:54:58

Talvez não tenha um significado especial e só precise ser representado em itálico para separá-lo presentacionalmente do texto que o precedeu.

Se não tem um significado especial, por que é necessário separá-lo do texto que o precedeu? Esta série de texto parece um pouco estranha, porque a italizei sem motivo.

Mas percebo o que queres dizer. Não é incomum para designers produzir desenhos que variam visualmente, sem variar significativamente. Eu vi isso mais frequentemente com caixas: designers nos dará desenhos, incluindo caixas com várias combinações de cores, cantos, gradientes e sombras, sem relação entre os estilos, e o significado do conteúdo. Porque estes são estilos razoavelmente complexos (com questões associadas ao Internet Explorer) reutilizados em diferentes lugares, criamos classes como box-1, box-2, para que possamos reutilizar os estilos.

O exemplo específico de fazer algum texto itálico é muito trivial para se preocupar. É melhor deixar as minúcias assim para os malucos semânticos discutirem.

 5
Author: Paul D. Waite, 2010-01-21 10:38:26

Acho que a resposta é usar {[[0]} quando pretendes ênfase.

Se ao ler o texto para si próprio, descobrir que usa umaligeiramente voz diferente de realçar {[7] } um ponto, então deve usar {[[0]} porque gostaria que um leitor de ecrã fizesse a mesma coisa.

Se é uma coisa puramente de estilo, tal como o seu designer decidiu que todos os seus títulos {[[2]} ficaria melhor em itálico Garamond, então não há nenhuma razão semântica para incluí-lo no HTML e você deve apenas alterar o CSS para os elementos apropriados.

Não vejo nenhuma razão para usar {[[3]}, a menos que precises especificamente de suportar algum navegador legado sem CSS.

 1
Author: GrahamS, 2010-01-21 11:05:10

i elemento é não-semântico para os leitores de tela, Googlebot etc. deve ser algum tipo de transparente (tal como span ou div elementos). Mas não é uma boa escolha para o desenvolvedor, porque ele junta a camada de apresentação Com a camada de estrutura - e isso é uma má prática.

em Elemento (strong também) deve ser usado sempre no contexto semântico, não na apresentação um. Tem de ser usado sempre que alguma palavra ou frase é importante. Apenas para um exemplo no anterior frase que eu deveria usar em para colocar mais ênfase na parte "deve ser sempre usado". Os navegadores fornecem algumas propriedades CSS predefinidas para estes elementos, mas você pode e é suposto sobrepor os valores predefinidos se o seu design exigir isto para manter o significado semântico correcto destes elementos.

<span class="italic">Italic Text</span> é a maneira mais errada. Em primeiro lugar, é inconveniente em uso. Em segundo lugar, sugere que o texto seja itálico. And structure layer (HTML, XML, etc. Nunca devia ter feito isso. ele. A apresentação deve ser sempre mantida separada da estrutura.

<span class="footnote">Italic Text</span> parece ser a melhor maneira de uma nota de rodapé. Não sugere que qualquer apresentação descreva apenas a margem. Você não pode prever o que vai acontecer no recurso. Se a nota de rodapé vai crescer no recurso você pode ser forçado a mudar o seu nome de classe (para manter algumas lógicas em seu código).

Por isso, sempre que tiver algum texto importante, use em ou strong para enfatizá-lo. Mas lembre-se que estes elementos estão alinhados elementos e não devem ser usados para enfatizar grande bloco de texto.

Utilize o CSS se se importar apenas com a aparência de algo e tente sempre evitar qualquer marcação extra.

 1
Author: Crozin, 2014-04-05 22:31:28

O texto em itálico HTML mostra o texto em itálico.

<i>HTML italic text example</i>
A ênfase e os elementos fortes podem ser usados para aumentar a importância de certas palavras ou frases.
<p>This is <em>emphasized </em> text format <em>example</em></p>

A marca de ênfase deve ser usada quando você quer enfatizar um ponto em seu texto e não necessariamente quando você quer itálico esse texto.

Ver este guia para mais: http://www.snoopcode.com/html/html-text-formating

 1
Author: Prabhakar, 2015-11-29 04:23:56
Eu diria para usar <em> para enfatizar os elementos inline. Use uma classe para elementos de bloco como blocos de texto. CSS ou não, o texto ainda tem que ser marcado. Seja para semântica ou para ajuda visual, presumo que a Use para algo significativo...

Se você está enfatizando o texto por qualquer razão, você pode usar {[[0]}, ou uma classe que Itálico o seu texto.

Não faz mal quebrar as regras às vezes!

 0
Author: tahdhaze09, 2010-01-21 14:17:15

OK, a primeira coisa a notar é que <i> tem sido substituído, e não deve ser usado <i> não foi preterida, mas eu ainda não recomendo usá-lo-consulte os comentários para detalhes. Isto é porque vai inteiramente contra manter a apresentação na camada de apresentação, que você apontou. Da mesma forma, <span class="italic"> parece quebrar o molde também.

Então agora temos duas maneiras reais de fazer as coisas: <em> e <span class="footnote">. Lembre-se que em significa ênfase . Quando desejar aplicar ênfase a uma palavra, frase ou frase, coloque-a em <em> Etiquetas, independentemente de querer itálico ou não. Se quiser alterar o estilo de alguma outra forma, use o CSS: em { font-weight: bold; font-style: normal; }. Claro que também pode aplicar uma classe à etiqueta <em>: se decidir que determinadas frases sublinhadas devem aparecer a vermelho, dê - lhes uma classe e adicione-a ao CSS:
Fancy some <em class="special">shiny</em> text?

em { font-weight: bold; font-style: normal; }
em.special { color: red; }
Se você está aplicando itálico por alguma outra razão, vá com o outro método e dê o Secção A. Dessa forma, você pode mudar seu estilo sempre que quiser, sem ajustar o HTML. No seu exemplo, as notas de pé-de-página não devem ser realçadas-na verdade, devem ser deitadas de pé-de-página, uma vez que o objectivo de uma nota de pé-de-página é mostrar informações sem importância, mas interessantes ou úteis. Neste caso, você está muito melhor aplicando uma classe para a nota de rodapé e fazendo com que pareça um na camada de apresentação-o CSS.
 0
Author: Samir Talwar, 2010-01-22 00:57:01

Use se necessitar de algumas palavras/caracteres itálico no conteúdo sem outros estilos. Também ajuda a tornar o conteúdo semântico.

O estilo de texto é mais adequado para vários estilos e sem necessidade semântica.

 -1
Author: aryan, 2010-01-21 10:37:50

  1. Indicar ao atributo da classe um valor que indique a natureza dos dados (isto é, class="footnote" é bom)

  2. Criar uma folha de estilo CSS para a Página

  3. Define um estilo CSS que está ligado à classe que atribui ao elemento

    .footnote { font-style:italic; }

NÃO

  1. Não use <i> ou <em> elementos - eles não são suportados e liga os dados e a apresentação muito perto.
  2. Não! dê à classe a um valor que indique as regras de apresentação (isto é, não utilize class="italic").
 -4
Author: Ninju Bohra, 2017-04-03 02:25:03