实现点击切换的标签选项卡

发布于 2023-03-06 22:10:09 字数 3813 浏览 105 评论 0

案例分析

  1. 首先,实现了最基本的功能:点击不同的按钮切换显示不同的内容;
  2. 其次,加了定时器,用的是 setInterval,当然用 setTimeout 也是可以的;
  3. 最后,给 body 绑定了onmouseover 和 onmouseout 事件,鼠标移入清除定时器,移出又添加定时器。

实现过程

编写网页的内容和样式

HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>点击切换选项卡代码</title>
</head>
<body>
<div>
    <div>
        <ul>
            <li onclick="setTab('one',1)">首页</li>
            <li onclick="setTab('one',2)">点击看看</li>
            <li onclick="setTab('one',3)">会自动的</li>
            <li onclick="setTab('one',4)">我的网站</li>
        </ul>
    </div>
    <div>
        <div>我的网站</div>
        <div>JS代码,导航菜单</div>
        <div>看到效果了吗???</div>
        <div>我的网站我做主</div>
    </div>
</div>
<div></div>
</body>
</html>

CSS

* {
    margin: 0;
    padding: 0;
    list-style-type: none;
}
a, img {
    border: 0;
}
body {
    font: 12px/180% Arial, Helvetica, sans-serif, "新宋体";
}
.tab1 {
    width: 401px;
    border-top: #cccccc solid 1px;
    border-bottom: #cccccc solid 1px;
    margin: 50px auto 0 auto;
}
.menu {
    height: 28px;
    border-right: #cccccc solid 1px;
}
.menu li {
    float: left;
    width: 99px;
    text-align: center;
    line-height: 28px;
    height: 28px;
    cursor: pointer;
    border-left: #cccccc solid 1px;
    color: #666;
    font-size: 14px;
    overflow: hidden;
    background: #E0E2EB;
}
.menu li.off {
    background: #FFFFFF;
    color: #336699;
    font-weight: bold;
}
.menudiv {
    height: 200px;
    border-left: #ccc solid 1px;
    border-right: #ccc solid 1px;
    border-top: 0;
    background: #fefefe
}
.menudiv div {
    padding: 15px;
    line-height: 28px;
}

因为都是很基础的,我就主要讲解一下JS部分,后面的案例也一样,请理解。

实现特效

var name_0='one';
var cursel_0=1;
var ScrollTime=3000;//循环周期(毫秒)
var links_len,iIntervalId;
window.onload=function(){
    var links = document.getElementById("tab1").getElementsByTagName('li')
    links_len=links.length;
    for(var i=0; i<links_len; i++){
        links[i].onmouseover=function(){
            clearInterval(iIntervalId);
            this.onmouseout=function(){
                iIntervalId = setInterval(Next,ScrollTime);;
            }
        }
    }
    document.getElementById("con_"+name_0+"_"+links_len).parentNode.onmouseover=function(){
        clearInterval(iIntervalId);
        this.onmouseout=function(){
            iIntervalId = setInterval(Next,ScrollTime);;
        }
    }
    setTab(name_0,cursel_0);
    iIntervalId = setInterval(Next,ScrollTime);
}
function setTab(name,cursel){
    cursel_0=cursel;
    for(var i=1; i<=links_len; i++){
        var menu = document.getElementById(name+i);
        var menudiv = document.getElementById("con_"+name+"_"+i);
        if(i==cursel){
            menu.className="off";
            menudiv.style.display="block";
        }
        else{
            menu.className="";
            menudiv.style.display="none";
        }
    }
}
function Next(){
    cursel_0++;
    if (cursel_0>links_len)cursel_0=1
    setTab(name_0,cursel_0);
}

注意

onload 事件会在页面或图像加载完成后立即发生,类似与 jQuery 中的 ready 事件,推荐都加上,或者也可以使用立即执行函数,这就看个人喜欢;变量最好是在最开始的时候就声明,因为使用 var 声明的变量会发生声明提前,即使你在变量声明之前调用也不会报错;但是在 es6 中的 let 就很好的纠正了这一现象,所以我建议大家要养成一个好的习惯,先声明,在调用;

在线查看:https://www.wenjiangs.com/runcode/mBD0OX2Y

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

甜警司

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文