Span dentro da âncora ou âncora dentro da amplitude ou não importa?


109

Eu quero aninhar spane amarcar. Eu devo

  1. Colocar <span>dentro<a>
  2. Colocar <a>dentro<span>
  3. Não importa?

Respostas:


110

3 - Não importa.

MAS, eu tendo a usar apenas <span>dentro de uma <a>se for apenas para uma parte do conteúdo da tag, ou seja,

<a href="#">some <span class="red">text</span></a>

Ao invés de:

<a href="#"><span class="red">some text</span></a>

O que obviamente deveria ser:

<a href="#" class="red">some text</a>

1
Recentemente, encontrei um problema de espaço em branco com estouro de texto: reticências e estouro: oculto, que poderia ser resolvido adicionando um elemento de bloco embutido ao meu botão de navegação. Acabei com <a> <span> Texto </span> </a>. Então, eu acho (ou espero;)) que está tudo bem fazer isso quando você realmente precisa.
CunningFatalist

Vou para a opção 2 porque isso importa. A âncora deve ser apenas para ancorar e não para conter elementos (prática recomendada). Imagine uma situação em que você cria um bloco clicável e a âncora é o elemento pai do componente bloco e, dentro do componente, estão os links para imagens e mais imagens. O rastreador do Google ficará louco e, eventualmente, isso não é bom para o seu site.
Imam Bux

33

É perfeitamente válido (pelo menos para os padrões HTML 4.01 e XHTML 1.0) aninhar um <span>dentro de um <a>ou um <a>dentro de a <span>.

Só para provar a si mesmo, você sempre pode verificar no W3C MarkUp Validation Service

Tentei validar:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  <html>
    <head>
      <title>Title</title>
    </head>
    <body>
       <p>
         <a href="http://www.google.com/"><span>Google</span></a>
       </p>
    </body>
  </html>

E também o mesmo que acima, mas com o <a>interior do<span>

ie

<span><a href="http://www.google.com">Google</a></span>

com ambos os tipos de documentos HTML 4.01 e XHTML 1.0, e ambos passaram na validação com sucesso!

A única coisa que você deve estar ciente é garantir que você feche as tags na ordem correta. Portanto, se você começar com um <span>depois um <a>, certifique-se de fechar a <a>tag antes de fechar o <span>e vice-versa.


20

Não importa - ambos são permitidos dentro um do outro.


Mas <a> é um nível de bloco e <span> é um elemento de nível embutido e o elemento de nível de bloco não pode vir dentro do elemento embutido. Acho que foi na validação w3c
Jitendra Vyas

26
Não, ambos são inline
Greg

16

isso depende do que você deseja marcar.

  • se você quiser um link dentro de um intervalo, coloque <a>dentro <span>.
  • se você quiser marcar algo em um link, coloque <span>em<a>

16

SPAN é um contêiner em linha GENÉRICO . Não importa se um aestá dentro spanou spandentro, apois ambos são elementos embutidos. Sinta-se à vontade para fazer o que parecer logicamente correto para você.


2

Depende de para que serve o período. Se se referir ao texto do link, e não ao fato de ser um link, escolha # 1. Se a extensão se referir ao link como um todo, escolha # 2. A menos que você explique o que a extensão representa, não há muito mais resposta do que isso. Ambos são elementos embutidos, podem ser sintaticamente aninhados em qualquer ordem.


Correto, ambos são elementos embutidos.
Chris

2

Pode ser importante se, por exemplo, você estiver usando alguma fonte de ícone de classificação. Eu tive isso agora com:

<span class="fa fa-print fa-3x"><a href="some_link"></a></span>

Normalmente, eu colocaria o intervalo dentro do A, mas o estilo não entraria em vigor até trocá-lo.


1

Pessoalmente, como desenvolvedor da web, só coloco um intervalo em uma tag âncora se estou tentando destacar uma seção do texto do link, como aplicar um plano de fundo a uma seção.


0

Funcionará em ambos, mas pessoalmente prefiro a opção 2, então o intervalo é "em torno" do link.


0

Semanticamente, acho que faz mais sentido, pois é um contêiner para um único elemento e, se você precisar aninhá-los, isso sugere que mais do que o elemento estará dentro do externo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.