菜单栏子菜单缓慢下拉回收效果

前段时间一直想用这个功能,百度了好长时间也没找到,正好最近学了js,索性自己来写一下,纯js实现,可能写的也有瑕疵,欢迎指教

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link href="StyleSheet2.css" rel="stylesheet" />
    <script src="JavaScript2.js"></script>
</head>
<body>
    <div id="menu">
        <ul>
            <li class="main">
                <a href="#">1</a>
                <ul>
                    <li>
                        <a href="#">a</a>
                    </li>
                    <li>
                        <a href="#">b</a>
                    </li>
                    <li>
                        <a href="#">c</a>
                    </li>
                </ul>
            </li>
            <li class="main">
                <a href="#">2</a>
                <ul>
                    <li>
                        <a href="#">d</a>
                    </li>
                    <li>
                        <a href="#">e</a>
                    </li>
                    <li>
                        <a href="#">f</a>
                    </li>
                </ul>
            </li>
            <li class="main">
                <a href="#">3</a>
                <ul>
                    <li>
                        <a href="#">g</a>
                    </li>
                    <li>
                        <a href="#">h</a>
                    </li>
                    <li>
                        <a href="#">i</a>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

  外部样式:

body {
    margin: 0px;
}

#menu{
    width: 302px;
    height: 35px;
    margin: 20px auto;
    background: red;
}

#menu ul{
    margin: 0px;
    padding: 0px;
    list-style: none;
}

#menu ul li{
    float: left;
    width: 100px;
    line-height: 35px;
    text-align: center;
    border-right: 1px solid #ccc;
}

#menu ul li:last-child{
    border-right: none;
}

#menu ul li a{
    text-decoration: none;
    font-size: 12px;
    width: 100px;
    height: 35px;
    display: block;
}

#menu .main ul{
    display: none;
    overflow: hidden;
    height: 0px;
    margin: 0px;
    padding: 0px;
    list-style: none;
}

#menu .main ul li{
    background: #ccc;
    width: 100px;
    height: 35px;
    border-bottom: 1px solid black;
}

  js部分:

window.onload = function () {
    var fli = document.getElementsByClassName(‘main‘);
    //alert(fli.length);
    for (var i=0; i<fli.length; i++) {
        var target = fli[i].getElementsByTagName(‘a‘)[0];
        var t = fli[i].getElementsByTagName(‘ul‘)[0];
        var li = t.getElementsByTagName(‘li‘);

        target.yidong = t;
        target.len = li.length;
        target.timer = null;
        target.onmouseover = function () {
            this.yidong.style.display = ‘block‘;
            move(this.len*(35+1), this, this.yidong);
        };

        target.onmouseout = function () {
            move(0, this, this.yidong);
            //this.yidong.style.display = ‘none‘;
        };
    }
};

function move(x, obj, t) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
        var speed = (x - t.offsetHeight) / 26;

        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);

        if (t.offsetHeight == x) {
            clearInterval(obj.timer);
        }
        else {
            t.style.height = t.offsetHeight + speed + ‘px‘;
        }

    }, 30);
};

  

时间: 2024-11-06 00:50:46

菜单栏子菜单缓慢下拉回收效果的相关文章

1.鼠标点击换样式+2.下拉菜单缓慢显示/隐藏样式效果

1.鼠标点击换样式 <style type="text/css"> .aa{ width:90px; height:60px;text-align:center; vertical-align:middle; line-height:60px; margin-right:10px; font-size:19px; float:left; background-color:#06F} </style> <body> <div style=&quo

纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器)

原文:纯CSS实现下拉菜单及下拉容器等(纯CSS实现导航条及导航下拉容器) 虽然网上类似甚至相同的案例有很多,但是我还是写下,以记下笔记,也可供大家参考 希望大家可以指导批评~~ 首先我们以列表ul li 来开始我们菜单也可以说导航条的制作: 在页面中我们首先构建以下XHTML结构: <body> <ul id="navWrapper"> <li> <a href="#">Menu A</a> <ul

使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突

使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种冲突 如果你还在为处理滑动冲突而发愁,那么你需要静下心来看看这边文章,如果你能彻底理解这篇文章中使用的技术,那么,一切滑动冲突的问题解决起来就轻而易举了:先扔一个最终实现的效果图 先分析下效果图中实现的功能点 顶部下拉时背景图形成视差效果 上拉时标题栏透明切换显示 底部实现TabLayout+ViewPager+Fragment+RecyclerV

JQuery和ASP.NET分别实现级联下拉框效果

在学习JQuery之前知道下拉框的级联效果可以通过asp.net控件实现,现在学习了JQuery,知道了JQuery和select也能实现.我分别举两个小例子说明这两种方法如何实现. 1.用JQuery和select来实现汽车厂商和汽车类型的联动 效果图:       逻辑分析图: html代码: [html] view plain copy <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

完美解决safari、微信浏览器下拉回弹效果。

完美解决safari.微信浏览器下拉回弹效果,只保留局部回弹效果. CSS代码 .box{ overflow: auto; -webkit-overflow-scrolling: touch; } HTML代码 <body class="box"> <div class="scroll" style="height:1500px"> </div> </body> JS代码 var overscrol

如何实现导航菜单栏中的二级下拉菜单?

我们在淘宝.搜狐等大型网站上都可以看到使用的一些二级下拉菜单,比如下面这张图片. 但是如何实现类似的图片呢?实际上,我们有至少三种方式来实现,下面,我附上代码供大家参考. 1.仅使用html和css 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <meta charset="UTF-8"> <title>Documen

纯洁CSS实现下拉菜单和下拉容器(纯洁CSS导航栏和导航下拉容器)

虽然网上课程似即使案件大同小异,但我还是写,记笔记,也为您提供参考 我希望你能指导批评~~ 首先,我们必须列出ul li 开始我们的导航栏菜单也能说生产: 在下面的页面,我们先建XHTML结构体: <body> <ul id="navWrapper"> <li> <a href="#">Menu A</a> <ul> <li><a href="#">M

ionic的侧滑和下拉刷新效果

一,侧滑效果 主要涉及到三个地方 1,菜单页面 主要分为主页面和侧滑页面两部分,又分别都包含顶部bar和主要内容部分 注意:主页面内容部分,关键的菜单内容name要对应到是菜单内容的页面(在app.js中,下面会贴出) item href的构成:1,#本页面  2,app本页面链接   3,todolist/{{menu.groupId}}列表页面链接(没有冒号) <ion-side-menus> <!--主页面--> <ion-side-menu-content class

用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)

这个导航下拉菜单需要实现的功能是:下拉菜单的宽度与浏览器视口的宽度一样宽:一级导航只有两项,当鼠标移到一级导航上的导航项时,相应的二级导航出现.在本案例中通过改变二级导航的高度来实现二级导航的显示和消失.为了便于理解我画了一个图,如下: 在这个案例主要用到的知识有:设置定时器,清除定时器,mouseout和mouseover事件,另外还有css中position相关知识.本案例分为两部分讲解.第一部分html和css,第二部分js. 一. html和css 将导航这个导航条包裹在一个div中,这