Удалить height: 100%
из nav
.Когда элемент становится fixed
, он, вероятно, использует тело в качестве родителя позиции, а height: 100%
становится целым экраном, который выталкивает тень и границу из экрана.
Пример:
const nav = document.querySelector("#navigation");
const navTop = nav.offsetTop;
window.addEventListener("scroll", stickyNavigation);
function stickyNavigation() {
if (window.scrollY >= navTop) {
nav.classList.add("fixed-nav");
console.log("sticky!!");
} else {
nav.classList.remove("fixed-nav");
}
}
nav {
display: flex;
align-items: flex-start;
flex-wrap: nowrap;
/* remove - height: 100%; */
width: 100vw;
/* border-bottom: 3px solid #f341cc; */
box-shadow: 0px 3px #f341cc;
}
nav a {
padding: 30px;
background-color: black;
text-decoration: none;
color: #f341cc;
font-size: 2em;
font-family: "Varela Round", sans-serif;
text-align: center;
width: 40%;
flex-grow: 1;
text-decoration: none;
}
/* ---- sticky menu --- */
.fixed-nav {
position: fixed;
top: 0;
/*box-shadow: 0px 3px #f341cc;*/
z-index: 1;
}
body {
height: 200vh;
}
<nav id="navigation">
<a href="">something</a>
<a href="">something</a>
<a href="">something</a>
</nav>
Если вам нужно height: 100%
для нефиксированной позиции, вы можете использовать псевдокласс :not()
:
nav:not(.fixed-nav) {
height: 100%;
}