1. 程式人生 > 其它 >js+html+css筋斗雲導航欄

js+html+css筋斗雲導航欄

技術標籤:前端javascriptcsshtml前端

功能簡述
  1. 圖片隨著滑鼠位置在導航欄上變化而變化
  2. 當點選某個導航欄時,圖片位置遷移到當前導航欄的位置處
  3. 效果預覽
    效果預覽

實現原理

  1. 給每個li標籤新增滑鼠事件
  2. 當滑鼠懸浮於li標籤的時候,將當前li標籤的offsetLeft值賦給圖片的offsetLeft使其移動
  3. 當滑鼠離開li標籤的時候,圖片offsetLeft的值重置為之前已點選的li標籤的offsetLeft值
  4. 當滑鼠點選li標籤的時候,記錄當前li標籤的offsetLeft值,並當前li標籤新增選中狀態
  5. 涉及到的animate函式詳見js動畫函式實現側邊欄動態顯示內容.

實現程式碼

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>practice1</title>
    <link href="../css/practive1.css" rel="stylesheet"/>
    <script src="../js/animate.js"></script>
    <script type="text/javascript" src="../js/practice1.js"></script>
</head>

<body>
<div class="cloud">
    <span class="img"></span>
    <ul>
        <li class="current"><a href="javascript:;">首頁</a></li>
        <li><a href="javascript:;">文章</a></li>
        <li><a href="javascript:;">動態</a></li>
        <li><a href="javascript:;">關注</a></li>
        <li><a href="javascript:;">最新熱門</a></li>
    </ul>
</div>
</body>
</html>

css

body {
    background-color: #a3b0b5;
}

.cloud {
    margin: 100px auto;
    border-radius: 5px;
    position: relative;
    width: 500px;
    height: 42px;
    background: #fff url("../imgs/pig.jpg") no-repeat right center;
}

.cloud ul {
    position: absolute;
    text-align: center;
    list-style-type: none;
    margin-left: 0px;
    padding: 0;
}

.cloud ul li{
     top: 0;
     margin: 0px 15px;
     float: left;
    text-align: center;
 }

.cloud li a{
    text-decoration: none;
    color: #000;
    display: inline-block;
}

.cloud li:hover {
    color: #dc4c3f;
    font-weight: 600;
}

.cloud ul li.current a{
    color: #dc4c3f;
    font-weight: 600;
}

.cloud span {
    position: absolute;
    top: 0px;
    background: url('../imgs/lovefly.gif') no-repeat;
    /* 圖片隨螢幕大小同步縮放*/
    background-size: cover;
    /* 圖片的位置居中靠左對齊*/
    background-position: center 0;
    width: 50px;
    height: 40px;
}

js

window.addEventListener('pageshow',function () {
   var cloud = document.querySelector('.cloud');
   var img = cloud.querySelector('.img');
   var lis = cloud.querySelectorAll('li');

   //圖片最初的位置
   var imgLeft = img.offsetLeft;
   // 為每個li標籤新增滑鼠事件
    for (var i = 0; i < lis.length; i++) {
        // 滑鼠懸浮事件
        lis[i].addEventListener('mouseenter',function () {
                animate(img,this.offsetLeft,15);
        })

        // 滑鼠離開事件
        lis[i].addEventListener('mouseleave',function () {
                animate(img,imgLeft,15);
        })

        // 滑鼠點選事件
        lis[i].addEventListener('click',function () {
            imgLeft = this.offsetLeft;
            // 採用排他思想  去除其他的current選中樣式
            for (var i = 0; i < lis.length; i++) {
                lis[i].className = '';
            }
            this.className = 'current';
        })
    }
})