原生js实现波浪导航效果

 更新时间:2022年04月13日 08:26:44   作者:Mr.王征  
这篇文章主要为大家详细介绍了原生js实现波浪导航效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了原生js实现波浪导航效果的具体代码,供大家参考,具体内容如下

展示效果:

源码展示:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>js波浪导航</title>
<style>
 * {undefined
    margin:0;
    padding:0;
    font-family:"微软雅黑";
}
body {undefined
    width:100vw;
}
.wave-ul {undefined
    list-style:none;
}
.wave-a {undefined
    text-decoration:none;
    display:block;
}
.wave-span {undefined
    background:#f69;
    color:#fff;
    width:20px;
    display:block;
}
.waveli-in-right {undefined
    float:left;
}
.waveli-in-left {undefined
    float:right;
}
.wavenav-right {undefined
    left:100%;
    margin-left:-20px;
}
.wavenav-left {undefined
    left:0%;
    margin-left:-130px;
}
.wave-li {undefined
    margin:1px;
    display:block;
    background:#ccc;
    width:150px;
    overflow:hidden;
}
.wave-nav {undefined
    position:fixed;
}
</style>
</head>
<body>
<div id="test"><div></div></div>

<script>
var wavenav = function(json, dir, top) {undefined
    this.json = json;
    this.dir = dir;
    this.top = top;
}
wavenav.prototype = {undefined
    constructor: wavenav,
    createHTML: function() {undefined
        var json = this.json;
        var htmlstr = '<nav class="wave-nav"><ul class="wave-ul">';
        for (var key in json) {undefined
            htmlstr += '<li class="wave-li"><span class="wave-span">' + key +
                '</span><a href="' + json[key][1] +
                '" class="wave-a">' + json[key][0] + '</a></li>';
        }
        htmlstr += '</ul></nav>'
        return htmlstr;
    },
    renderCSS: function() {undefined
        var dir = this.dir;
        var top = this.top;
        var oNavLenght = document.getElementsByClassName('wave-nav').length;
        var oLastNav = document.getElementsByClassName('wave-nav')[oNavLenght - 1];
        oLastNav.style.top = top;
        var oLastUl = oLastNav.children[0];
        var oLi = oLastUl.children;
        switch (dir) {  
            case 'LEFT':
                addClassName('wavenav-left', 'waveli-in-left');
                break;
            default:
                addClassName('wavenav-right', 'waveli-in-right');
                break;
        }

        function addClassName(classname1, classname2) {undefined
            oLastNav.classList.add(classname1);
            for (let i = 0; i < oLi.length; i++) {undefined
                oLi[i].firstChild.classList.add(classname2);
                oLi[i].lastChild.classList.add(classname2);
            }
        }
    },
    bindEVENT: function() {undefined
        var oUl = document.getElementsByClassName('wave-ul');
        for (let i = 0; i < oUl.length; i++) {undefined
            oUl[i].onmouseover = function() {undefined
                var oLi = oUl[i].children;
                for (let i = 0; i < oLi.length; i++) {undefined
                    oLi[i].style.transition = '1s ' + 0.1 * i + 's';
                    if (oLi[i].firstChild.className == 'wave-span waveli-in-left') {undefined
                        oLi[i].style.marginLeft = '130px';
                    } else {undefined
                        oLi[i].style.marginLeft = '-130px';
                    }
                }
            }
            oUl[i].onmouseleave = function() {undefined
                var oLi = oUl[i].children;
                for (let i = 0; i < oLi.length; i++) {undefined
                    oLi[i].style.marginLeft = '0px';
                }
            }
        }
    }
}

function createWaveNav(dom, json, direction = 'RIGHT', top = '0px') {undefined
    var n = new wavenav(json, direction, top);
    dom.innerHTML += n.createHTML();
    n.renderCSS();
    wavenav.prototype.bindEVENT();
}


var json = {undefined
    '1': ['HTML', 'javascript:void(0)'],
    '2': ['CSS', 'javascript:void(0)'],
    '3': ['JAVASCRIPT', 'javascript:void(0)'],
}
var json1 = {undefined
    '1': ['HTML', 'javascript:void(0)'],
    '2': ['CSS', 'javascript:void(0)'],
    '3': ['JAVASCRIPT', 'javascript:void(0)'],
    '4': ['java', 'javascript:void(0)']
}
//调用方法
createWaveNav(document.getElementById('test'), json);
createWaveNav(document.getElementById('test'), json1, 'RIGHT', '200px');
createWaveNav(document.getElementById('test'), json1, 'LEFT');
createWaveNav(document.getElementById('test'), json, 'LEFT', '200px');
</script>

</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • javascript 动态样式添加的简单实现

    javascript 动态样式添加的简单实现

    下面小编就为大家带来一篇javascript 动态样式添加的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • JavaScript递归操作树形结构代码示例

    JavaScript递归操作树形结构代码示例

    前端树形结构一般用于网页的地理位置输入框,地理位置级联选择,人员的部门选择等,这篇文章主要给大家介绍了关于JavaScript递归操作树形结构的相关资料,需要的朋友可以参考下
    2024-01-01
  • javascript防抖函数debounce详解

    javascript防抖函数debounce详解

    这篇文章主要介绍了javascript防抖函数debounce,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • JavaScript实现动态添加、移除元素或属性的方法分析

    JavaScript实现动态添加、移除元素或属性的方法分析

    这篇文章主要介绍了JavaScript实现动态添加、移除元素的方法,结合实例形式分析了javascript针对页面元素动态添加、移除、设置等相关函数与使用技巧,需要的朋友可以参考下
    2019-01-01
  • 浅析Bootstrap表格的使用

    浅析Bootstrap表格的使用

    Bootstrap - 简洁、直观、强悍、移动设备优先的前端开发框架,让web开发更迅速、简单。下面给大家介绍Bootstrap表格的使用的相关知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • JavaScript实现生成动态表格和动态效果的方法详解

    JavaScript实现生成动态表格和动态效果的方法详解

    这篇文章主要介绍了如何通过JavaScript语言实现动图表格的生成以及动态效果的实现,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-02-02
  • 深入理解JavaScript中为什么string可以拥有方法

    深入理解JavaScript中为什么string可以拥有方法

    下面小编就为大家带来一篇深入理解JavaScript中为什么string可以拥有方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 一文教你学会用JS实现图片懒加载功能

    一文教你学会用JS实现图片懒加载功能

    图片懒加载是日常开发会经常使用的一个功能,但是在日常中可能使用v-lazy便直接实现了图片懒加载,但是本文将通过原生js来实现一下图片懒加载的功能,感兴趣的同学跟着小编一起来看看吧
    2023-07-07
  • List all the Databases on a SQL Server

    List all the Databases on a SQL Server

    List all the Databases on a SQL Server...
    2007-06-06
  • 开源一个微信小程序仪表盘组件过程解析

    开源一个微信小程序仪表盘组件过程解析

    这篇文章主要介绍了开源一个微信小程序仪表盘组件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论