Здравствуйте, дорогие друзья!
В данной статье я покажу вам как сделать плавное подчёркивание ссылки при наведении.
Этот интересный эффект можно использовать как для ссылок, находящихся внутри определённого блока, так и для всех ссылок на сайте. Данный эффект при наведении создаётся при помощи CSS.
Навигация по статье:
И будет он состоять всего из нескольких строчек кода.
Для того чтобы посмотреть как выглядит плавное подчёркивание ссылки при наведении просто наведите курсор на одну из ссылок ниже:
Как создать эффект плавного подчёркивания ссылки при наведении?
Предположим у Вас есть блок с классом «link» и внутри него есть ссылки, для которых нужно применить данный эффект при наведении.
1 2 3 4 5 |
<div class="link"> <a href="#">Ссылка 1</a> <a href="#">Ссылка 2</a> <a href="#">Ссылка 3</a> </div> |
Сначала нам нужно задать для этих ссылок несколько CSS свойств, для того чтобы к ним можно было применить данный эффект при наведении. Я оставила комментарий возле каждого свойства так что вы сможете поменять некоторые параметры, чтобы ссылки лучше подходили под дизайн вашего сайта.
1 2 3 4 5 6 |
.link a { text-decoration:none; /*Убираем стандартное подчёркивание ссылки если оно ещё не убрано*/ display: inline-block; /*делаем чтобы наша ссылка из строчного элемента превратилась в строчно-блочный*/ line-height: 1; /*Задаём высоту строки (можно в пикселях)*/ color:#2F73B6;/*Задаём цвет ссылки*/ } |
Теперь для того чтобы создать плавное подчёркивание ссылки при наведении нам нужно при помощи CSS добавить псевдоэлемент after. Именно этот элемент и будет представлять собой плавно появляющуюся линию подчёркивания. Для него нам нужно прописать следующие свойства:
1 2 3 4 5 6 7 8 |
.link a:after { display: block; /*превращаем его в блочный элемент*/ content: ""; /*контента в данном блоке не будет поэтому в кавычках ничего не ставим*/ height: 3px; /*задаём высоту линии*/ width: 0%; /*задаём начальную ширину элемента (линии)*/ background-color: #225384; /*цвет фона элемента*/ transition: width 0.4s ease-in-out; /*данное свойство отвечает за плавное изменение ширины. Здесь можно задать время анимации в секундах (в данном случае задано 0.4 секунды)*/ } |
И на последнем этапе создания плавного подчёркивания ссылки нужно задать для песевдоэлемента after ширину 100% при наведении, а также при установленном курсоре. В этом нам помогут псевдоклассы :hover и :focus.
Выглядеть это будет так:
1 2 3 4 |
.link a:hover:after, .link a:focus:after { width: 100%; } |
То есть изначально наш псевлоэлемент имеет ширину 0%, а при наведении она плавно становится 100%.
Также можно сделать так чтобы при наведении на ссылку помимо эффекта плавного подчёркивания происходила также смена цвета ссылки.
Для этого дописываем следующее:
1 2 3 |
.link a:hover{ color:#225384; } |
Чтобы не сбивать вас с толку даю весь код вместе. В этом коде эффект плавного подчёркивания применится ко всем ссылкам на сайте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
a { text-decoration:none; /*Убираем стандартное подчёркивание ссылки если оно ещё не убрано*/ display: inline-block; /*делаем чтобы наша ссылка из строчного элемента превратилась в строчно-блочный line-height: 1; /*Задаём высоту строки (можно в пикселях)*/ color:#2F73B6;/*Задаём цвет ссылки*/ } a:after { display: block; /*превращаем его в блочный элемент*/ content: ""; /*контента в данном блоке не будет поэтому в кавычках ничего не ставим*/ height: 3px; /*задаём высоту линии*/ width: 0%; /*задаём начальную ширину элемента (линии)*/ background-color: #225384; /*цвет фона элемента*/ transition: width 0.4s ease-in-out; /*данное свойство отвечает за плавное изменение ширины. Здесь можно задать время анимации в секундах (в данном случае задано 0.4 секунды)*/ } a:hover:after, a:focus:after { width: 100%; } a:hover{ color:#225384; } |
После добавления данного кода просто сохраняете файл и всё! Всё очень просто не правда ли?! Вот за что я люблю CSS3! С его помощью можно за несколько минут создать очень интересные эффекты и при этом не нужно подключать дополнительных библиотек и т.д.
Куда вставлять весь этот код?
CSS код со всеми прописанными свойствами нужно вставить в CSS файл вашего сайта или вашей темы (если сайт работает на CMS)
Для WordPress этот файл будет находиться по адресу:
Для Opencart этот файл находится по адресу:
Надеюсь, что вам понравилась данная статья! Если это так, то я буду очень вам очень признательна, если вы поделитесь ссылкой на неё в соцсетях. Для вам просто нужно нажать на одну из кнопок соцсетей, которые находятся под этой статьей. Так вы поможете мне в развитии моего блога.
На этом у меня всё! Желаю вам успешной реализации данного эффекта у себя на сайте! До встречи в следующих статьях!
С уважением Юлия Гусарь
Юлия,здравствуйте.Спасибо.Все получилось. Такой вопрос — скажите,пожалуйста,как можно сделать так, чтобы выделялся блок и изображением при наведении как на этом сайте. http://www.keramoteka.ru/
Здравствуйте, Кирилл!
Это делается при помощи CSS. Например у Вас есть блок с классом «block», в котором находится изображение и текст. В CSS файле нужно прописать для него:
.block{
border: 5px solid #f1f1f1;
}
.block:hover{
border: 5px solid #FFC61A;
}
Вместо «#f1f1f1» ставите цвет, который будет изначально у рамки, а вместо «#FFC61A» — цвет, который будет при наведении. Толщину рамки вы можете регулировать изменяя значение 5px.
Юлия,Здравствуйте.Спасибо огромное.Все получилось.Вы супер.Очень много интересного и полезного уже применил,благодаря Вам.Спасибо.
Здравствуйте, Кирилл! И Вам спасибо! Заходите почаще :)
Юля, добрый день. Спасибо за Ваши уроки, все очень интересно, особенно интересно когда касаются уроки про CSS. Сейчас стоит задача- сделать такие эффекты при наведении ( как на этом сайте http://designa8.ru/blog ) Скажите, пожалуйста, как это можно сделать. Спасибо
Здравствуйте, Кирилл! Если Вы имеете ввиду эффект окрашивания изображения при наведении, то там всё просто. Создаётся блок для которого задаётся какой то фоновый цвет, например красный block {background: red;} . Потом внутри этого блока размещается изображение и при наведении для него изменяется прозрачность при помощи CSS свойства opacity, например так: .block img:hover{ opacity:0.7; } Получается что при наведении изображение начинает просвечиваться и виден фон блока в итоге изображение становится красноватым или другого цвета, в зависимости от того какой цвет фона будет задан для блока, внутри которого оно находится.
Здравствуйте,Юлия. Спасибо за ответ. Получилось применить, но хочется, чтобы при наведении на это фото,это описание (к фото) на прозрачном фоне передвигалось также, как на том сайте. Там фото ->на фото описание на прозрачном фоне на половину изображения->при наведении это писанию передвигается в сторону закрывая другую половину изображения. Спасибо большое.
Здравствуйте, Кирилл!
Для перемещения блока с текстом можно использовать свойство margin-left (для смещения блока с текстом влево). В обычном состоянии значение margin-left:-100px; а при наведении margin-left:0; плюс нужно использовать свойство transition: all 0.5s ease; чтобы появление было более плавным. Но нужно смотреть вёрстку и экспериментировать чтобы получить такой эффект.
Здравствуйте Юлия,
Почему в разных браузерах эффект по разному срабатывает? В хроме вообще не срабатывает остается все как было, в мозиле и яндекс браузере эффект сработал, пропал правый сайдбар, хотя в настройках ставлю правый сайдбар).
ps код ввел непосредственно в шаблоне http://prntscr.com/e0s9e0
сразу скажу что знаний у меня пока НОЛЬ, только начинаю
Здравствуйте, Дмитрий!
Проверила в разных браузерах. Вроде везде нормально работает кроме старых версий Internet Explorer, но они вообще из новых свойство мало что поддерживают. Возможно у Вас какие то проблемы с кроссбраузерностью самой темы. Нужно видеть сам сайт чтобы что то понять.
Здравствуйте, Юлия!
Я начинающий, нашел куда вставить код, но хочу уточнить: в этом коде , который Вы даете, я ничего не меняю или вместо надписей на русском языке , я должен написать свое — высоту строки,,,,, и т.д ?
Здравствуйте, Андрей! Менять русские надписи не нужно — это просто комментарии чтобы Вам было понятнее какая строка за что отвечает.
Пишет следующие —
Дополнительные стили
Помощь
Найден 1 незакрытый комментарий кода. Закройте каждый комментарий символами
*/
.Ошибки с несбалансированными или незакрытыми символами могут быть вызваны правилом
content: "";
. Его, возможно, придётся убрать или перенести в отдельный CSS-файл.Покажите фрагмент кода для которого возникает эта ошибка.
Здравствйте! Вот добавляю сразу в настройке темы http://prntscr.com/f6x8ga
/*
Здесь можно добавить ваши CSS-стили.
Нажмите на значок помощи выше, чтобы узнать больше.
Use this field to test small chunks of CSS code. For important CSS customizations, it is recommended to modify the style.css file of a child theme.
http//codex.wordpress.org/Child_Themes
*/
a {
text-decoration:none; /*Убираем стандартное подчёркивание ссылки если оно ещё не убрано*/
display: inline-block; /*делаем чтобы наша ссылка из строчного элемента превратилась в строчно-блочный
line-height: 1; /*Задаём высоту строки (можно в пикселях)*/
color:#2F73B6;/*Задаём цвет ссылки*/
}
a:after {
display: block; /*превращаем его в блочный элемент*/
content: «»; /*контента в данном блоке не будет поэтому в кавычках ничего не ставим*/
height: 3px; /*задаём высоту линии*/
width: 0%; /*задаём начальную ширину элемента (линии)*/
background-color: #225384; /*цвет фона элемента*/
transition: width 0.4s ease-in-out; /*данное свойство отвечает за плавное изменение ширины. Здесь можно задать время анимации в секундах (в данном случае задано 0.4 секунды)*/
}
a:hover:after,
a:focus:after {
width: 100%;
}
a:hover{
color:#225384;
}
Всё разобрался,
Спасибо, работает
Здравствуйте! Подскажите, пожалуйста. Как оставить подчеркивание у активной ссылки?
Здравствуйте, Юлия.
Во первых хочу сказать ОГРОМНОЕ СПАСИБО за те знания, которыми Вы так щедро делитесь. Удачи Вам, здоровья и процветания!
Вставил Ваш код себе на сайт и он почему то не заработал. Я его вставил в Редактировать текстовую область. Там ещё есть редактирование ACE Editor Code Mirror. Может я что то не так делаю? Сайт на WP.
Здравствуйте, Глеб! Спасибо Вам за теплые слова! Очень приятно! У мея есть подозрение что Вы код не туда вставили. Можете скриншот прислать куда Вы код вставили?
Вы не закрыли комментарий:
display: inline-block; /*делаем чтобы наша ссылка из строчного элемента превратилась в строчно-блочный
Алексей, Спасибо большое! Исправила!
Спасибо, помогло