zoukankan      html  css  js  c++  java
  • 封装吸顶导航js (固定导航)

    一、自定义 绑定响应函数

    /*** 自定义 绑定响应函数 ***/
    export const bindEventFunc = (obj, eventStr, func) => {
        if (obj.addEventListener) {
            // 大多数浏览器支持, IE8 及以下不支持
            obj.addEventListener(eventStr, func, false);    // false 指定在捕获的阶段的时候不触发事件
        } else {
            // IE5 - IE10 支持
            obj.attachEvent("on"+eventStr, function(){
                func().call(obj);
            });
        }
    }

    二、获取滚动条当前的位置

    /*** 获取滚动条当前的位置 ***/
    export  const getScrollTop = () => {
        let scrollTop = 0;
        if (document.documentElement && document.documentElement.scrollTop) {
            scrollTop = document.documentElement.scrollTop;  // 火狐 IE9 及以下滚动条是 HTML 的
        } else if (document.body) {
            scrollTop = document.body.scrollTop;   // chrome 滚动条是body的
        } else if (window.pageYOffset) {
            scrollTop = window.pageYOffset;  // IE10 及以上 window.pageXOffset
        }
        return scrollTop;
    }

    三、固定吸顶导航封装

    /**  固定吸顶导航封装  2019-09-20
     *   navBar      想要固定的导航
     *   webBody         页面主体部分
     *   fixedNavBarClassName  吸顶导航固定时的高度(导航高度+距离主体部分的高度)
     *   navBarClassName       吸顶导航未固定时的高度
     *   navHeight   导航高度
     *   marginTop   主体部分距离导航的高度
     */
    export const fixedNav = (fixedNavConfig) => {
        // 加载时先设置一个默认的margin-top
        if (fixedNavConfig.webBody) {
            fixedNavConfig.webBody.style.cssText = `margin-top: ${fixedNavConfig.marginTop}px;`;
        }
    
        bindEventFunc(window, 'scroll', ()=>{
            if (getScrollTop() > 40) {
                fixedNavConfig.navBar.className = fixedNavConfig.fixedNavBarClassName;
                fixedNavConfig.webBody.style.cssText = `margin-top: ${fixedNavConfig.navHeight + fixedNavConfig.marginTop}px;`;
            } else {
                fixedNavConfig.navBar.className = fixedNavConfig.navBarClassName;
                fixedNavConfig.webBody.style.cssText = `margin-top: ${fixedNavConfig.marginTop}px;`;
            }
        });
    }
  • 相关阅读:
    bzoj2018 [Usaco2009 Nov]农场技艺大赛
    2014.9.27模拟赛【栅栏迷宫】
    cf471B MUH and Important Things
    cf471A MUH and Sticks
    bzoj3016 [Usaco2012 Nov]Clumsy Cows
    bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
    bzoj1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典
    bzoj3299 [USACO2011 Open]Corn Maze玉米迷宫
    codevs1040 统计单词个数
    codevs1039 数的划分
  • 原文地址:https://www.cnblogs.com/mailyuan/p/11679127.html
Copyright © 2011-2022 走看看