Всплывающие подсказки с помощью CSS3
9 декабря 2014
Рассмотрим создание всплывающих подсказок с помощью CSS3 без применения картинок и JavaScript.
Всплывающие подсказки с помощью CSS3
Для реализации задуманного воспользуемся следующими CSS3-свойствами - градиентом, тенью, псевдоэлементами :before
и :after
.
Структура HTML
<a href="#" class="tooltip">
Наведи на меня
<span>Текст всплывающей подсказки</span>
</a>
Вместо стандартного HTML-атрибута title, который играет роль всплывающей подсказки, мы добавили элемент span внутри якорной ссылки.
Стили CSS
Код, приведенный ниже, демонстрирует реализацию всплывающей подсказки серого цвета.
.tooltip {
position: relative;
background: #eaeaea;
cursor: help;
display: inline-block;
text-decoration: none;
color: #222;
outline: none;
}
.tooltip span {
visibility: hidden;
position: absolute;
bottom: 30px;
left: 50%;
z-index: 999;
width: 230px;
margin-left: -127px;
padding: 10px;
border: 2px solid #ccc;
opacity: .9;
background-color: #ddd;
background-image: -webkit-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
background-image: -ms-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
background-image: -o-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
background-image: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
-moz-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.5) inset;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.5) inset;
box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 1px 0 rgba(255,255,255,.5) inset;
}
.tooltip:hover {
border: 0; /* IE6 fix */
}
.tooltip:hover span {
visibility: visible;
}
.tooltip span:before,
.tooltip span:after {
content: "";
position: absolute;
z-index: 1000;
bottom: -7px;
left: 50%;
margin-left: -8px;
border-top: 8px solid #ddd;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-bottom: 0;
}
.tooltip span:before {
border-top-color: #ccc;
bottom: -8px;
}
Замечание относительно браузера IE6.
Если в качестве элемента для наведения выбрана не якорная ссылка, то для корректной работы всплывающих подсказок в IE6 потребуется добавить следующий JavaScript:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(function() {
if ($.browser.msie && $.browser.version.substr(0,1)<7) {
$('.tooltip').mouseover(function() {
$(this).children('span').show();
}).mouseout(function() {
$(this).children('span').hide();
})
}
});
</script>