Как исправить CSS "переход" un-hover элемента? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть панель навигации в левом углу страницы.Навигационная панель уже установлена ​​на margin-left: -120px; при наведении, она преобразуется в 105px, поэтому я хотел бы получить плавную спину при отводе элемента.

Я пытался использовать transition науль, уль ли, уль ли, ставя их в разные классы.со мной ничего не получается ...

/* ----- NAVBAR ----- */

ul {
    position: fixed;
    z-index: 99;
}

.li1{
    animation: move1 2s;
}
.li2{
    animation: move1 3s;
}
.li3{
    animation: move1 4s;
}
.li4{
    animation: move1 5s;
}
.li5{
    animation: move1 6s;
}

ul li {
    text-align: center;
    list-style: none;
    padding-top: 10px;
    margin-left: -120px;
}

ul li a {
    text-align: center;
    display: block;
    text-decoration: none;
    height: 30px;
    line-height: 30px;
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 5px;
    background: #1a2738;
    width: 140px;
    color: #fff;
    text-transform: capitalize;
    border-radius: 15px;
}

ul li a:hover {
    background: #1a2738;
    color: #fff;
    animation: move2 1s forwards;
}

@keyframes move1 {
    0% {
        opacity: 0;
        transform: translate(-50px);
    }
    40% {
        opacity: 100;
        transform: translate(105px);
    }
}

@keyframes move2 {
    100% {
        transform: translate(105px);
    }
}

Я надеюсь узнать, в чем проблема, помогите, пожалуйста, спасибо!

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Во-первых, ваша позиция исправлена, я думаю, что это уже проблема, тогда отрицательное поле по-прежнему ощущается вправо при использовании translateX, а при отрицательных значениях, наконец, вам нужен один ключевой кадр в состоянии при наведении, браузер будет обрабатывать противоположное условие, играя на вашемключевой кадр от конца до начала # ура

0 голосов
/ 14 февраля 2019

Если вы ищете простое скольжение и возврат в действии, один из способов приблизиться к нему - это просто использовать transform: transitionX(-120px) для вашего ul элемента и просто перенастроить значение от -120px до 0px при наведенииul, вот так:

ul {
  list-style-type: none;
  padding: 1em;
  background-color: #ececec;
  color: #333;
  display: inline-block;
  transition: transform 600ms;
  transform: translateX(-120px);
}

ul:hover {
  transform: translateX(0px); //you can adjust this measurement unit to whatever value you wish, such as 105px
}

ul li {
    text-align: center;
    list-style: none;
    padding-top: 10px;
}

ul li a {
    text-align: center;
    display: block;
    text-decoration: none;
    height: 30px;
    line-height: 30px;
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 5px;
    background: #1a2738;
    width: 140px;
    color: #fff;
    text-transform: capitalize;
    border-radius: 15px;
}
<ul>
  <li><a href="">Home</a></li>
  <li><a href="">About</a></li>
  <li><a href="">contact</a></li>
</ul>
0 голосов
/ 14 февраля 2019

Я думаю, что вы слишком усложняете CSS, используя ключевые кадры, вместо этого вы можете использовать переход, см. Код ниже:

/* ----- NAVBAR ----- */

ul {
    position: fixed;
    z-index: 99;
}

ul li {
    text-align: center;
    list-style: none;
    padding-top: 10px;
    margin-left: -120px;
}

ul li a {
    text-align: center;
    display: block;
    text-decoration: none;
    height: 30px;
    line-height: 30px;
    font-size: 12px;
    font-weight: 400;
    letter-spacing: 5px;
    background: #1a2738;
    width: 140px;
    color: #fff;
    text-transform: capitalize;
    border-radius: 15px;
    transition: transform 1s ease-in-out;
    transform: translateX(-50px);
}

ul li a:hover {
    background: #1a2738;
    color: #fff;
    transform: translateX(105px);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...