Выделение внешних ссылок при помощи CSS

23.09.2008 | Рубрики: Верстка
Тэги: , , ,

Во-первых, о чем речь? Внешние ссылки — ссылки на другие сайты, внутренние ссылки — соответственно, на внутренние страницы собственного сайта. С внешними ссылками все понятно. Если мы ссылаемся на Гугль, например, то пишем полный адрес http://www.google.com/. Префикс http:// и означает, что ссылка внешняя.

Внутренние ссылки также могут начинаться с этого префикса. Тогда они будут называться абсолютными. Если же мы напишем ссылку в виде: /about.html, то это будет уже относительная ссылка, которая показывает, что путь к странице about.html лежит от корня сайта.

Во-вторых, зачем их (внешние ссылки) выделять? Да просто для информирования посетителя, что ссылка идет на другой ресурс. Это что-то вроде сетевого этикета.

Реализовать такое выделение можно, используя новые возможности, которые предоставляет CSS3. Смысл таков: когда мы в тексте вставляем ссылку на внешний ресурс, то она автоматически добавляет иконку-стрелку externallink. Чтобы это заработало, нужно в листе стилей CSS для тэга «а» прописать следующее правило:

a[href^="http://"]:not([href*="websovet.com"])::after {
content: url(external.png);
}

Поясним, что тут и зачем. Когда в тексте появляется внешняя ссылка (с префиксом http), то данный код сразу за ссылкой (::after) подставляет в строку картинку (content: url(external.png);). При этом исключается наш собственный домен — :not([href*=”websovet.com”]). Таким образом, если вы ссылаетесь на чужой сайт, то стрелка появляется, а если на страницы собственного, то нет.

Все замечательно, кроме одного: эту конструкцию поддерживают не все браузеры. Работает в Firefox, IE 7, Opera 9,5.

Пример 1

Другим решением, которое работает во всех в некоторых более ранних браузерах (например, Опера 9,1), будет следующая запись:

a[href^="http://"] {
background: url(external.png) no-repeat 100%;
padding: 0 10px 0 0;
color: #069;
}

Здесь мы просто показываем, что все ссылки с префиксом http будут иметь в качестве фона картинку со стрелкой. Значение в 100% помещает картинку в крайнем правом положении. Однако такой код не распознает где ссылка на внешний ресурс, а где на свой собственный. Поэтому придется все свои внутренние ссылки прописывать в виде относительных.

Пример 2

Лирическое отступление:

Не доводилось еще участвовать во флэшмобе, однако ж раз прислали приглашалку, то отпишусь кратенько. Итак, Найкрис передал мне эстафету от Настасьи, а затейница всего этого Татьяна. Вопрос звучал так: «Что вы любите, а что нет?» (по 5 ответов). Отвечаю:

Люблю.
1. Себя
2. Море и яхты
3. Небо и солнце
4. Автомобили
5. Свежесть и легкость

Не люблю.
1. Бездействие
2. Совок
3. Жадность
4. Духоту
5. Дешевый и жутко вонючий парфюм

Это навскидку. Насобирать можно конечно цельную портянку как того, так и другого. Передаю эстафету блогам Re.Актив, CSSing и Блогу для вебмастеров.

