Проліт всередині якоря чи якор всередині прольоту або не має значення?


109

Я хочу гніздо spanта aмітки. Повинен я

  1. Покладіть <span>всередину<a>
  2. Покладіть <a>всередину<span>
  3. Не має значення?

Відповіді:


110

3 - Не має значення.

Але я, як правило, використовую тільки <span>внутрішній, <a>якщо це лише для частини вмісту тегу, тобто

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

Замість:

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

Що, очевидно, просто повинно бути:

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

1
Нещодавно я зіткнувся з проблемою пробілу з текстом-переповненням: еліпсис та переповнення: приховано, що можна було б вирішити, додавши елемент вбудованого блоку до моєї кнопки навігації. Я закінчив <a> <span> Текст </span> </a>. Тому я думаю (або сподіваюсь;)) це нормально робити це, коли вам справді потрібно.
Хитрий Фаталіст

Я піду на варіант 2, бо це має значення. Якір повинен бути призначений лише для кріплення, а не для вмісту елементів (найкраща практика). Уявіть ситуацію, коли ви робите клацаючу плитку, а якор є батьківським елементом компонента плитки, а всередині компонента - посилання на зображення та інші зображення. Гусеничний гугл Google зійде з розуму і з часом це не добре для вашого сайту.
Імам Букс

33

Цілком справедливо (принаймні за стандартами HTML 4.01 та XHTML 1.0) вкладати або <span>всередині, <a>або <a>всередині <span>.

Щоб довести це самому, ви завжди можете перевірити його у валідаційній службі W3C MarkUp

Я спробував перевірити:

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

А також те саме, що вище, але з <a>внутрішньою частиною<span>

тобто

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

з обома HTML 4.01 і XHTML 1.0 доктрипами, і обидва успішно пройшли перевірку!

Потрібно пам’ятати лише про те, щоб закрити теги у правильному порядку. Тож якщо ви починаєте з <span>тодішнього <a>, перед тим, як закрити, <a>спочатку закрийте тег, <span>і навпаки.


20

Не має значення - їм обом дозволено всередині один одного.


Але <a> - рівень блоку, а <span> - елемент рівня вбудованого рівня, і елемент рівня блоку не може входити всередину вбудованого елемента. Я думаю, це було у валідації w3c
Jitendra Вяс

26
Ні, обидва є в рядку
Грег

16

це залежить від того, що ви хочете розмітити.

  • якщо ви хочете посилання всередині діапазону, покласти <a>всередину <span>.
  • якщо ви хочете щось розмітити за посиланням, покладіть <span>на<a>

16

SPAN - це вбудований контейнер GENERIC . Не має значення, чи aзнаходиться всередині, spanчи spanвсередині, aоскільки обидва є вбудованими елементами. Не соромтеся робити все, що вам здається логічно правильним.


2

Це залежить від того, для чого проміжок. Якщо це стосується тексту посилання, а не факт, що це посилання, виберіть №1. Якщо проміжок посилається на посилання в цілому, виберіть №2. Якщо ви не поясните, що означає проміжок часу, відповіді не так багато. Вони обидва вбудовані елементи, можуть бути синтаксично вкладені в будь-якому порядку.


Правильно, вони обидва вбудовані елементи.
Кріс

2

Це може мати значення, наприклад, якщо ви використовуєте якийсь шрифт значка. У мене це було саме зараз:

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

Зазвичай я б поклав проліт всередину A, але стайлінг не вступив у дію, поки не поміняв його кругом.


1

Особисто я, як веб-розробник, коли-небудь розміщую проміжок у тезі прив’язки, лише коли намагаюся виділити розділ тексту посилань, наприклад, застосувати тло до одного розділу.


0

Він працюватиме і те, і інше, але особисто я вважаю за краще варіант 2, тому проміжок знаходиться "навколо" посилання.


0

Семантично я думаю, що має більше сенсу, як контейнер для одного елемента, і якщо вам потрібно вкласти їх, то це говорить про те, що більше, ніж елемент буде всередині зовнішнього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.