по какой-то причине
#item1:hover ~ #item1::before{ display: block; }
на самом деле не отображает элемент, который я хотел в блоке, когда я наводил курсор на #item 1.
Вот код и заранее спасибо! https://jsfiddle.net/dyus45w0/
по какой-то причине
#item1:hover ~ #item1::before{ display: block; }
на самом деле не отображает элемент, который я хотел в блоке, когда я наводил курсор на #item 1.
Вот код и заранее спасибо! https://jsfiddle.net/dyus45w0/
Изменяет CSS
* {
margin: 0;
padding: 0;
}
header {
display: flex;
justify-content: space-between;
background: #2a2e33;
align-items: center;
width: 100%;
height: 60px;
position: relative;
}
#logo {
color: white;
margin-left: 10px;
position: relative;
}
#list {
display: flex;
height: 100%;
list-style: none;
color: white;
}
li {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
max-height: 100%;
position: relative;
}
li:hover {
background: #1e2329;
}
li::before {
content: "";
background-color: chocolate;
width: 100%;
height: 4px;
position: absolute;
top: 0;
left: 0;
display: none;
}
li:hover::before {
display: block;
}
<header>
<h1 id="logo">LOGO</h1>
<ul id="list">
<li id="item1">HOME</li>
<li id="item2">ABOUT US</li>
<li id="item3">CONTACT</li>
<li id="item4">BLOG</li>
</ul>
</header>
Символ ~
является общим родственным комбинатором. Из документов MDN:
Общий родственный комбинатор (~) разделяет два селектора и сопоставляет второй элемент, только если он следует за первым элементом (хотя и не обязательно сразу), и оба являются дочерними элементами одного и того же родительского элемента.
У вашего элемента #item1
нет родственного элемента #item1
, потому что это сам элемент. Другими словами, элемент не может следовать сам за собой.
Это означает, что ваш селектор CSS не может соответствовать ни одному элементу, потому что никакие два элемента не могут иметь одинаковые id
.