JSFiddle - React, Tailwind, and code Playground
HTML
<ul id="nav">
<li>
<a href="#" title="">Главная</a>
</li>
<li class="dropdown">
<div><a href="#" title="">Новости</a></div>
<ul>
<li><a href="#">Все</a></li>
<li><a href="#">Просшествия</a></li>
<li><a href="#">Экономика</a></li>
<li><a href="#">Общество</a></li>
</ul>
</li>
<li>
<a href="#" title="">Погода</a>
</li>
<li>
<a href="#" title="">Программа</a>
</li>
<li>
<a href="#" title="">Афиша</a>
</li>
</ul>
CSS
body {
background: gray;
}
.dropdown div {
position: relative;
border: 1px solid transparent;
}
.dropdown div a {
position: relative;
display: block;
text-decoration: none;
color: #0076d1;
padding: 10px;
z-index: 4;
}
.dropdown div:before {
display: block;
content: "";
position: absolute;
border: 1px solid transparent;
margin-left: -1px;
margin-top: -1px;
padding: 1px;
height: 39px;
width: 100%;
left:-1px; top: -1px;
z-index: 3;
background: linear-gradient(0, yellow, white);
/*Фикс проблеым с градиентом и полоской при наличии прозрачной границы*/
background-size: 100% 112.5%;
background-position: 0 -0.063em;
}
.dropdown:hover div:before {
border: 1px solid #d0d0d0;
border-bottom: 1px solid transparent;
}
#nav {
position: relative;
list-style: none;
}
#nav li {
float: left;
border: 1px solid transparent;
}
#nav > li:hover {
border: 1px solid #d0d0d0;
}
#nav > li > a {
display: block;
text-decoration: none;
color: #0076d1;
padding: 10px;
}
#nav > li:hover > a{
color: #000;
}
#nav li ul {
background: linear-gradient(yellow, white);
z-index: -1;
list-style: none;
position: absolute;
top: 39px;
border: 1px solid #fff;
padding: 0;
margin-left: -1px;
margin-top: 3px;
display: none;
opacity: 0;
}
#nav li ul li a {
display: block;
text-decoration: none;
color: #868686;
padding: 10px;
}
#nav li ul li a:hover {
text-decoration: underline;
}
#nav li:hover ul {
border: 1px solid #d0d0d0;
display: block;
opacity: 1;
}
#nav .dropdown:hover {
border-bottom: none;
}