Ты почти справился со своим первым методом. Вам нужно сделать значок display:inline
, чтобы переопределить inline-block
, установленный Font Awesome, который мешает фоновой уловке.
Для цвета линии вы можете рассмотреть border-image
с тем же градиентом, примененным к тот же элемент. Хитрость заключается в том, чтобы применить отрицательное поле к li
, чтобы перекрыть этот градиент, и при наведении курсора вы сбросите поле, чтобы показать его.
body {
background: #161616;
margin: 0;
padding: 0;
}
.header {
height: 80px;
background: #ffffff;
}
.menu {
height: 100%;
display:flex;
}
.menu ul {
list-style: none;
padding: 0;
margin:0;
border-image-source:linear-gradient(90deg, #ff0066, #2850ff);
border-image-slice:2 0;
border-top:2px solid;
border-bottom:2px solid;
background: linear-gradient(90deg, #ff0066, #2850ff);
background-clip: text;
-webkit-background-clip: text;
display:flex;
font-weight: 600;
height: 100%;
box-sizing:border-box;
}
li {
display: flex;
align-items: center;
margin:-2px 0;
border-top:2px solid white;
border-bottom:2px solid white;
transition: all 0.2s ease-in-out;
}
.menu li a {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-transform: uppercase;
-webkit-text-fill-color: transparent;
padding: 0 10px;
text-decoration: none;
}
.menu li:hover {
margin:0 0;
}
i.fa {
font-size: 12px;
padding-right: 5px;
display:inline;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<div class="header">
<div class="menu">
<ul>
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
<li><a href="#">Menu 4</a></li>
<li><a href="#"><i class="fa-search fa"></i>Search</a></li>
</ul>
</div>
</div>
Вышеуказанное не работает в Safari, поэтому вы можете попробовать следующее:
body {
background: #161616;
margin: 0;
padding: 0;
}
.header {
height: 80px;
background: #ffffff;
}
.menu {
height: 100%;
display:flex;
}
.menu ul {
list-style: none;
padding: 0;
margin:0;
border-image-source:linear-gradient(90deg, #ff0066, #2850ff);
border-image-slice:2 0;
border-top:2px solid;
border-bottom:2px solid;
background: linear-gradient(90deg, #ff0066, #2850ff);
background-clip: text;
-webkit-background-clip: text;
font-weight: 600;
height: 100%;
box-sizing:border-box;
}
li {
height:calc(100% - 4px);
float:left;
margin:2px 0;
outline:4px solid #fff;
transition: all 0.2s ease-in-out;
}
.menu li a {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
line-height:75px;
text-transform: uppercase;
-webkit-text-fill-color: transparent;
padding: 0 10px;
text-decoration: none;
}
.menu li:hover {
outline:0px solid #fff;
}
i.fa {
font-size: 12px;
padding-right: 5px;
display:inline;
}
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<div class="header">
<div class="menu">
<ul>
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
<li><a href="#">Menu 3</a></li>
<li><a href="#">Menu 4</a></li>
<li><a href="#"><i class="fa-search fa"></i>Search</a></li>
</ul>
</div>
</div>