Что делает [href ^ = "..." ] в CSS?
Я использовал CSS раньше, и я наткнулся на нижеприведенный стиль CSS, не знаю, что он делает.
a[href^="http:"] {
background: url(img/keys.gif) no-repeat right top;
}
a[href^="http://mysite.com"], a[href^="http://www.mysite.com"] {
background-image: none; padding-right:0;
}
Ответы
Ответ 1
a[href^="http:"]
Выбирает элемент <a>
, значение атрибута href
начинается с http:
.
Например:
p[title^="para"] {background: green;}
Соответствует следующему:
<p title="paragraph"> This paragraph should have a green background. </p>
Ответ 2
Это один из селекторов атрибутов соответствия подстрок, доступных в CSS3. Он сопоставляет ссылки с атрибутами href
, значения которых начинаются с данной строки.
Чтобы проиллюстрировать, мы возьмем ваш пример CSS и добавим некоторые значения по умолчанию:
a {
background: none; padding: 0 1em;
}
a[href^="http:"] {
background: url(img/keys.gif) no-repeat right top;
}
a[href^="http://mysite.com"], a[href^="http://www.mysite.com"] {
background-image: none; padding-right:0;
}
И создайте с ним следующий HTML-код. Стили выходных данных суммируются в комментариях:
<ul>
<!-- [1] No background, 1em left and right padding -->
<li><a href="/index.php">My site page</a></li>
<!-- [2] Background, 1em left and right padding -->
<li><a href="http://example.com">External link</a></li>
<!-- [3] No background, no right padding -->
<li><a href="http://mysite.com">My site base URL without www</a></li>
<!-- [4] No background, no right padding -->
<li><a href="http://www.mysite.com">My site base URL with www</a></li>
<!-- [5] No background, no right padding -->
<li><a href="http://mysite.com/page.php">A page in my site with base URL</a></li>
</ul>
Что происходит?
-
Выбрано только a
Этот атрибут href="/index.php"
не начинается с http:
или других значений.
Нет фона, но есть левое и правое дополнение.
-
Выбрано только a[href^="http:"]
Этот атрибут href="http://example.com"
начинается с http:
, но не начинается с http://mysite.com
.
Есть как левое, так и правое заполнение и фоновое изображение.
-
Выбрано a[href^="http:"]
и a[href^="http://mysite.com"]
Этот атрибут href="http://mysite.com"
начинается с http:
и далее начинается с http://mysite.com
.
Так как второй селектор перекрывает первый селектор, фоновое изображение и правое заполнение удаляются.
-
Выбрано a[href^="http:"]
и a[href^="http://www.mysite.com"]
Этот атрибут href="http://www.mysite.com"
начинается с http:
и далее начинается с http://www.mysite.com
(обратите внимание на www).
Так как второй селектор перекрывает первый селектор, фоновое изображение и правое заполнение удаляются.
-
Выбрано a[href^="http:"]
и a[href^="http://mysite.com"]
Этот атрибут href="http://mysite.com/page.php"
начинается с http:
и далее начинается с http://mysite.com
.
Обратите внимание, что по сравнению с третьей ссылкой атрибут в этом содержит больше, чем просто базовый URL; однако ^=
указывает, что значение атрибута должно начинаться с базового URL вашего сайта, а не =
, что означает "выбирать ссылки, которые указывают только на http://mysite.com
". Следовательно, эта ссылка соответствует второму селектору.
Так как второй селектор перекрывает первый селектор, фоновое изображение и правое заполнение удаляются.
Ответ 3
Это атрибут-начинается с селекторами, они будут выбирать элементы <a>
с атрибутом href
, начиная с этого значения, например a[href^="http:"]
соответствует любым якорям с href
, начиная с href="http:...."
, например:
<a href="http://www.google.com">Test</a> <!-- would match -->
<a href="#element">Test</a> <!-- wouldn't match -->
Ответ 4
Для каждой ссылки, параметр "href" начинается с "http:", установите фон на ключевое изображение (без повторения, расположенного в правом верхнем углу).
Для каждой ссылки, параметр "href" начинается с "http://mysite.com" или "http://www.mysite.com", установите фоновое изображение в ничто (а правая сторона - 0).
Для меня это похоже на умный трюк CSS, который заставит ваших пользователей знать, когда они покидают ваш сайт через внешнюю ссылку, отображая ключевое изображение.
(Я думаю, что буду использовать его в будущем.:)
Ответ 5
Правила говорят, согласно документам W3C:
- Все привязки, которые имеют атрибут
href
, который начинается с http:
- Все привязки, которые имеют атрибут
href
, начинающийся с http://mysite.com
или http://www.mysite.com
Ответ 6
Это селектор атрибутов.
Часть ^ = означает, что атрибут href якорных тегов должен начинаться с http:
в вашем первом примере.