CSS подмена текста картинкой при верстке
Продолжаем пошаговые уроки верстки начинающим. Захотелось мне как-то для своего литературного блога сделать красивый, оригинальный заголовок. Понятно, что реализовать такое было реально только с использованием красивых шрифтов, я взял подборку, опубликованную когда-то на Дизайн Мании — красивые русские шрифты. Разместил на сайте без проблем.
Но меня слегка смутило отсутствие текстового заголовка, в частности с точки зрения поисковых систем. Да, я не использую h1 для заголовка блога на всех страницах, там у меня в этот тег попадают лишь тайтлы постов. Но на главной было бы неплохо его иметь, да и просто текст в шапке, который будет прочтен ПС первым, неплохо чтобы сообщал им название всего проекта. На 100% не уверен насчет привередливости и мнения поисковиков, но мне лично такое оформление кажется правильным.
В общем, перед нами поставлена задача CSS подмены текста через картинку, то есть заголовок располагается на заднем плане, а над ним изображение. Таким образом, текстовая информация видна ПС, а люди наслаждаются красивым логотипом для проекта.
Мною было найдено сразу несколько вариантов реализации данной задачи. Они различаются незначительно, но каждый из авторов вроде как мастер своего дела, и я решил опубликовать все решения.
Вариант подмены изображения номер 1 (самый простой)
<h1 class="technique-eight"> <span></span>Заголовок проекта </h1> |
h1.technique-eight { width: 350px; height: 75px; /* Размеры нужного нам блока */ position: relative; } h1.technique-eight span { background: url("images/header-image.jpg"); /* Наша картинка */ position: absolute; width: 100%; height: 100%; } |
Для литературного блога я использовал именно этот вариант. Спасибо за описание реализации автору данной статьи.
В комментариях к этой реализации посоветовали добавить опцию overflow:hidden чтобы «при увеличении шрифта снизу ничо не полезло». Нечто подобное можно наблюдать у варианта номер 2 под названием правильная замена на картинки.
<h1><a href="#">Вау! Я логотип!<span></span></a></h1> |
h1 a{ width:250px;height:50px; overflow:hidden; display:block; position:relative; } h1 a span{ position:absolute; width:250px;height:50px; top:0; left:0; background:transparent url(../img/kartinka.png) no-repeat 0 0; } |
HTML код остался практически таким же, а вот в CSS добавилось немного больше строк. В том числе и overflow:hidden.
Есть еще способ (вариант 3), которые прячет текст из поля видимости страницы на мониторе.
<h1 class="main-logo">Название логотипа или компании </h1> |
h1.logo { width: 300px; height: 50px; background: url(images/logo.jpg); text-indent: -9999px; } |
Но мне лично он не очень нравится, не люблю решения, где применяются большие «отступы в никуда». Кстати, там же в статьей есть немного рассуждений относительно реакции поисковых систем на такие хитрости CSS. Вроде как они не против, если это используется в благих целях — добавить красоты проекту.
Если у вас есть какие-то замечания или советы по коду, с удовольствием выслушаю в комментариях. Мне лично больше всего нравится вариант номер 2, попробую его на днях реализовать где-то, хотя и первый тоже ничего.
P.S. MakeUp интернет магазин косметики доставка по Украине.
Предлагаем брендинг для вашей компании или бизнеса.
Не последуют ли санкции того же Яндекса за использование такого метода на сайте ?
Поскольку Ваш блог о CSS, то не могли бы Вы написать пост о том, как делать счетчики прозрачными ? Это довольно интересная и актуальная тема. Информация есть на этот счет, но слишком краткая. В любом случае спасибо!
Бронников, Яндекс в этом плане — абсолютно непредсказуемая вещь, если что-то и последует негативное, то будет полностью на его совести. В целом, думаю, ничего это повлечет и все будет нормально.
Про счетчики нужно подумать, я когда-то такое делал, но уже плохо помню. Постараюсь написать пост по этой теме.
/* Прозрачность 60%, т.е. мы видим только 40% цвета */
.banner a img {
filter:alpha(opacity=40);
-moz-opacity: 0.4;
opacity: 0.4; }
/* При наведении, прозрачность уходит и баннер становится видимым */
.banner a:hover img {
filter:alpha(opacity=100);
-moz-opacity: 1.0;
opacity: 1.0; }
there is no need to worry about search bots…. I’d suggest having this kind of html code:
/*
[img src=»anyimg.jpg» alt=»any information» /]
*/
…in this case we can put “Название логотипа или компании” in alt attribute.
А как на эти подмены будет реагировать Яндекс?
Как и все нововедения)) Яша реагирует непредсказуемо xD
Я использую немного другой способ с применением CSS.
Заголовок блока
И в стилях прописываю:
H1{
text-indent:-9999px;
width:250px;
height:50px;
background:url(../img/kartinka.png) no-repeat 0 0;
}
Данный способ прекрасно работает.