2010-04-14 1 views
13

Таким образом, мы обязаны использовать следующий порядок для CSS якоря псевдоклассыCSS: а: звено против всего (без: связующей части)

a:link { color: red }  
a:visited { color: blue } 
a:hover { color: yellow } 
a:active { color: lime } 

Но мой вопрос зачем с а : ссылка? Скорее всего, есть какие-либо преимущества выше (кроме, возможно, ясность) по:

a { color:red; } /* notice no :link part */ 
a:visited { color: blue; } 
etc.,etc. 

ответ

13

:link выбирает непосещенные ссылки, то есть: якоря с атрибутом href, которые не посетили в браузере (по какому-либо определению по поставщик браузера имеет «посетил»).

Если он имеет :link то он никогда не будет соответствовать <h1><a name="foo">A foo to be linked to</a></h1>

(Хотя вы должны использовать <h1 id="foo">A foo to be linked to</h1> в эти дни.)

Кроме того, это делает его более ясным, что это для.

a   { color: orange } 
 
a:link { color: blue }  
 
a:visited { color: indigo } 
 
a:hover { color: green } 
 
a:active { color: lime }
<a>my anchor without href</a> 
 
    <br><br> 
 
    <a href="http://somelinkhere.com">my anchor without href</a>

(Они также имеют различные уровни specificity)

+0

можете ли вы объяснить, что эта позиция немного больше, пожалуйста? Не уверен, что понимаю. – Rob

+2

'a' соответствует всем якорям. 'a: link' соответствует якорям, которые не связаны ссылками. 'a: visited' соответствует якорям, которые являются посещенными ссылками. '' является якорем, который не является ни какой-либо ссылкой. – Quentin

+1

@Quentin: Действительно? Я не могу найти это в спецификациях. – feklee

8

Просто "а" относится ко всем возможным ссылкам (непосещенных, посещены парил, и активный), в то время как «а: ссылка "относится только к нормальным нераскрытым ссылкам.

Если вы используете «a» вместо «a: link», вы устанавливаете ссылки по умолчанию для ВСЕХ ссылок по умолчанию для всех, что установлено «a». В этом конкретном случае, поскольку вы указываете каждый возможный псевдокласс, по существу не имеет значения, говорите ли вы «a: link» или просто «a»

Итак, в первой группе, где вы выписываете все псевдоклассы (a : ссылка, а: посетил и т.д.), вы указываете в CSS для каждого возможного случая ВНУТРИ «а»

a:link { color: red }  //set unvisited links to red 
a:visited { color: blue } //set visited links to blue 
a:hover { color: yellow } //set hovered links to yellow 
a:active { color: lime } //set active links to lime 

Во второй группе, где вы просто пишете «а», вы на самом деле настройки CSS по умолчанию для всех ссылок на то, что вы пишете в первой строке, затем переопределите CSS для других псевдоклассов

a { color: red }   //set ALL links to red! 
a:visited { color: blue } //hm, never mind, let's set visited links to blue 
a:hover { color: yellow } //hm, never mind, let's set hovered links to yellow 
a:active { color: lime } //hm, never mind, let's set active links to lime 
+0

': link' не соответствует * только * unvisited ссылкам, он соответствует ** всем ** ссылкам. – OdraEncoded

+0

@OdraEncoded ': link' does _not_ всегда соответствует _all_ ссылкам, например. ': visited' и' a' имеют приоритет (в указанном порядке). ': link' будет соответствовать только * all * ссылкам (в какой-то степени), если не совпадают ни': visited', ни 'a'. Поэтому более вероятно, что ': link' будет соответствовать только не указанным ссылкам '. – WynandB

+1

@Wynand ': link' ** всегда соответствует всем ссылкам **. ': visited' имеет более высокий приоритет, да, но если есть': link' и ': visited', то ** оба ** совпадают и эффекты селектора': visited' применяются после ': link' селекторные эффекты. Точно так же, как в любом другом случае с несколькими вариантами выбора. В CSS нет такой вещи, как один селектор, не соответствующий, потому что существует другой селектор. http://jsfiddle.net/z9X54/1/ – OdraEncoded

1

http://www.w3schools.com/css/css_pseudo_classes.asp

: ссылка есть, когда ссылка не указана. Поэтому, когда есть якорь с атрибутом href, и пользователь никогда не был на странице за якорем.

+0

Это не отвечает на вопрос. – Quentin

+0

@Quentin На самом деле, этот ответ на месте. – WynandB

+0

@Wynand нет, это не так, ': link' соответствует более чем невидимым гиперссылкам. – OdraEncoded

0

Селектор :link - это псевдоэлементный селектор для гиперссылок, любой элемент, являющийся гиперссылкой, будет сопоставляться. Селектор a будет соответствовать «только» опорным элементам.

Обычно, каждый элемент a также гиперссылка, и я не знаю себя какой-либо способ, чтобы создать гиперссылку в HTML без использования якоря, так что вы, вероятно, можно использовать любой из них в большинстве случаев ,

Однако использование только a будет соответствовать элементам привязки, которые не являются гиперссылками.Например, якорный элемент, написанный таким образом, <a name=sign-up>Sign up form</a> не будет соответствовать элементу псевдо-элемента гиперссылки :link, но будет соответствовать селектору a.

Смежные вопросы