如何利用js实现选项卡效果(超简单)

news/2024/7/19 14:43:24 标签: js, javascript, 前端

在开始写我们的选项卡之前,先来看一下最终实现的大概效果:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
那废话不多说,接下来就看看如何去实现这个效果。

首先,利用我们的 html 和 css 基础,写出选项卡的基本布局:

html代码:

<div class="news">
	<ul>
		<li class="active">标题1</li>
		<li>标题2</li>
		<li>标题3</li>
	</ul>
	<ol>
		<li class="active">内容1</li>
		<li>内容2</li>
		<li>内容3</li>
	</ol>
</div>

css样式:

body,div,ul,ol,li{
    margin: 0;padding: 0;
    list-style: none;
}
body{
    position: relative;
}
.news{
    width: 500px;
    height: 500px;
    position: absolute;
    left: 50vw;
    top: 50vh;
    transform: translate(-50%,-50%);
    display: flex;
    flex-direction: column;
}
.news ul{
    width: 100%;
    display: flex;
}
.news ul li{
    flex-grow: 1;
    border: solid black 1px;
    background-color: #b2b2b3;
    font-size: 30px;
    height: 80px;
    text-align: center;
    line-height: 80px;
    cursor: pointer;
}
.news ol{
    flex-grow: 1;
    position: relative;
}
.news ol li{
    width: 100%;
    height: 100%;
    font-size: 100px;
    display: none;
    justify-content: center;
    align-items: center;
    position: absolute;
    top: 0;
    left: 0;
}
.news ol li:nth-of-type(1){
    background-color: #00a0ff;
}
.news ol li:nth-of-type(2){
    background-color: #f15a23;
}
.news ol li:nth-of-type(3){
    background-color: #f5a2c0;
}
.news ul li.active{
    background-color: #fff;
    border-bottom-color: #fff;
}
.news ol li.active{
    display: flex;
}

接下来引入JavaScript代码,实现动态切换效果:

javascript">var title = document.querySelectorAll('ul li');
var content = document.querySelectorAll('ol li');

title.forEach(function (item,key) {
    item.onclick = function () {
        title.forEach(function (i,k) {
            i.className = '';
            content[k].className = '';
        });
        item.className = 'active';
        content[key].className = 'active';
    }
})

这里我们使用两个 forEach 对获得的 li 标签的伪数组进行循环遍历,在点击事件内首先将两个列表中的li标签的 class 名全部清空,然后点击那个标签给哪个标签加上 class 名,并绑定对应的内容li。

当然,这里我们做的是点击事件,就是点击切换选项卡,也可以改为鼠标移入事件,就是鼠标移到标题的 li 标签上时自动切换,这里只需改变 js 代码中的事件:

javascript">// 这样我们就把点击事件改为鼠标移入事件了
item.onclick    =>    item.onmouseover

虽然样式做了一大堆花里胡哨的,但是关键还是在这短短几行 js 代码中,怎么样,是不是很容易就实现 选项卡的效果了:)


http://www.niftyadmin.cn/n/1110729.html

相关文章

Unisys在沪设开源中心 未来3年将聘千名员工(转)

Unisys在沪设开源中心 未来3年将聘千名员工(转)[more]作者&#xff1a;王初虹 出处&#xff1a;每日经济新闻摘要&#xff1a;Unisys透露&#xff0c;其开放源代码(简称开源)中心已正式设到上海。未来3年时间内&#xff0c;Unisys预计聘用约1000名员工。----------------------…

深入了解ZooKeeper的Watcher机制的工作机制

Zookeeper提供了分布式数据的发布/订阅功能&#xff0c;多个订阅者同时监听某一个主题对象&#xff0c;当这个主题对象自身状态变化时&#xff0c;会通知所有订阅者&#xff0c;使它们作出相应的处理&#xff0c;而ZooKeeper实现这一功能的根本就是Watcher机制。 ZooKeeper的Wa…

JavaScript 事件监听用法及其兼容

事件的监听 如果是普通的事件绑定&#xff0c;相同事件类型&#xff0c;只能绑定一个事件处理函数&#xff1b; 如果同一个类型&#xff0c;绑定多个事件处理函数&#xff0c;后绑定的事件会覆盖之前绑定的事件。 如果想同时绑定多个事件处理函数&#xff0c;可以用事件监听解…

IBM称已研制出新磁控工具 分子级计算机不是梦(转)

IBM称已研制出新磁控工具 分子级计算机不是梦(转)[more]【eNet硅谷动力消息】美国东部时间3月31日&#xff08;北京时间4月1日&#xff09;消息&#xff1a;IBM公司声称&#xff0c;其硅谷研究中心的研究人员已经研制出一种磁控工具&#xff0c;可以用它来制造分子计算机。IBM公…

分布式理论之CAP定理(布鲁尔定理)

原文链接&#xff1a;https://segmentfault.com/a/1190000018011851https://segmentfault.com/a/1190000018011851 定义 在理论计算机科学中&#xff0c;CAP定理&#xff08;CAP theorem&#xff09;&#xff0c;又被称作布鲁尔定理&#xff08;Brewers theorem&#xff09;&…

JavaScript 冒泡事件 / 事件的传播

冒泡事件 定义 子级标签触发事件&#xff0c;JavaScript中&#xff0c;父级程序默认也会触发相同类型的事件&#xff0c;这样的效果&#xff0c;称为冒泡事件。 规则 只与标签在HTML中的层级关系有关&#xff0c;与css和显示效果无关 执行顺序&#xff0c;都是从当前标签向…

Linux内核编程(字符设备文件)(转)

Linux内核编程(字符设备文件)(转)[more]那么&#xff0c;现在我们是原始级的内核程序员&#xff0c;我们知道如何写不做任何事情的内核模块。我们为自己而骄傲并且高昂起头来。但是不知何故我们感觉到缺了什么东西。患有精神紧张症的模块不是那么有意义。 内核模块同进程对话有…

分布式理论之BASE理论

原文链接&#xff1a;https://segmentfault.com/a/1190000018019595https://segmentfault.com/a/1190000018019595 什么是BASE理论 如前文中说CAP定理是三个单词的缩写&#xff0c;BASE也是一样&#xff0c;是由Basically Available(基本可用)&#xff0c;Soft state&#xf…