前端实现tab栏切换,这么常见的案例你学会了吗?

news2025/1/21 1:02:15

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:硬泡 javascript🍁
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥
    请添加图片描述

前些天发现了一个比较好的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

点击跳转到网站:人工智能学习

上期传送门:
👉初识 JavaScript(揭开javascript的神秘面纱)
👉javascript中的数据类型
👉javascript中的数据类型转换
👉javascript 基础案例(循环)
👉面试官最爱考的 javascript 预解析,你搞明白了吗?
👉“撩过”c++的对象,“拿捏”了python的对象,你还怕拿不下javascript的对象吗?
👉javascript 内置对象Math总结及其案例
👉 javascript 内置对象Date总结及案例
👉解锁前端密码框常见功能做法
👉前端实现动态生成表格,是蒸的C
👉四行js代码让别人无法复制你的网站文字,八行程序员都哭了
👉这些前端案例看似很简单(内附动图)


目录

    • 📋 个人简介
  • 🌟前言
    • ✨思路
    • ✨代码
      • 💥原生版
      • 💥jquery版
    • ✨动图演示
  • 🌟结语

🌟前言

tab栏切换制作是我们web开发中一个十分常见的案例,今天在这里写写,希望对大家有所帮助,还是要用到我们上节写到的排他思想!好好学哦!

✨思路

1.循环为每个小li注册事件,在注册事件之前同时为点击的小li添加自定义属性index用来保存索引号。
2.用排他思想,点击小li后首先循环通过改变className去掉所有按钮背景色(干掉其他人),然后为点击的按钮添加class增加背景色(留下我自己)
3.循环将下面显示区的display属性设置为none,然后获取你当前点击的li的index属性值,这个索引和下面的div是对应的,最终将这个index对应的div的display属性设置为block就可以了。还是排他思想。

在这里插入图片描述

✨代码

💥原生版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        li{
            list-style: none;
        }
        .tab{
            width: 38%;
            height: 400px;
            margin: 100px auto;
        }
        .tab_list{
            width: 100%;
            height: 36px;
            background-color: #f7f7f7;
            border: 1px solid #eee;
            border-bottom: 1px solid #e4393c;
        }
        .current {
            background-color: #e4393c;
            color: #fff;
        }
        .tab_list li{
            font: 14px Microsoft YaHei;
            display: inline-block;
            padding:9px 25px;
        }
        .tab_list li:hover{
            cursor: pointer;
        }
        .tab_con{
            width: 100%;
            height: 360px;
            border: 1px solid #eee;
            border-top: none;

        }
        .tab_con .item{
            height: 100%;
            display: none;
            font-size: 13px;
            text-indent: 13px;

        }
    </style>
</head>
<body>
    <div class="tab">
        <div class="tab_list">
            <ul>
                <li class="current">商品介绍</li>
                <li>规格与包装</li>
                <li>售后保障</li>
                <li>商品评价</li>
                <li>手机社区</li>
            </ul>
        </div>
        <div class="tab_con">
            <div class="item" style="display:block;">
                商品介绍模块内容
            </div>
            <div class="item">
                规格与包装模块内容
            </div>
            <div class="item">
                售后保障
            </div>
            <div class="item">
                商品评价
            </div>
            <div class="item">
                手机社区
            </div>
        </div>
    </div>
    <script>
        var lis = document.querySelector('.tab_list').querySelectorAll('li');
        var divs = document.querySelector('.tab_con').querySelectorAll('div');
        for (var i=0;i<lis.length;i++){
            lis[i].setAttribute('index',i); //给5个小li设置索引号
            lis[i].onclick = function(){
                // 1.上面的模块选项卡,点击一个,他的底色变成红色
                // 排他思想  
                // 消除所有人
                for (var j=0;j<lis.length;j++){
                    lis[j].className = '';
                }
                // 保留我自己
                this.className = 'current';  //this 指向事件函数的调用者
                // 2.下面的显示内容模块
                for (var k=0;k<divs.length;k++){
                     // 消除所有人
                    divs[k].style.display = 'none';
                }
                var index = this.getAttribute('index');
                 // 保留我自己
                divs[index].style.display = 'block';
            }
        }
    </script> 
</body>
</html>

💥jquery版

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script>
       $(function(){
         $(".tab_list li").click(function(){
            $(".tab_list li").removeClass("current");  //干掉所有人
             $(this).addClass("current");   //留下我自己

            var index = $(this).index();
            $(".tab_con .item").hide();   //干掉所有人
            $(".tab_con .item").eq(index).show();  //留下我自己
            });
     });

