Добро пожаловать на портал вебмастеров WebmastersBY
Верстка сайта

Примеры постраничной навигации в виде точек

Небольшим элементам пользовательского интерфейса часто уделяют не слишком много внимания, особенно если речь идет о креативных эффектах. Причина конечно в размере. Но с помощью их можно добавить на страницу некоторые запоминающиеся, интересные эффекты.

Примеры постраничной навигации в виде точек

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

Весь код примеров смотрите в демо-примерах, по ссылке ниже. Надеюсь, вам понравятся эти примеры и они будут вам полезны!

Комментарии 0

Новый комментарий

Имя:
Для редактирования комментария осталось 10 минут
Комментарии отсутствуют