Задача
Задать особое оформление для внешних ссылок, имеющих атрибут target=»_blank».
Такой прием используется на многих сайтах. Внешняя ссылка, как правило, выделяется небольшой пиктограммкой. Например, так это выглядит на Википедии:
Решение
Первое, что приходит в голову: прописать дополнительный класс — и готово! Например так:
CSS:
.outLink{
background:url(images/outLink.gif) right 2px no-repeat;
padding-right:14px;
}
HTML:
<a href="#" title="внешняя ссылка" target="_blank" class="outLink">Ссылка</a>
Но введение дополнительного класса будет тут очень неудбно! Ведь пользователю сайта придеться постоянно следить за этим, добавляя ссылки. Более того, этот класс абсолютно лишний! Оформление можно привязать прямо к атрибуту target.
CSS:
a[target="_blank"]{
background:url(../images/outLink.gif) right 2px no-repeat;
padding-right:14px;
}
HTML
<a href="#" title="внешняя ссылка" target="_blank" >Ссылка</a>
Остался еще один нюанс — наш горячо любимый ie6! Для него прописываем в CSS:
* html a{
z-index: expression( /* оптимизированный expression, который сработает только при загрузке страницы */
runtimeStyle.zIndex = 1,
target == "_blank" ? (className += "outLine") : 0 /* добавляем нужный класс */
)
}
* html a.outLine{
background:url(../images/outLink.gif) right 2px no-repeat;
padding-right:14px;
}
Проверено в:
Плюсы метода:
- достаточно прост
- оптимизированный expression отработает только один раз при загрузке страницы
- дает возможность оставить более чистый (без лишних классов) код программистам и поисковым роботам
Недостатки:
- не проходит валидацию
Теги: CSS приемы