Làm thế nào để - Thu nhỏ menu điều hướng trên cuộn
Tìm hiểu cách thay đổi kích thước thanh điều hướng khi cuộn bằng CSS và JavaScript.
Cách thu hẹp thanh điều hướng khi cuộn
Bước 1) Thêm HTML:
Tạo thanh điều hướng:
Thí dụ
<div id="navbar">
<a href="#default" id="logo">CompanyLogo</a>
<div id="navbar-right">
<a class="active" href="#home">Home</a>
<a href="#contact">Contact</a>
<a href="#about">About</a>
</div>
</div>
Bước 2) Thêm CSS:
Tạo kiểu cho thanh điều hướng:
Thí dụ
/* Create a sticky/fixed navbar */
#navbar {
overflow: hidden;
background-color: #f1f1f1;
padding: 90px 10px; /* Large padding
which will shrink on scroll (using JS) */
transition: 0.4s; /* Adds
a transition effect when the padding is decreased */
position:
fixed; /* Sticky/fixed navbar */
width: 100%;
top: 0; /*
At the top */
z-index: 99;
}
/* Style the navbar links */
#navbar a {
float: left;
color: black;
text-align: center;
padding: 12px;
text-decoration: none;
font-size: 18px;
line-height: 25px;
border-radius: 4px;
}
/* Style the logo
*/
#navbar
#logo {
font-size: 35px;
font-weight: bold;
transition: 0.4s;
}
/* Links on mouse-over */
#navbar a:hover {
background-color: #ddd;
color: black;
}
/* Style the
active/current link */
#navbar
a.active {
background-color: dodgerblue;
color: white;
}
/* Display some links to the right */
#navbar-right {
float: right;
}
/* Add
responsiveness - on screens less than 580px wide, display the navbar
vertically instead of horizontally */
@media screen and (max-width: 580px)
{
#navbar {
padding: 20px 10px !important; /* Use
!important to make sure that JavaScript doesn't override the padding on small
screens */
}
#navbar a {
float:
none;
display: block;
text-align:
left;
}
#navbar-right {
float: none;
}
}
Bước 3) Thêm JavaScript:
Thí dụ
// When the user scrolls down 80px from the top of the document, resize the
navbar's padding and the logo's font size
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 80 ||
document.documentElement.scrollTop > 80) {
document.getElementById("navbar").style.padding = "30px 10px";
document.getElementById("logo").style.fontSize = "25px";
} else {
document.getElementById("navbar").style.padding = "80px 10px";
document.getElementById("logo").style.fontSize = "35px";
}
}