利用setTimeOut 和clearTimeOut 方法控制写一个 滑动导航显示不同信息的效果

效果如图鼠标滑动导航  下边显示不同效果

html代码和css格式代码

<body>

<div id="tab" class="tab">    <div class="tab-title" id="tab-title">        <ul>            <li class="select" data-flag="0"><a href="#">公告</a></li>            <li  data-flag="1"><a href="#">规则</a></li>            <li  data-flag="2"><a href="#">论坛</a></li>            <li  data-flag="3"><a href="#">安全</a></li>            <li  data-flag="4"><a href="#">公益</a></li>        </ul>    </div>    <div class="tab-content" id="tab-content">        <div class="tabct" style="display: block">            <ul>                <li><a href="#">淘宝招募卖家志愿者</a></li>                <li><a href="#">淘宝招募卖家志愿者</a></li>                <li><a href="#">淘宝招募卖家志愿者</a></li>                <li><a href="#">淘宝招募卖家志愿者</a></li>            </ul>        </div>        <div class="tabct" style="display: none">            <ul>                <li><a href="#">阿里推出兼职神器</a></li>                <li><a href="#">阿里推出兼职神器</a></li>                <li><a href="#">阿里推出兼职神器</a></li>                <li><a href="#">阿里推出兼职神器</a></li>            </ul>        </div>        <div class="tabct" style="display: none">            <ul>                <li><a href="#">700家热风淘宝路</a></li>                <li><a href="#">700家热风淘宝路</a></li>                <li><a href="#">700家热风淘宝路</a></li>                <li><a href="#">700家热风淘宝路</a></li>            </ul>        </div>        <div class="tabct" style="display: none">            <ul>                <li><a href="#">是赚钱还是骗子</a></li>                <li><a href="#">是赚钱还是骗子</a></li>                <li><a href="#">是赚钱还是骗子</a></li>                <li><a href="#">是赚钱还是骗子</a></li>            </ul>        </div>        <div class="tabct" style="display: none">            <ul>                <li><a href="#">淘宝用户必备神器</a></li>                <li><a href="#">淘宝用户必备神器</a></li>                <li><a href="#">淘宝用户必备神器</a></li>                <li><a href="#">淘宝用户必备神器</a></li>            </ul>        </div>    </div>

</div>
</body>

css样式:
<style>    body {        background-color: #eeeeee;    }    * {        margin: 0;        padding: 0;        list-style: none;        font-size: 12px;    }    a {        text-decoration: none;        color: #3C3C3C;    }    .tab {        width: 298px;        height: 98px;        /*overflow: hidden;*/        margin: 10px;        border: 1px solid #eeeeee;        background-color: #ffffff;    }    .tab-title {        width: 300px;        height: 26px;    }    .tab-title ul li {        float: left;        width: 58px;        height: 26px;        text-align: center;        line-height: 26px;        padding: 0 1px;    }    .tab-title ul {        width: 300px;    }    .tab-title ul li.select {        font-weight: 700;        border-bottom: 2px solid orange;    }    .tab li a:hover {        color: orange;    }    .tabct {        margin: 20px 10px;        overflow: hidden;    }    .tabct li {        float: left;        width: 139px;        height: 25px;    }

</style>js代码:
<script>

var lilist = document.getElementById("tab-title").getElementsByTagName("li");  // 获取到的是li标签的一个集合//先获取导航栏的li(利用链式选取)
var divlist = document.getElementsByClassName("tabct");                         //获取到每个导航选项对应的 div内容集合var timer = null ;                                                              //定义一个timer 方便后面使用setTimeOut和clearTimeOut方法for(var i = 0;i<lilist.length;i++){                                             //因为有多个选项 所以利用for循环来简化代码 循环次数是 导航选项的个数     lilist[i].value = i;            // 给导航里的li进行 value的赋值(li的属性中有value属性 可以读写)                                        为什么要给他赋值呢,因为要与每个对应的内容绑定  所以必须建立一个关系  通过value来建立  也可以                                        lilist[i].flag = i;  这里的flag是随便取的 (可以打印 lilist  然后在每一项的  dataset属性里面看到我们给他自定以的flag值,这里的flag名字是随便起的)                                        也可以  在HTML中  给导航的每个li 设置   data- 加上 自己定义的名字  然后赋值 ,例如:data-haha = “1”;      lilist[i].onmouseover = function(e){ //对每个导航巷进行鼠标进入时显示内容事件            var that = this;                // this 是鼠标滑动绑定的真正触发者,也就是 lilist[i]; 为什么 用一个that变量承载呢,因为后面我们需要用到该指定;            timer = setTimeOut(             //设定导航选项延迟触发,                  function(){                       for(var i = 0;i<lilist.length;i++){ // 在事件触发时候  需要先将 所以导航项的className制空,以及display制none值
                            if(lilist[i].className==‘select‘){                                         lilist[i].className="";   //制空className                                   divlist[i].style.display=‘none‘; 改变display值                                   break;                      //因为页面里只设置了一个className=select的li 所以找到它清除退出循环就可以了                             }
                         }                        that.className = "select"; //  将事件触发者的className  设置成select;这里that 就代表事件触发者;                        divlist[that.dataset.flag].style.display=‘block‘;   //显示对于的内容
                   }                  ,300                                //延长时间300 毫秒                  )                           }        lilist[i].onmouseout=function(){              clearTimeOut(timer);          //  清楚Settimeout事件使得导航在  快速滑动的时候 不会发生内容的闪动            }}