可以看到js代码就一点点,写起来很简单的,代码长的还是我们的html和css,所以我们的js基础不难,赶紧冲冲冲~~~

✨动图演示

请添加图片描述
下面变化的内容都在一大块div中,你们想要怎么布局自己设计就好,不需要再写js了。

🌟结语

陆陆续续写了很多前端基础知识和小demo了,这些对初学者都很有用,我把他们都放在我的专栏里了,精心打造了软磨硬泡系列,一起来学习吧!

🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉前端实用小demo

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue2 vue-router 不显示页面问题

目录 菜鸟入门&#xff0c;配置vue-router一直不显示。 排除过的问题点&#xff1a; 项目源码如下&#xff1a; 分析&#xff1a; 解决方案&#xff1a; 可能会遇到错误 这vue-router页面总算出来了&#xff1a; 菜鸟入门&#xff0c;配置vue-router一直不显示。 首先去…

el-cascader数据渲染及回显至页面(以及踩坑历程+解决)

第一次使用el-cascader就把坑踩了个遍&#xff0c;写个记录&#xff0c;也希望能够帮助到同为小猿的你们。 下面是我写的一个还原项目的例子 Bug1 首先是最小子集仍然有children&#xff0c;但是children为空数组&#xff0c;el-cascader渲染时&#xff0c;发现有children所…

【已解决】VUE3+webpack >5报错问题

问题截图&#xff1a; This is no longer the case. Verify if you need this module and configure a polyfill for it.If you want to include a polyfill, you need to:- add a fallback resolve.fallback: { "process": require.resolve("process/browser&q…

微信小程序父子组件之间传值

父子组件之间传值 组件之间传值有两种&#xff0c;一种是父向子传值&#xff0c;另外一种是子向父传值 先说一下大致的区别吧… 区别&#xff1a; 父向子传值使用的是属性绑定&#xff0c;子组件中 的 properties 对象 进行接收父组件传递过来的值子向父传值使用的是自定义…

wangEditor5在vue中的基本使用

目录 一、wangEditor5是什么 二、wangEditor5基本使用 &#xff08;一&#xff09;、安装 &#xff08;二&#xff09;、编译器引入 &#xff08;三&#xff09;、css及变量引入 三、wangEditor5工具栏配置 &#xff08;一&#xff09;、editor.getAllMenuKeys() &…

uniapp自定义tabbar(支持中间凸起,角标,动态隐藏tab,全端适用)

uniapp自定义tabbar&#xff08;支持中间凸起&#xff0c;角标&#xff0c;全端适用&#xff09;背景思路实现尾巴背景 在使用uniapp进行开发时&#xff0c;tabbar是我们使用的很频繁的一个组件&#xff0c;但是在特定的平台会有一些使用上的限制&#xff0c;无法通过一套代码…

box-sizing:border-box的理解和作用

盒子模型 盒子模型是指&#xff1a;外边距&#xff08;margin&#xff09; border&#xff08;边框&#xff09; 内边距&#xff08;padding&#xff09; content&#xff08;内容&#xff09; 可以把每一个容器&#xff0c;比如div&#xff0c;都看做是一个盒子模型 比如你给…

Vue实战【Vue开发中的的前端代码风格规范】

目录&#x1f31f;前言&#x1f31f;命名规范1.1 项目文件命名1.1.1 项目名1.1.2 目录名1.1.3 图像文件名1.1.4 HTML 文件名1.1.5 CSS 文件名1.1.6 JavaScript 文件名1.2 Vue 组件命名1.2.1 单文件组件名1.2.2 单例组件名1.2.3 基础组件名1.2.4 业务组件1.2.5 紧密耦合的组件名…

前端开发中常见的浏览器兼容性问题及解决方案

文章目录前言一、浏览器四大内核二、主流兼容问题&#xff08;一&#xff09;浏览器引擎&#xff08;二&#xff09;兼容问题的原因&#xff08;三&#xff09; 为什么浏览器会存在兼容性问题?&#xff08;四&#xff09;处理兼容问题的思路1. 要不要做&#xff1f;2. 做到什么…

vue3 | HighCharts实战自定义封装之径向条形图

