2014-09-12 1 views
-4

Я знаю, мы используем <a>, чтобы сделать гиперссылку.Что такое (действительно) использование тега <a>?

Но то, что я не знаю, почему мы используем <a>, почему же это не возможно, чтобы просто добавить href к <div>, так что это становится гиперссылкой?

Конечно, я могу сделать это с помощью javascript, но мне любопытно узнать о теории и, возможно, об интересных аргументах.

+0

Многие хорошие вопросы порождают определенное мнение, основанное на опыте экспертов, но ответы на этот вопрос будут, как правило, почти полностью основаны на мнениях, а не на фактах, ссылках или конкретном опыте. – MarsOne

+0

Почему бы не добавить 'src' на' div' вместо 'img'? Потому что это «по дизайну». –

ответ

1

Я думаю, что это довольно сложный вопрос для ответа. Возможно, лучший подход к несколько разумному ответу будет заключаться в том, чтобы сосредоточиться на том, почему должно быть не, как описано, чем это возможно.

Прежде всего, речь идет о HTML-языке разметки HyperText. Давайте рассмотрим это как язык описания ресурса. Имея в виду свою историю, давайте также предположим, что с точки зрения ресурсов мы говорим о простых текстовых документах.

Итак, теперь есть очень простые понятия для описания такого документа семантически, например «это заголовок» (h1), «это абзац» (p), «это список» (li), и поэтому на.

Одна из этих концепций - это ссылка, которая используется для ссылки на другой ресурс. Существует несколько типов ссылок, например. г. для ссылки на таблицу стилей (ссылку), изображение (img) или другой документ (форму).

А-элемент семантически (!) Связан с этой концепцией и представляет/описывает взаимосвязь между двумя ресурсами. Таким образом, вы бросаете якорь из источника в пункт назначения и, возможно, описываете это отношение. Это как рисование линии между двумя объектами в диаграмме UML и описание того, как они связаны.

Таким образом, элементы <p> и <a> описывают совершенно разные понятия. Он объявляет абзац в тексте, а другой описывает взаимосвязь между ресурсами.

Итак, с семантической точки зрения, что-то вроде <p href="other-page.html">Some Text</p> означает? Что абзац в тексте связан с другим ресурсом ...? Что пункт описывает взаимосвязь между ресурсами? Это даже имеет смысл? В реальной книге, которая была бы как абзац на странице 1, говоря «эй, я связан со стр. 123». Но тогда это будет не абзац, а описание отношения - и у нас уже есть эта концепция, реализованная тегом <a>.

Это в основном, как говорят

<p> 
    <a href="other-page.html"> 
     I'll just put the whole relationship description in a paragraph. 
    </a> 
</p> 

Какой смысл? Абзац - это абзац, а описание ссылки - это описание ссылки. Параграф может содержать ссылку, но не только состоять из ссылки, потому что это не имеет большого смысла с точки зрения семантики.

Но вернемся к будущему сейчас. В настоящее время мы имеем дело с более сложными документами и больше фокусируемся на пользовательском интерфейсе и как сделать его привлекательным, а не семантикой. Пока это выглядит хорошо, нам (в основном) все равно, если текст завернут в p, a div, article или span - в конце концов, это просто описание, и в большинстве случаев нам просто нужно что-то сделать ссылка из CSS или JS.

Таким образом, люди не заботятся о разметке, но компьютеры это делают.Та же семантика по-прежнему верна, и они являются единственным способом для компьютеров, таких как бот Google, выяснить, в какой части документа они имеют дело и как его обрабатывать (например: «эй, это статья, это, вероятно, самая важная часть "или" это только нижний колонтитул, не обращайте внимания на дублированный контент ").

В первые дни не существовало никакого способа «стилизовать» элементы, поэтому, вероятно, он выглядел несколько иначе в разных пользовательских агентах. Пользовательский агент просто знал: «Хорошо, это заголовок, давайте сделаем это полужирным шрифтом и немного увеличим размер шрифта».

Таким образом, у каждого элемента есть своя цель и отдельные проблемы. И когда вы пытаетесь объединить их, вам не нужно будет комбинировать свойства обоих (дублирующие атрибуты, различную обработку в браузерах, ...), но вам также придется описать, что это значит. И вы, вероятно, узнаете, что это не имеет никакого смысла.

Я надеюсь, что хотя бы этот ответ имел какой-то смысл и что он каким-то образом отвечает на ваш вопрос.

+0

это разъясняет намного больше, чем бесполезные предыдущие комментарии. большое спасибо:) –