CSS анимация на элемент меню не работает при наведении - PullRequest
0 голосов
/ 11 октября 2019

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

Структура выглядит следующим образом

#main-nav .navbar-nav li:hover .top_level::after {
  opacity: 1;
  -webkit-transform: scaleX(1);
  transform: scaleX(1);
  width: calc(100%);
}

#main-nav .navbar-nav li:hover .top_level::after {
    content: "";
    background-color: #000;
    display: block;
    height: 2px;
    opacity: 0;
    bottom: 28px;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0 auto;
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
    -webkit-transition: opacity 0.3s ease 0s, -webkit-transform 0.3s ease 0s;
    transition: opacity 0.3s ease 0s, -webkit-transform 0.3s ease 0s;
    transition: opacity 0.3s ease 0s, transform 0.3s ease 0s;
    transition: opacity 0.3s ease 0s, transform 0.3s ease 0s, -webkit-transform 0.3s ease 0s !important;
    width: calc(100%);
    }
.navbar-nav li .top_level {
    font-family: "Brandon Bold",Helvetica,Arial,sans-serif !important;
    text-transform: uppercase;
    font-size: 11px !important;
    letter-spacing: 1.25px !important;
    line-height: 28px;
    color: #000;
    padding: 25px 0px !important;
    display: inline-block;
    border-bottom: 2px solid transparent;
    transition: border-color .25s ease-in-out;
    position: relative;
    text-decoration: none;
}
ul#main-nav {
    text-align: left;
}

ul#main-nav {
    padding-left: 20px;
}
ul#main-nav {
    list-style: none;
    text-align: left;
    margin-bottom: 0;
    width: 100%;
}
ul#main-nav li {
    display: inline-block;
    vertical-align: middle;
}
.navbar-nav li {
    padding: 0 25px;
}
<ul id="main-nav">
    <div class="navbar-nav">
        <li><a class="top_level" href="/">Cuffs</a></li>
    </div>
</ul>

Текущий результат: https://imgur.com/a/A8nmeQd

Ожидаемый результат: https://imgur.com/a/d9JyyhM

Как это может быть, чтоанимация не загружается?

Спасибо. :)

1 Ответ

1 голос
/ 11 октября 2019

Проблема только во втором селекторе (начальном статусе), который должен быть #main-nav .navbar-nav li .top_level::after вместо #main-nav .navbar-nav li:hover .top_level::after

Удалите там :hover, и он будет работать, как и вфрагмент ниже.

#main-nav .navbar-nav li:hover .top_level::after {
opacity: 1;
-webkit-transform: scaleX(1);
transform: scaleX(1);
width: calc(100%);
}

#main-nav .navbar-nav li .top_level::after {
    content: "";
    background-color: #000;
    display: block;
    height: 2px;
    opacity: 0;
    bottom: 28px;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0 auto;
    -webkit-transform: scaleX(0);
    transform: scaleX(0);
    -webkit-transition: opacity 0.3s ease 0s, -webkit-transform 0.3s ease 0s;
    transition: opacity 0.3s ease 0s, -webkit-transform 0.3s ease 0s;
    transition: opacity 0.3s ease 0s, transform 0.3s ease 0s;
    transition: opacity 0.3s ease 0s, transform 0.3s ease 0s, -webkit-transform 0.3s ease 0s !important;
    width: calc(100%);
    }
.navbar-nav li .top_level {
    font-family: "Brandon Bold",Helvetica,Arial,sans-serif !important;
    text-transform: uppercase;
    font-size: 11px !important;
    letter-spacing: 1.25px !important;
    line-height: 28px;
    color: #000;
    padding: 25px 0px !important;
    display: inline-block;
    border-bottom: 2px solid transparent;
    transition: border-color .25s ease-in-out;
    position: relative;
    text-decoration: none;
}
ul#main-nav {
    text-align: left;
}

ul#main-nav {
    padding-left: 20px;
}
ul#main-nav {
    list-style: none;
    text-align: left;
    margin-bottom: 0;
    width: 100%;
}
ul#main-nav li {
    display: inline-block;
    vertical-align: middle;
}
.navbar-nav li {
    padding: 0 25px;
}
<ul id="main-nav">
    <div class="navbar-nav">
        <li><a class="top_level" href="/">Cuffs</a></li>
    </div>
</ul>
...