Tab选项卡

1.选项卡由英雄联盟、DOTA、风暴英雄、300英雄四块组成; 2.未选择时,默认选中第一个标签页;3.选择某一选项后,下方跳出对应游戏的相关介绍内容。

解:1.获取元素

2.遍历<a>标签

3.绑定鼠标移入事件

(1)取消导航栏当前激活的active;(2)给鼠标移入的a 添加active

(3)内容区同上(1)(2)【添加第 i+1 个.item】

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

<style>

* {

margin: 0;

padding: 0;

}

.tab {

width: 500px;

height: 300px;

margin: 20x;

border: 1px solid black;

}

.tab-nav {

width: 100%;

height: 60px;

line-height: 60px;

display: flex;

justify-content: space-between;

}

.tab-nav ul {

list-style: none;

display: flex;

margin-left: flex-end;

}

.tab-nav ul li {

margin: 0 20px;

font-size: 14px;

}

.tab-nav ul li a {

text-decoration: none;

border-bottom: 2px solid transparent;

color: #333;

}

.tab-nav ul li a.active {

border-color: #e1251b;

color: #e1251b;

}

.tab-content {

padding: 0 16px;

}

.tab-content .item {

display: none;

}

.tab-content .item.active {

display: block;

}

</style>

</head>

<body>

<div class="tab">

<div class="tab-nav">

<ul>

<li><a class="active" href="javascript:;">英雄联盟</a></li>

<li><a href="javascript:;">DOTA</a></li>

<li><a href="javascript:;">风暴英雄</a></li>

<li><a href="javascript:;">300英雄</a></li>

</ul>

</div>

<div class="tab-content">

<div class="item active">这是一个英雄联盟游戏</div>

<div class="item">这是一个DOTA游戏</div>

<div class="item">这是一个风暴英雄游戏</div>

<div class="item">这是一个300英雄游戏</div>

</div>

</div>

<script>

// 获取元素

const as = document.querySelectorAll('.tab-nav a')

// 遍历所有<a>标签

for (let i =0; i < as.length; i++) {

// 绑定鼠标移入事件

asi.addEventListener('mouseenter', function () {

// 取消导航栏当前激活的active(移除'active'类)

document.querySelector('.tab-nav .active').classList.remove('active')

// 给鼠标移入的a添加active

this.classList.add('active')

// 取消内容区当前激活的active(移除'active'类)

document.querySelector('.tab-content .active').classList.remove('active')

// 给内容区中第 i+1 个.item, 添加active (显示当前标签)

document.querySelector(`.tab-content .item:nth-child(${i + 1})`).classList.add('active')

})

}

</script>

</body>

</html>

第一遍复写

1.给内容区添加active,漏了一个括号【.item:nth-child(${i + 1})】(85行)

document.querySelector(`.tab-content .item:nth-child(${i + 1})`).classList.add('active')

第二遍复写 正确

相关推荐
用户298698530141 天前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
程序员大阳3 天前
HTML+CSS+JS对话式实战(3)-活动管理页实现查询、新增、删除API后端接口
javascript·css·html·实战·删除·查询·新增
ZhengEnCi3 天前
12 种高级 UI 交互效果及对应 AI 提示词:从按压回弹到底部抽屉的物理感教学
前端·css·交互设计
ZhengEnCi4 天前
为什么苹果的圆角更高级:连续曲率圆角 Squircle 从超椭圆到 CSS 实现的完全讲解
css·设计
用户3434612783205 天前
用户认证系统在高并发下的幂等性与限流策略踩坑实录
css
啾咪orJIUMI6 天前
Vue 3 + SCSS 实现全屏系统门户:五栏展开与灯光联动
css
htzyl2066 天前
前端阶梯——第四十三章、实战二:待办清单To-Do
前端·javascript·html
程序员大阳6 天前
HTML+CSS+JS对话式实战(1)-开篇:认识我们要做的社团活动发布平台
javascript·css·html·实战·系统·平台·社团活动发布
一支蜉蝣6 天前
Day26 XD安全学习笔记--PHP 应用&模版引用&Smarty渲染&MVC 模型&数据联动&RCE 安全
笔记·网络安全·html·php
用户298698530146 天前
Python 将 Markdown 批量转为 HTML:单文件与目录遍历两种实现
python·html·markdown