固定导航栏--顶部悬浮,效果如图所示

文件

html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{margin:0;padding:0}
        img{
            vertical-align: top;
        }
		.top img{
			height:168px;
		}
        .main{
            margin:0 auto;
            width:1000px;
            margin-top:10px;

        }
		
    </style>
</head>
<body>
	<div class="top" id="top">
	    <img src="images/top.png" alt=""/>
	</div>
	<div class="nav" id="Q-nav">
	    <img src="images/nav.png" alt=""/>
	</div>
	<div class="main">
	    <img src="images/main.png" alt=""/>
	</div>
</body>
</html>
<script src="common.js"></script>
<script type="text/javascript">
	
	//要让导航栏实现吸顶效果,要把导航设置为固定定位。
	//什么情况设置?
		//在滚动条滚动到 168 高度时开始固定位置
		//当滚动条滚走的距离小于168时,恢复原来的位置
	let $nav = $('#Q-nav');
	window.onscroll = function(){
		let stop = document.documentElement.scrollTop || document.body.scrollTop;
		if(stop >= 168){
			$nav.style.position = "fixed";
			$nav.style.top = 0;
		}else{
			$nav.style.position = "static";
		}
	}

</script>

common.js

//  判断数组是否还有这个元素
function include(arr, item) {
    for(var i = 0; i < arr.length; i++) {
       if(arr[i] === item) {
           return true;
       } 
    }
    return false;
}
// 返回元素所在的位置
function indexOf(arr, item) {
    for(var i = 0; i < arr.length; i++) {
        if(arr[i] === item) {
            return i;
        } 
     }
     return -1;
}

// 任意区间随机整数
function getRandom(max, min) {
    min = min || 0;
    if(min > max) {
        var a = min;
        min = max;
        max = a;
    }
    return min + Math.floor(Math.random() * (max - min + 1));
}

// 数组去重
function noRepeat(arr) {
    var __arr = [];
    for(var i = 0; i < arr.length; i++) {
        // 存在返回true, 不存在返回false
        var bool = __arr.indexOf(arr[i])
        if(bool == -1) {
            __arr.push(arr[i]);
        }
    }
    return __arr;
}

function $(ele) {
    return document.querySelector(ele);
}
function $A(ele) {
    return document.querySelectorAll(ele);
}

function getRandomColor() {
    var str = '0123456789abcdef';
    var color = '#';
    for(var i = 0; i < 6; i++) {
        color += str[getRandom(str.length - 1)];
    }
    return color;
}

// 格式化url, 获取参数
function parseUrl(url) {
    var obj = {};
    url = url.split('?')[1].split('#')[0];
    url = url.split('&');
    url.forEach(function (x) {
        var arr = x.split('=');
        obj[arr[0]] = arr[1];
    })
    return obj;
}

// 获取非行内样式
function getStyle(ele, attr) {
    if(window.getComputedStyle) {
        return window.getComputedStyle(ele, null)[attr]
    }
    return ele.currentStyle[attr];
}
posted on 2019-03-07 21:50  风往南  阅读(646)  评论(1编辑  收藏  举报