Комментарии (27)

  1. cheke 24.09.2008

    Второй пример не работает в семействе ie (5-8)

    Ответить

  2. Игорь Квентор 24.09.2008

    Хм… и правда, в 6 ИЕ не работает. Про 8-й говорить не буду, не видел его еще, а в 7-м работать должно.

    Ответить

  3. cheke 25.09.2008

    У меня 7-ка, не отображает.
    Все остальные версии можно проверить на browsershots.org

    Ответить

  4. Илья 26.09.2008

    The server at _www.zzzzz.ru sent a HTTP redirect. Your web address has been updated. Please try again.
    Вот что вижу, когда иду сюда browsershots.org И что это значит? Подскажиет, пожалуйста.

    Ответить

  5. Илья 26.09.2008

    Извините, трудно было представить, что такой сайт существует!Жаль, нельзя сразу внести исправления в свой комментарий! (Нужная функция!)

    Ответить

  6. Илья 26.09.2008

    browsershots.org выдал такую информацию, что не знаю что и делать! Какая мешанина со шрифтами! Совершенно не так отражается во многих браузерах.
    Знаю, что статистика популярности у нас не та, что на западе, и все же на что ориентироваться, на новые из популярных и самые распространенные - а какие они?

    Ответить

  7. Viggo 26.09.2008

    Илья, загрузил твой зззз на брозершотс и выбрал просмотр в трех браузерах, через несколько минут скриншот показали только для файрфокса, а ие и опера не пришли скриншоты. Сервис работает…

    Ответить

  8. Илья 26.09.2008

    Да,работает сервис прекрасно! Мне выдали 49 скриншотов. Некоторые показали такое безобразие на моем www.vseuch.ru, что стало очень грустно, и появилось желание начать все с нуля.

    Ответить

  9. Игорь Квентор 26.09.2008

    Илья, не огорчайтесь. Начать с нуля - не самое плохое желание. Скорее наоборот. Я свою первую Баечку.Ру переделывал около 4 раз, и это только первый вариант макета. Про остальные не говорю. Это в любом случае полезная практика, если вы хотите в дальнейшем заниматься веб-мастерингом. Так в памяти откладываются нужные знания и навыки.

    Ответить

  10. Илья 26.09.2008

    Спасибо за поддержку. А как двигается книга?

    Ответить

  11. Игорь Квентор 26.09.2008

    Хорошо двигается, неспешно :) Готов уже макет. Показывать раньше времени не буду. Скажу только, что будет изначально предусмотрена вставка стандартных баннеров, облако тэгов и пр. Все нужные плагины так же добавлю в виде архива.

    Ответить

  12. mexboy 21.10.2008

    а CSS 3 вообще какие версии Эксплорера поддерживают?

    Ответить

  13. Игорь Квентор 21.10.2008

    Я думаю, что говорить о поддержке CSS3 еще рано. Тем более что касаемо ИЕ. 7 версия этого браузера едва научилась делать вещи из CSS2, которые уже давным давно доступны в других браузерах.
    Вот здесь можно посмотреть небольшую таблицу по поддержке различными браузерами тех или иных функций CSS:
    http://www.quirksmode.org/css/contents.html

    А вот это, думаю, будет более точным ответом на ваш вопрос:

    http://pepelsbey.net/2008/06/inevitable-exception/

    Ответить

  14. Ник 16.11.2008

    Здравствуйте! Не знал, куда еще написать, но эта запись больше всего подходит по теме. У меня есть вопрос :
    Допустим, есть сайт www.name.ru, и страница с именем name. То есть, www.name.ru/name. Я понимаю, что name, это по идее, папка, так? Но ведь в папке должен быть какойто файл html или php, чтобы эта страница запускалась… Но если сделать в этой папке файл name.html, то ссылка будет выглядеть так : www.name.ru/name/name.html. Вот мой вопрос : Как сделать, чтобы в браузерной строке не отображался этот name.html или name.php, как у вас на этом блоге, да и на многих других. Надеюсь, понятно изложил суть проблемы :) Заранее спасибо

    Ответить

  15. Ник 19.11.2008

    Вобщем, я имел ввиду, как сделать, чтобы при переходе по ссылке в другой раздел сайта, например Images, ссылка в адресной строке браузера отображалась так :
    www.site.ru/images
    Я пробовал разместить в нужной папке файл index.html, думая, что браузер автоматически перейдет на нее, но нет. Появляется окно с выбором нужного файла :(
    Помогите, пожалуйста.

    Ответить

  16. Игорь Квентор 19.11.2008

    Ник, я вас понял. Вам нужно после имени папки добавить слэш /
    Тогда браузер будет искать в этой папке файл index, либо default.

    Ответить

  17. Ник 19.11.2008

    Хм, я ставил слэш, файл делал с именем index.html, но в опере опять появлялось это окно с выбором нужного файла, а в ИЕ и вовсе открывается проводник с этой папкой :(
    И еще :
    Допустим, у меня есть папка images в корневом каталоге сайта. Если все картинки положить в эту папку, и в листе стилей и в хтмл-файле указать путь как «images/pict.jpg», то в странице index.html, то есть главной, все эти картинки отображаются.
    Но в странице, лежащей в отдельном каталоге эти картинки не отображаются. При выяснении обстоятельств я понял, что путь указывается как (сайт/этот_самый_каталог/images), при полном указании пути всё равно, весь путь указывается как лежащие в этом каталоге директории. А не в корневом каталоге сайта :( Извините за много вопросов, но очень хочется понять, вроде бы такая мелочь, но устраивать беспорядок и все файлы складывать в одну папку не хочется. Заранее спасибо!

    Ответить

  18. Игорь Квентор 19.11.2008

    Если указывать путь как www.site.ru/images/
    то должен открываться файл index, если он конечно лежит в этой папке images.

    По второй части вопроса: чтобы картинки открывались со всех внутренних страниц, нужно поставить слэш перед именем папки images, вот так:
    “/images/pict.jpg”
    В этом случае браузер станет искать их от корня сайта

    Ответить

  19. Kisuhvostik 24.05.2009

    Привет =))
    Если можно, смените пожалуйста ссылочку на слове «Татьяна». У нас поменялся домен, мы переехали на kisuhvostik.ru =)) остальной адрес в ссылке остался неизменным!!! заранее спасибо))

    Ответить

  20. Игорь Квентор 25.05.2009

    Окей! :)

    Ответить

  21. Марина 07.08.2010

    Игорь, извините, может не по теме, но переискала у Вас и не нашла.ИНТЕРЕСУЕТ тег noindex, дел в том, что я на одном дамском форуме меняюсь ссылками и мне 3 человека сделали замечания, что у меня счетчики в подвале не заключены в этот тег.

    Ответить

  22. Марина 07.08.2010

    Извините, почему-то не получилось дописать вопрос про noindex.Хочется знать Ваше мнение по этому вопросу.Я стала смотреть исходный код на многих других сайтах и вообщем-то мало, кто так делает.Надо ли это и зачем.Заранее благодарю за ответ.

    Ответить

  23. Игорь Квентор 08.08.2010

    Здравствуйте, Марина! Счетчики так же имеют в своем коде исходящую ссылку. По всей видимости ваши респонденты беспокоятся о том, что общее количество исходящих ссылок на вашем сайте велико. Чем больше исходящих ссылок, тем вес (значимость, “жирность”) каждой из них пропорционально уменьшается. Поэтому и советуют скрыть часть из них (те же счетчики) указанным тэгом.
    Не скрывают ссылки те, кто не заморачивается c ТИЦ и pr

    Ответить

  24. Марина 17.08.2010

    Спасибо за ответ, Игорь!Теперь полная ясность.
    У меня еще вопрос по ссылкам.Мне на том же форуме один человек написал, чтобы я заключила в noindex следующие ссылки и приложил выборку из какого-списка моих ссылок, вот фрагмент
    №: 162
    Тип ссылки: внешняя
    Адрес: хттп://wordpress.org/
    Текст: WordPress.org
    noindex: нет
    nofollow: нет
    Индексация: -
    я ему задала вопрос, где он это посмотрел, но он, к сожалению, на форуме с тех пор не появлялся.Может Вы знаете, где это можно посмотреть в таком виде.Меня озадачило, что это за номера, у меня исходящих внешних, думаю, не больше 50-ти?
    и еще, у меня почему-то очень медленно стал грузиться именно Ваш сайт, особенно долго висит на “соединение с s1 rotoban.ru”, попробую куки почистить.Очень огорчительно это, когда привык по каждому чиху у Вас смотреть.:(
    с уважением,

    Ответить

  25. Марина 17.08.2010

    Извините, Игорь, только отправила вопрос, как получила ответ от товарища, что “у него программа Язл - лицензия. А, вообще, есть и бесплатные сервисы: www.pr-cy.ru”:(
    с ув,

    Ответить

  26. Игорь Квентор 18.08.2010

    Здравствуйте, Марина! Да, указанный сервис многое может рассказать о сайте.
    По вашему вопросу о Вебсовете: верно, на rotoban.ru какие-то проблемы с загрузкой баннеров, поэтому я сейчас их коды совсем убрал.

    Ответить

Трэкбеки

Оставить комментарий