CSS是前端開發中的重要技術之一,它可以幫助我們實現頁面美觀的效果。實現的效果之一是滑動導航,接下來我將為大家介紹CSS如何實現滑動導航。
.nav{ display: flex; justify-content: space-between; margin-bottom: 40px; } .nav ul{ list-style: none; margin: 0; padding: 0; display: flex; } .nav li{ padding: 0 10px; } .nav li:hover{ color: #f60; cursor: pointer; } .line{ position: absolute; bottom: 0; left: 0; height: 2px; background-color: #f60; transition: all .3s ease-out; }
以上是CSS實現滑動導航的主要代碼。接下來解釋一下代碼中的各個部分。
首先是.nav樣式,使用flex布局將菜單項居中并與logo距離一定距離。接著是li:hover樣式,當鼠標懸浮在菜單項上時會觸發,字體顏色變為#f60。最后是.line樣式,這是滑動條的樣式,使用絕對定位將其固定在底部,寬度與li的寬度一致。
接著,在HTML中加入以下代碼:
<nav class="nav"> <ul> <li>首頁</li> <li>產品介紹</li> <li>關于我們</li> <li>聯系我們</li> </ul> <div class="line"></div> </nav>
以上是HTML代碼,其中nav元素的class為nav,里面包含一個ul元素和一個div元素。其中ul元素表示菜單項,div元素表示滑動條。
接下來,我們需要使用JavaScript來感知用戶的鼠標移動事件,并且將滑動條位置做相應的調整。
let nav = document.querySelector('.nav');
let line = document.querySelector('.line');
let lis = document.querySelectorAll('.nav li');
let lineWidth = lis[0].offsetWidth;
let lastIndex = 0;
nav.onmouseover = function(e) {
let target = e.target;
if (target.nodeName !== 'LI') return;
let index = [...lis].indexOf(target);
if (index === lastIndex) return;
line.style.width = lineWidth + 'px';
line.style.transform =translateX(${index * lineWidth}px)
;
lastIndex = index;
}
nav.onmouseleave = function() {
line.style.width = 0;
line.style.transform = 'translateX(0)';
lastIndex = 0;
}
以上是JavaScript代碼,實現的主要功能是監聽鼠標移動事件,移動滑動條的位置。當鼠標移進.nav元素時,判斷鼠標經過的元素節點是否為li節點,如果是則計算該節點的位置,并移動滑動條的位置。當鼠標移出.nav元素時,重置滑動條的位置和長度。
以上就是CSS實現滑動導航的詳細介紹,希望對大家能有所幫助。
下一篇css怎么做框