Js 特效案例-tab选项切换

902 阅读1分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

一、HTML布局

实现设计好相关需要的区域,html布局如下:

1、tab选项名称区域

2、对应tab选项的图片区域

布局核心html代码如下:

<div class="tab_switch">
        <ul>
            <li>荷花池</li>
            <li>东大门</li>
            <li>博物馆</li>
            <li>四重门</li>
        </ul>
        <div class="imgs">
            <img src="imgs/1.jpg">
            <img src="imgs/2.jpg">
            <img src="imgs/3.jpg">
            <img src="imgs/4.jpg">
        </div>
    </div>

二、CSS样式

因为主要是为了练习一下javascript的代码,html布局的样式信息怎么方便怎么来,样式如下:

image.png

image.png

加完样式信息后的布局如下图:

image.png

三、Javascript特效

1、获取相关标签对象:tab名称选项标签、tab图片选项标签

let ul = document.getElementsByTagName("ul")[0]
let li = document.getElementsByTagName("li");
let img = document.getElementsByTagName("img");

2、为每个tab选项名称设置鼠标移入移出响应事件,当鼠标移入某个tab选项名称区域时,对应tab选项图片区域显示出相应图片;当鼠标移出tab选项名称区域时,整个页面回到初始状态,即第一个tab名称选项标签,和第一个tab图片选项标签。

for (let i = 0; i < li.length; i++) {
    li[i].index = i;
    li[i].addEventListener("mouseover", function() {
        li[0].style.background = "gainsboro";
        for (let j = 0; j < li.length; j++) {
            img[j].style.display = "none";
        }
        this.style.background = "gray";
        img[this.index].style.display = "block";
    })
    li[i].addEventListener('mouseout', () => {
        // 箭头函数this指向为undefine
        li[i].style.background = "gainsboro";
    })
}

3、设置tab图片选项标签区域鼠标移出响应事件,当鼠标移出这个区域时,整个页面回到初始状态,同上一步的响应事件。

ul.addEventListener('mouseout', () => {
    li[0].style.background = "gray";
    for (let j = 0; j < li.length; j++) {
        img[j].style.display = "none";
    }
    img[0].style.display = "block";
})

B站视频网址:www.bilibili.com/video/BV1wv…