1.前言 目前正在做vue3的数据可视化项目&#xff0c;vue3的组合式api写法十分方便&#xff0c;可以有各种玩法&#xff0c;有兴趣的同学可以看我个人主页的其他文章。难点是在网上找了一圈的有关径向条形图的示例都没有好的解决方案&#xff0c;决心亲自下手&#xff0c;在其中…

Vue(四)Vue脚手架——手把手教你安装和使用

一、什么是Vue脚手架 之前我们使用Vue框架&#xff0c;都是通过脚本的方式引入Vue脚本&#xff0c;在html中运行&#xff0c;但是这只是入门级的操作&#xff0c;下面我们介绍Vue脚手架。 脚手架&#xff1a;脚手架是一类软件的总称&#xff0c;此类软甲用于生成标准化的项目包…

Vue3中简单使用Mock.js

mock.js简介 官方链接&#xff1a;Mock.js (mockjs.com) 前端开发人员用来模拟虚拟数据&#xff0c;拦截ajax请求&#xff0c;方便模拟后端接口 安装 npm install mockjs 使用 本文主要介绍在Vue项目中使用mock.js&#xff0c;包括axios发送请求与请求简单封装 创建mock文件夹…

js+css+html制作简易留言板

jscsshtml制作简易留言板1 案例说明2 编写HTML代码3 编写css代码4 编写JavaScript代码5 全部代码1 案例说明 利用JavaScript、css以及html制作简易留言板&#xff0c;也可以看作是简易评论区。 要求在页面文本框中输入一些文字之后&#xff0c;点击“发布”按钮&#xff0c;就…

前端element-ui组件库el-card卡片【hover效果与点击事件(点击无效用@click.native=““)解决】

&#x1f680;作者简介 主页&#xff1a;水香木鱼的博客 专栏&#xff1a;后台管理系统 能量&#xff1a;&#x1f50b;容量已消耗1%&#xff0c;自动充电中… 笺言&#xff1a;用博客记录每一次成长&#xff0c;书写五彩人生。 &#x1f4d2;技术聊斋 &#xff08;1&#…

直面JavaScript数据处理的5个常见疑难杂症

前言 随着前端技术的不断发展&#xff0c;前端工作需要展示的界面越来越复杂&#xff0c;因此数据处理的场景越来越多&#xff0c;例如&#xff1a;后台管理系统中常常需要展示一个树状结构&#xff0c;后台返回的前端的数据是平级结构&#xff0c;这时候需要我们把数据转成树结…

进阶版JavaScript学习【第二期】

距离上一期更新已经过了好久&#xff0c;非常抱歉。因为自己的一些原因&#xff0c;没有能够及时更新。 博主主页&#xff1a;GUIDM的主页 专栏内容&#xff1a;进阶版JavaScript学习 往期内容&#xff1a;第一期 给大家安利一个刷题神器&#xff1a;牛客网 JavaScript系列刷题…

Vue使用Element-UI实现分页效果

前言 分页在展示数据列表的场景肯定是非常多的。 一般的项目开发中&#xff0c;数据量特别大&#xff0c;一般都是后端接口直接处理分页返回&#xff0c;前端直接调用即可。 但是前端也是可以不需要借助后端&#xff0c;自己也是可以处理分页的。今天我这个后端开发就站在前…

H5画布 canvas(一)canvas简介、绘制圆形/矩形、案例饼状图绘制

目录 1. canvas 简介 2. canvas 标签介绍 3. canvas 上下文 Context 4. 案例&#xff1a;在 canvas 画布中绘制表格 5. canvas 的 beginPath 状态 6. 绘制矩形 rect 7. 绘制圆形 arc 8. 案例&#xff1a;根据一组数据绘制饼状图 1. canvas 简介 canvas 是HTML5 提供的一…

【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会

目录 前言 一、相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二、蓝桥杯 1.应该参加蓝桥杯吗&#xff1f; 2.如何进行蓝桥杯的准备 三.蓝桥杯模拟赛二期web组真题 1.凭空消失的TA&#xff08;简单&a…

node-sass安装失败解决方法,终有一款适合我们

项目中常常遇到node-sass安装失败&#xff0c;动不动就是报各种错误。以前我一次也没有失败过&#xff0c;自从系统重装我的天呀&#xff0c;node-sass就没有成功过&#xff0c;我能做的node卸载&#xff0c;sass重装各种版&#xff0c;以及换了淘宝镜像和用了vpn都安装失败。我…