#javascript #html #css #jquery #navigation
Смысл в том, чтобы при наведении на число - оно отдалялось от других, но есть вот
пару проблем:
Я попробовал пару подходов, через псевдоэлементы и без них.
Проблема у первого в том, что я не знаю с какой стороны подойти к изменению положения
блока, который нужно отодвигать от остальных, да и сами псевдоэлементы, вероятно, это
не лучшее решение, так как ::before не растёт вверх от элемента.
Второй подход вероятно слишком "быдлокодерский" и я не могу через jQuery обратиться
именно к нужному родителю, чтобы он добавил класс своему потомку который я указал.
Вот изображение с примером такого меню:
https://codepen.io/4rmr3d1/pen/MWWjWXj
.navigation {
font-size: 30px;
position: fixed;
top: 20%;
left: 25%;
ul{
list-style: none;
text-align: center;
display: flex;
flex-flow: column wrap;
padding-inline-start: 0;
.active{
transform: translateY(-50px);
}
li{
flex: 0 0 auto;
justify-self: center;
transition: .5s ease-in-out;
.nav-item{
}
&:not(:last-child):after{
content: '';
position: absolute;
left:50%;
height: 0;
width: 1px;
background-color: black;
transition: .5s ease-in-out;
}
&:not(:first-child):before{
content: '';
position: absolute;
left:50%;
height: 0;
width: 1px;
background-color: black;
transition: .5s ease-in-out;
}
&:hover::after{
transition: .5s ease-in-out;
height: 50px
}
&:hover::before{
transition: .5s ease-in-out;
height: 50px
}
}
}
}
.nav {
font-size: 30px;
position: fixed;
top: 25%;
right: 25%;
&-item{
display: flex;
flex-flow: column wrap;
align-items: center;
.active{
height: 50px;
}
&__line{
width: 1px;
height: 0;
background-color: black;
transition: .5s ease-in-out;
}
&__number{
}
}
}
$(function () {
$('body').on({
mouseenter: function () {
$(this).addClass('active');
},
mouseleave: function () {
$(this).removeClass('active');
}
}, '.navigation ul li');
});
$(function () {
$('body').on({
mouseenter: function () {
$('.nav-item__line').addClass('active');
},
mouseleave: function () {
$('.nav-item__line').removeClass('active');
}
}, '.nav-item');
});
Ответы
Ответ 1
Я бы сделал это за счет бордеров, например так: div.expand { font-size: 20px; display:block; width: 20px; cursor:default; transition: 0.5s; width:40px; text-align:center; } div.expand:before, div.expand:after { content: ''; border: 0px solid black; display: block; width: 1px; transition: 0.5s; margin-left:20px; } div.expand:hover{ font-size:40px } div.expand:not(:first-child):hover:before { border-top: 50px solid black; } div.expand:not(:last-child):hover:after { border-top: 50px solid black; }
Комментариев нет:
Отправить комментарий