利用JS实现新浪下拉菜单

JavaScript09

利用JS实现新浪下拉菜单,第1张

<style>

        .clearfix::after {

            display: block

            content: ""

            clear: both

        }

        ul,

        li {

            list-style: none

        }

        .nav>li {

            float: left

            margin: 0 10px

        }

        .nav>li ul {

            display: none

        }

    </style>

</head>

<body>

    <ul class="nav clearfix">

        <li>

            <a href="">微博</a>

            <ul>

                <li>私信</li>

                <li>评论</li>

                <li>@我</li>

            </ul>

        </li>

        <li>

            <a href="">微博</a>

            <ul>

                <li>私信</li>

                <li>评论</li>

                <li>@我</li>

            </ul>

        </li>

        <li>

            <a href="">微博</a>

            <ul>

                <li>私信</li>

                <li>评论</li>

                <li>@我</li>

            </ul>

        </li>

        <li>

            <a href="">微博</a>

            <ul>

                <li>私信</li>

                <li>评论</li>

                <li>@我</li>

            </ul>

        </li>

    </ul>

    <script>

        //案例分析:导航栏里面的li都要有鼠标经过效果 所以需要循环注册鼠标事件

        //核心原理:当鼠标经过li里面的第二个孩子ul显示 当鼠标离开 ul隐藏

        var nav = document.querySelector('.nav')

        var lis = nav.children

        for (var i = 0 i < lis.length i++) {

            lis[i].onmouseover = function() {

                this.children[1].style.display = 'block'

            }

            lis[i].onmouseout = function() {

                this.children[1].style.display = 'none'

            }

        }

    </script>

其实思路很容易的,先做大导航。然后做下拉菜单,但是下拉菜单默认是display:none当鼠标指向上边的大导航的项目的时候(mouseover),对应的下拉菜单的CSS样式中的display属性设置为block,mouseout的时候又置为none;

其实,这样的功能根本就用不着js代码,其实,用CSS就OK了!而且通用性好!

但如果你要的话,那写写给你也无妨!

以下代码:

js自动给菜单和内容的鼠标移动事件,

在HTML里没有鼠标移动的代码设置,所以,通用性好!

在菜单和内容里设置了相对应的顺序,就能直接支持!

你要改样式,只要改:#mNav .mover(移动事件)

和 #mNav .mout(离开后的样式)

<html>

<head>

<style>

#mNav {border:1px #afafffdisplay:blockwidth:600px}

#mNav li{display:inlinecursor:handwidth:100pxtext-align:centercolor:ffffff}

#mNav .mover{ background:#556ed8border:#efefff 3px outset}

#mNav .mout, #mNav li{ background:#335ea8border:#efefff 3px inset}

#mItems {border:1px #afafffwidth:600pxheight:500pxbackground:#e2efff}

#mItems div{display:none}

</style>

<script>

function initNavMenu()

{

var _mNav = document.getElementById("mNav")

for(var i=0 i <_mNav.childNodes.length i++ )

{

_mNav.childNodes[i].name=i

_mNav.childNodes[i].onmouseover=function()

{

var index= parseInt( this.name )

var _mNavs = document.getElementById("mNav")

for(var j=0 j <_mNavs.childNodes.length j++ )

_mNavs.childNodes[j].className="mout"

this.className="mover"

var _mItems = document.getElementById("mItems").childNodes

for( j=0j<_mItems.length j++)

_mItems[j].style.display="none"

_mItems[ index ].style.display="block"

}

}

document.getElementById("mItems").childNodes[0].style.display="block"

document.getElementById("mNav").childNodes[0].className="mover"

}

window.onload = function()

{

initNavMenu()//初始化菜单导航函数

}

</script>

</head>

<!--------------body ------------->

<body>

<ul id=mNav>

<li>政治</li>

<li>娱乐</li>

<li>经济</li>

<li>文化</li>

</ul>

<div id=mItems >

<div>--政治--内容---</div>

<div>--娱乐--内容---</div>

<div>--经济--内容---</div>

<div>--文化--内容---</div>

</div>

</body>

</html>