Нет необходимости использовать видимость, так как вы уже установили 0% для ширины.Вы также можете отрегулировать положение для перехода слева направо.Для цвета просто добавьте еще одно указание при наведении на a
:
ul {
display: flex;
justify-content: flex-end;
letter-spacing: 1px;
align-items: center;
padding: 30px 0;
/*background-color: red;*/
}
li {
text-align: center;
font-family: "Trebuchet MS", Helvetica, sans-serif;
list-style: none;
padding: 0 30px;
text-transform: uppercase;
font-size: .71em;
}
ul li i {
margin-left: 7px;
}
li a {
position: relative;
text-decoration: none;
color: inherit;
}
li a::before {
content: "";
position: absolute;
z-index: -1;
width: 0%;
left: auto;
right: 0;
height: 1.3em;
background-color: black;
transition: width .2s, left .2s .2s, right .2s .2s;
}
li a:hover::before {
width: 100%;
left: 0;
right: auto;
}
li a:hover {
color: #fff;
}
<ul>
<li><a href="#" title="home">home</a></li>
<li><a href="#" title="text">text</a></li>
<li><a href="#" title="image">image</a></li>
<li><a href="#" title="slider">slider<i class="fa fa-angle-down" title="slider"></i></a></li>
<li><a href="#" title="html">html<i class="fa fa-angle-down"></i></a></li>
<li><a href="#" title="css">css</a></li>
</ul>
Вы также можете упростить свой код, используя градиент:
ul {
display: flex;
justify-content: flex-end;
letter-spacing: 1px;
align-items: center;
padding: 30px 0;
/*background-color: red;*/
}
li {
text-align: center;
font-family: "Trebuchet MS", Helvetica, sans-serif;
list-style: none;
padding: 0 30px;
text-transform: uppercase;
font-size: .71em;
}
ul li i {
margin-left: 7px;
}
li a {
position: relative;
text-decoration: none;
color: inherit;
background: linear-gradient(#000, #000) left/0% 100% no-repeat;
transition:
color 0.2s,
background-size 0.2s,
background-position 0.2s 0.2s;
}
li a:hover {
color: #fff;
background-size: 100% 100%;
background-position: right;
}
<ul>
<li><a href="#" title="home">home</a></li>
<li><a href="#" title="text">text</a></li>
<li><a href="#" title="image">image</a></li>
<li><a href="#" title="slider">slider<i class="fa fa-angle-down" title="slider"></i></a></li>
<li><a href="#" title="html">html<i class="fa fa-angle-down"></i></a></li>
<li><a href="#" title="css">css</a></li>
</ul>