實現(xiàn)效果:
實現(xiàn)效果如下圖所示
實現(xiàn)原理:
什么是筋斗云效果:
•這個效果很簡單,就是鼠標(biāo)移到其他導(dǎo)航目錄時會有背景圖片跟著鼠標(biāo)滑動到當(dāng)前的目錄。
實現(xiàn)思路:
•鼠標(biāo)經(jīng)過的時候,利用offsetLeft獲得當(dāng)前盒子距離左側(cè)的距離,把這個值賦給緩動動畫的end值。
•當(dāng)點擊的時候記住當(dāng)前的offsetLeft值,當(dāng)鼠標(biāo)經(jīng)過的時候把之前點擊的offsetLeft給現(xiàn)在經(jīng)過時候的值。
實現(xiàn)代碼:
下面是實現(xiàn)代碼以及詳細(xì)注釋,核心設(shè)置一個position為absolute的span標(biāo)簽,通過綁定鼠標(biāo)事件,用封裝好的animate動畫實現(xiàn)span的“筋斗云”效果。
<!DOCTYPE html> <html> <head> <title>導(dǎo)航欄筋斗云效果</title> <meta charset="utf-8"> <style type="text/css"> *{ padding: 0; margin: 0; } body{ background-color: rgba(0, 0, 0, 0.6); } .box{ width: 415px; height: 42px; margin: 200px auto; background-color: #fff; position: relative; } ul{ list-style: none; position: relative; } li{ float: left; width: 83px; height: 42px; text-align: center; font: 500 15px/42px "微軟雅黑"; cursor: pointer; } span{ position: absolute; left: 0; top: 0; width: 83px; height: 42px; background-image: linear-gradient(to right,#03c03c 50% ,#51ee5d 100%); } </style> </head> <body> <div class="box"> <span></span> <ul> <li>菜單欄1</li> <li>菜單欄2</li> <li>菜單欄3</li> <li>菜單欄4</li> <li>菜單欄5</li> </ul> </div> <script type="text/javascript"> window.onload = function(){ // 鼠標(biāo)放在哪個li上面,span對應(yīng)一道到哪里,移開后回到原位置 var liArr = document.getElementsByTagName("li"); var liWidth = liArr[0].offsetWidth; var span = document.getElementsByTagName("span")[0]; // 計數(shù)器 var cnt = 0; // for循環(huán)綁定事件 for(var i=0; i<liArr.length; i++){ // 自定義屬性,然后綁定index屬性為索引值 liArr[i].index = i; // 鼠標(biāo)進入事件 liArr[i].onmouseover = function(){ // 然span運動到該li的索引值位置 animate(span, this.index*liWidth); } // 鼠標(biāo)移開 liArr[i].onmouseout = function(){ // span運動到原位置 animate(span, cnt*liWidth); } // 點擊事件 liArr[i].onclick = function(){ // 計數(shù)器記錄當(dāng)前標(biāo)簽索引值 cnt = this.index; animate(span, cnt*liWidth); } } // 緩動動畫封裝 function animate(element, target){ // 清除間歇調(diào)用 clearInterval(element.timer); // 設(shè)置超時調(diào)用 element.timer = setInterval(function(){ // 設(shè)置步數(shù) var step = (target - element.offsetLeft)/10; // 調(diào)整步數(shù) step = step > 0 ? Math.ceil(step) : Math.floor(step); // 設(shè)置樣式 element.style.left = element.offsetLeft + step + "px"; // console.log(1); if(Math.abs(target - element.offsetLeft) < Math.abs(step)){ element.style.left = target + "px"; clearInterval(element.timer); } }, 20); } } </script> </body> </html>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:JavaScript實現(xiàn)精美個性導(dǎo)航欄筋斗云效果-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://aaarwkj.com/article14/jccge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、Google、網(wǎng)站排名、網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容