Небольшим элементам пользовательского интерфейса часто уделяют не слишком много внимания, особенно если речь идет о креативных эффектах. Причина конечно в размере. Но с помощью их можно добавить на страницу некоторые запоминающиеся, интересные эффекты.
В последнее время, часто можно встретить такой вид навигации как вертикальный или горизонтальный ряд точек, для перемещения по разделам веб-сайта. И сегодня мы хотим поделиться несколькими примерами подобного типа навигации с различными эффектам, при наведении или нажатии на них. Для эффектов мы используем несколько техник, в том числе переходы для псевдо-элементов, перспективу и SVG.
Обратите внимание, что некоторые эффекты, возможно, не будут работать надлежащим образом в некоторых браузерах (SVG transition, 3D transform).
Для разметки мы будем использовать неупорядоченный список со ссылками:
<div class="list-unstyled mb-0 dotstyle dotstyle-fillup"> <ul> <li class="current"><a href="#">Главная</a></li> <li><a href="#">О нас</a></li> <li><a href="#">Продукция</a></li> <li><a href="#">Портфолио</a></li> <li><a href="#">Блог</a></li> <li><a href="#">Контакты</a></li> </ul> </div>
В некоторых примерах, мы также используем дополнительный пустой элемент списка для создания эффекта перемещения текущего элемента. Для начала давайте определим некоторые общие стили, которые будут использоваться для всех примеров:
.dotstyle ul {
position: relative;
display: flex;
justify-content: center;
}
.dotstyle li {
position: relative;
margin: 0 1rem;
width: 1rem;
height: 1rem;
}
.dotstyle li a {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
outline: none;
border-radius: 50%;
background-color: #fff;
background-color: rgba(255,255,255,.3);
text-indent: -9999px;
cursor: pointer;
transition: all .3s ease;
}
.dotstyle li a::after {
transition: all .3s ease;
}
.dotstyle li a:focus {
outline: none;
}
Пример стилей ниже, создает тонкий эффект, где мы "заполняем" внутренний круг. Мы делаем это с помощью псевдо-элемента, как заполняющей части:
.dotstyle-fillup li a {
overflow: hidden;
background-color: transparent;
box-shadow: inset 0 0 0 2px white;
}
.dotstyle-fillup li a::after {
content: '';
position: absolute;
bottom: 0;
height: 0;
left: 0;
width: 100%;
background-color: #fff;
box-shadow: 0 0 1px #fff;
transition: height 0.3s ease;
}
.dotstyle-fillup li a:hover,
.dotstyle-fillup li a:focus {
background-color: rgba(0, 0, 0, 0.2);
}
.dotstyle-fillup li.current a::after {
height: 100%;
}
Еще один интересный пример, который мы рисуем с помощью SVG и переходов в форме круга:
.dotstyle-drawcircle li {
width: 18px;
height: 18px;
}
.dotstyle-drawcircle li a {
top: 3px;
left: 3px;
width: 12px;
height: 12px;
background-color: #c44d48;
}
.dotstyle-drawcircle li svg {
vertical-align: baseline;
}
.dotstyle-drawcircle li svg circle {
opacity: 0;
fill: none;
stroke: #fff;
stroke-width: 3;
stroke-linecap: round;
stroke-linejoin: round;
stroke-dasharray: 39 39;
stroke-dashoffset: 39;
/* length of circle path (pi*2r) */
transition: stroke-dashoffset 0.3s, opacity 0.3s;
}
.dotstyle-drawcircle li.current a,
.dotstyle-drawcircle li a:hover,
.dotstyle-drawcircle li a:focus {
opacity: 0.5;
}
.dotstyle-drawcircle li.current svg circle {
opacity: 1;
stroke-dashoffset: 0;
transition: stroke-dashoffset 0.3s, opacity 0.15s;
}
Для назначения выбранному элементу навигации класса .current мы используем небольшой jQuery код:
$().ready(function() {
$('div.dotstyle li').on('click', function(e) {
e.preventDefault();
$(this).addClass('current').siblings().removeClass('current');
})
});
Весь код примеров смотрите в демо-примерах, по ссылке ниже. Надеюсь, вам понравятся эти примеры и они будут вам полезны!
© 2008 - 2025 Webmasters.BY Все права защищены
Новый комментарий