如何 - 滾動時收縮導航欄
學習如何使用 CSS 和 JavaScript 在滾動時調整導航欄的大小。
如何滾動時收縮導航欄
步驟 1) 新增 HTML
建立導航欄
示例
<div id="navbar">
<a href="#default" id="logo">公司Logo</a>
<div id="navbar-right">
<a class="active" href="#home">首頁</a>
<a href="#contact">聯絡</a>
<a href="#about">關於</a>
</div>
</div>
步驟 2) 新增 CSS
樣式化導航欄
示例
/* 建立一個固定/粘性導航欄 */
#navbar {
overflow: hidden;
background-color: #f1f1f1;
padding: 90px 10px; /* 大內邊距,滾動時會縮小(使用 JS) */
transition: 0.4s; /* 減小內邊距時新增過渡效果 */
position: fixed; /* 粘性/固定導航欄 */
width: 100%;
top: 0; /* 在頂部 */
z-index: 99;
}
/* 樣式化導航欄連結 */
#navbar a {
float: left;
color: black;
text-align: center;
padding: 12px;
text-decoration: none;
font-size: 18px;
line-height: 25px;
border-radius: 4px;
}
/* 樣式化 logo */
#navbar #logo {
font-size: 35px;
font-weight: bold;
transition: 0.4s;
}
/* 滑鼠懸停時的連結 */
#navbar a:hover {
background-color: #ddd;
color: black;
}
/* 樣式化活動/當前連結 */
#navbar a.active {
background-color: dodgerblue;
color: white;
}
/* 在右側顯示一些連結 */
#navbar-right {
float: right;
}
/* 新增響應式 - 在螢幕寬度小於 580px 時,垂直顯示導航欄而不是水平顯示 */
@media screen and (max-width: 580px) {
#navbar {
padding: 20px 10px !important; /* 使用 !important 確保 JavaScript 不會覆蓋小螢幕上的內邊距 */
}
#navbar a {
float: none;
display: block;
text-align: left;
}
#navbar-right {
float: none;
}
}
步驟 3) 新增 JavaScript
示例
// 當用戶從文件頂部向下滾動 80px 時,調整導航欄內邊距和 logo 的字型大小
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";
}
}
自己動手試一試 »