Примеры оформления ссылок

В данных ссылках использовались псевдо элементы :before и :after

Для того, чтобы эти псевдо элементы имели внутри квадратные скобки и они были смещены по горизонтали использовался следующий код:

.cl-effect-1 a::before {
content: '[';
transform: translateX(20px);
}
.cl-effect-1 a::after {
content: ']' !important;
transform: translateX(-20px);
}
				

Для того, чтобы псевдоэлементы изначально были скрыты и их появление было мягким, пропишем это

.cl-effect-1 a::before,
.cl-effect-1 a::after {
display: inline-block;
opacity: 0;
transition: transform 0.3s, opacity 0.2s;
}
				
Для появления и смещения скобочек в первоначальное положение:
cl-effect-1 a:hover::before,
.cl-effect-1 a:hover::after,
.cl-effect-1 a:focus::before,
.cl-effect-1 a:focus::after {
opacity: 1;
-webkit-transform: translateX(0px);
-moz-transform: translateX(0px);
transform: translateX(0px);
	}

с этими ссылками будет посложнее.

Для начала зададим глубину ссылкам.

.cl-effect-2 a {
perspective: 1000px;
}
										

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

.cl-effect-2 a span {
	position: relative;
	display: inline-block;
	padding: 0 14px;
	background: #2195de;
	-webkit-transition: -webkit-transform 0.3s;
	-moz-transition: -moz-transform 0.3s;
	transition: transform 0.3s;
	-webkit-transform-origin: 50% 0;
	-moz-transform-origin: 50% 0;
	transform-origin: 50% 0;
	-webkit-transform-style: preserve-3d;
	-moz-transform-style: preserve-3d;
	transform-style: preserve-3d;
}
										

Теперь можно создавать "нижнюю" часть блока, посредством псевдоэлемента ::before

.cl-effect-2 a span::before {
	position: absolute;
	top: 100%;
	left: 0;
	width: 100%;
	height: 100%;
	background: #0965a0;
	content: attr(data-hover);
	-webkit-transition: background 0.3s;
	-moz-transition: background 0.3s;
	transition: background 0.3s;
	-webkit-transform: rotateX(-90deg);
	-moz-transform: rotateX(-90deg);
	transform: rotateX(-90deg);
	-webkit-transform-origin: 50% 0;
	-moz-transform-origin: 50% 0;
	transform-origin: 50% 0;
}
										

Осталось лишь сделать так, чтобы при наведении курсора мыши на наш контейнер, он переворачивался

.cl-effect-2 a:hover span,
.cl-effect-2 a:focus span {
	-webkit-transform: rotateX(90deg) translateY(-22px);
	-moz-transform: rotateX(90deg) translateY(-22px);
	transform: rotateX(90deg) translateY(-22px);
}
										

Для создания этих ссылок понадогбится знание свойства "border-radius"

Итак, все, что нам нужно сделать, это создать два псевдоэлемента(::before и ::after), задать им размеры, спрятать и закргулить.

.cl-effect-12 a::before,
.cl-effect-12 a::after {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 100px;
	height: 100px;
	border: 2px solid rgba(0,0,0,0.1);
	border-radius: 50%;
	content: '';
	opacity: 0;
}
.cl-effect-12 a::after {
	width: 90px;
	height: 90px;
	border-width: 6px;
	-webkit-transform: translateX(-50%) translateY(-50%) scale(0.8);
	-moz-transform: translateX(-50%) translateY(-50%) scale(0.8);
	transform: translateX(-50%) translateY(-50%) scale(0.8);
}

Теперь, сместим их, чуть ближе к центру

.cl-effect-12 a::before,
.cl-effect-12 a::after {
-webkit-transition: -webkit-transform 0.3s, opacity 0.3s;
-moz-transition: -moz-transform 0.3s, opacity 0.3s;
transition: transform 0.3s, opacity 0.3s;
-webkit-transform: translateX(-50%) translateY(-50%) scale(0.2);
-moz-transform: translateX(-50%) translateY(-50%) scale(0.2);
transform: translateX(-50%) translateY(-50%) scale(0.2);
}

Теперь делаем так, чтобы при наведении появля лись 2 кольца и сдвигались в исходное полоение

.cl-effect-12 a:hover::before,
.cl-effect-12 a:hover::after,
.cl-effect-12 a:focus::before,
.cl-effect-12 a:focus::after {
	opacity: 1;
	-webkit-transform: translateX(-50%) translateY(-50%) scale(1);
	-moz-transform: translateX(-50%) translateY(-50%) scale(1);
	transform: translateX(-50%) translateY(-50%) scale(1);
}