Небольшим элементам пользовательского интерфейса часто уделяют не слишком много внимания, особенно если речь идет о креативных эффектах. Причина конечно в размере. Но с помощью их можно добавить на страницу некоторые запоминающиеся, интересные эффекты.
В последнее время, часто можно встретить такой вид навигации как вертикальный или горизонтальный ряд точек, для перемещения по разделам веб-сайта. И сегодня мы хотим поделиться несколькими примерами подобного типа навигации с различными эффектам, при наведении или нажатии на них. Для эффектов мы используем несколько техник, в том числе переходы для псевдо-элементов, перспективу и 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 Все права защищены
Новый комментарий