</script>
时间: 2024-08-07 00:16:57

利用setTimeOut 和clearTimeOut 方法控制写一个 滑动导航显示不同信息的效果的相关文章

如何使用viewpager与fragment写一个app导航activity

今天我们来看一下如何使用viewpager和fragment组合来写一个app导航activity,这里使用到了android开源控件viewpagerindicator,有兴趣的同学可以去它网站上看看它的介绍. 附上效果截图一张: demo中只有一个activity,是用activity_main.xml来布局,其内容如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:and

python 学习笔记 12 -- 写一个脚本获取城市天气信息

最近在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么能够显示后最重要的就是显示什么的问题了.最容易想到的就是显示时间啊,CPU利用率啊,IP地址之类的.那么我觉得呢,如果能够显示当前时间.温度也是甚好的,作为一个桌面小时钟还是很精致的. 1. 目前有哪些工具 目前比较好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也很简单: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-util 安装

微信小程序 使用swiper制作一个滑动导航

最近在做一个导航的时候,发现使用overflow-x: auto来做多内容滑动导航效果很不好,思索是不是可以使用swiper来做一个,研究了下其实发现原理基本相同 这里说下,要用swiper做导航菜单,有几个要特别注意的参数 1:autoplay,官方说明[是否自动切换],这个不填,菜单可不能自己动 2:indicator-dots ,官方说明[是否显示面板指示点],这个也不填, 3:display-multiple-items,官方说明[同时显示的滑块数量],敲重点,这个参数必须设为1,要与p

利用拼接字符串的方式来写一个简化版的后台网站(推荐初学者进)

今天用一般处理程序ashx做一个如下的效果, 主要是为了实现功能,界面丑就丑把. 先是显示界面DomeHandler.ashx public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/html"; StringBuilder sb = new StringBuilder(); //连接字符串 string str = System.Configuration.Conf

在Linux下利用替换函数(exec函数家族)写一个简单的myshell

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/wait.h> #include <unistd.h> void swap(char **p,char **q) { char *tmp=*p; *p=*q; *q=tmp; } int main(int argc,char *argv[]) { pid_t id; while(1){ printf(&

js在IE8+兼容String没有trim方法,写一个兼容ie8一下的浏览器的trim()方法

String.prototype.trim = function(){ return Trim(this);}; function LTrim(str) { var i;     for(i=0;i<str.length;i++)     {         if(str.charAt(i)!=" "&&str.charAt(i)!=" ")break;     }     str=str.substring(i,str.length);   

【真的是随笔】如何利用htaccess把网站流量引到一个页面上(站点维护页效果)

咕咕咕,好久没来博客园转悠了,最近(这个最近好长啊)一直没时间写博(事实上也不知道写点什么有逼格的东西),所以一直都在潜水,,,(此处省略n字) 好了切入正题,关于如何把网站的所有流量引向一个页面的方法有很多,比如像wordpress可以开维护模式或者装一个插件,ThinkPHP应该可以在前面设置一个路由吧(我没试过,只是估计可以),但对于apache来说有种更方便的方法,就是写.htaccess..但是关于怎么写网上有很多资料,但是我怎么搜到的都是错误的(放上目录直接500或者重定向循环了,我

用React写一个工大导航

Online: https://brenner8023.github.io/gdut-nav/ GitHub地址: https://github.com/brenner8023/gdut-nav 笔者在广工读书这几年, 总的来说是快乐地生活, 不过生活之中也有一些烦恼存在着, 比如去校医院看病却不知道门诊的时间, 想要知道教学日历, 每次都要询问同学等等. 这些事情虽然是小事小问题, 但是它们不止一次地困扰着我. 为此, 我决定利用我大学本科学到的知识来解决这些问题. 问题的解决之道就是设计并开

用jquery写一个滑动TAB 例子

HTML结构 <div class="tab"> <div class="nav"> <ul class="clear"> <li class="on"><a href="#">one</a></li> <li><a href="#">two</a></li>