В данных ссылках использовались псевдо элементы :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);
}