技术标签: html如何实现选项卡切换思路
原标题:Tab选项卡切换完整思路及实现,值得珍藏
这篇文章是从微信上转载过来的,原文作者是“Java实例解析”,文章内容很棒,只是这个作者可能是一时看不到效果,所以没更新几篇就放弃了,让人惋惜。
今天要推荐给大家的这个js动画效果,基本上每个网站都会出现,就是tab选项卡的切换效果。
这个效果如果使用jQuery这些框架的话,写起来就很方便,但是,为了提高我们的写原生js的能力,所以我一般都会说用原生js来写,如果大家会js框架的话,也可以学着去用框架写。
今天我们要展示的效果图如下:
这是一个可以自动和手动切换的tab效果,实现这个效果的关键点是索引的用法和了解setInterval贺clearInterval函数。
我们首先实现手动切换的效果。
在开始代码之前,我们先理一下思路。当鼠标滑过其中一个标题时,循环取消所有标题的高亮并隐藏所有标题对应的内容,然后给我们滑过的那个标题高亮并显示对应内容。
首先是HTML:
然后是css部分:(由于css不是我们要讲的重点,大家可以直接复制)
@charset "utf-8";
*{margin:0; padding:0; list-style:none; font-size:12px;}
.notice{width:298px; height:98px; margin:10px;}
.notice_tit{height:27px; position:relative;}
.notice_tit ul{position: absolute; width:381px; left:-1px;}
.notice_tit li{float:left; width:58px; height: 26px; line-height: 26px; text-align: center; overflow: hidden; background-color: #fff; padding:0 1px; background-color: #eee; border-bottom:1px solid #eee;}
.notice_tit li.select{background-color: #fff; border-bottom-color: #fff; border-left: 1px solid #eee; border-right:1px solid #eee; padding:0; font-weight: bold;}
.notice_tit li a:link,
.notice_tit li a:visited{text-decoration: none; color:#000;}
.notice_tit li a:hover{color:#f90;}
/*内容部分*/
.notice_con .mod{margin:10px 10px 10px 19px; display: none;}
.notice_con .mod ul li{float:left; width:134px; height:25px; overflow: hidden;}
好了,接下来是js的实现,首先先来封装一个id选择器,然后写出事件
先获取五个标题和内容。并且判断一下,如果标题和内容的数量不对等的话,就取消退出tab切换效果。
获取到所有标题之后,我们就可以对所有标题添加一个鼠标滑过事件,使用for循环来添加。
接着我们就可以在鼠标滑过事件里添加我们刚才的思路了:先循环将所有标题和内容取消高亮和隐藏,再单独给滑过的标题设置高亮和显示对应的内容。
以上,就实现了鼠标滑过时的切换效果了。这是最简单的tab切换效果。整个代码块:
接下来我们可以来个小小的拓展,实现延迟切换效果。就是当鼠标滑过标题时,过了500毫秒(可以自己设定)之后,再执行标题的高亮和对应内容的显示。
这里要使用到setTimeout和clearTimeout函数了。
我们把上面的onmouseover事件里的执行代码写在setTimeout函数里,在500毫秒后执行,并在循环外新增一个变量timer,把这个函数赋给这个变量。
接下来我们发现,在setTimeout的函数里,执行alert(this.id)后弹出undefined,这有两个原因,一是this不是我们要找的当前对象,二是没存在id这个属性。最后结果是由于setTimeout方法是window对象的方法,所以在里面的this指向的就是window对象。因此为了让setTimeout函数里的this指向标题,我们可以在setTimeout函数外通过变量赋值来实现;
此外,我们还需要在指向setTimeout函数之前,先清除定时器,不然当鼠标滑过标题过快时,会累积定时器函数的执行。
这样就可以实现tab延时切换了,整个代码如下:
接下去就是实现自动切换和手动切换的效果了,并且要封装函数,对代码进行优化,大家先把以上的效果熟悉,下节我们继续。祝大家周末愉快哈。返回搜狐,查看更多
责任编辑:
文章浏览阅读433次。很多人在使用Linux时总喜欢听点音乐,Windows下的音乐平台那么多,酷狗、酷我、虾米、网易云音乐等等一大堆,但是到了Linux下就很难找到一个合适的平台来听歌,更多的都只是一个播放器,需要自己下载音乐到本地来播放,这并不能让咱从心理上接受。不过好消息是网易云音乐在Linux下能完..._neteasagamas
文章浏览阅读1.2k次。win10+deepin双系统安装防踩坑笔记本:小米游戏本2018款系统:win10专业版加装deepin 20社区版1、第一次安装踩坑过程参考官方U盘安装教程对D盘_mbrsotool deepin
文章浏览阅读501次。1.1Xilinx FPGA单端时钟设计方法1.1.1 本节目录1)本节目录;2)本节引言;3)FPGA简介;4)Xilinx FPGA单端时钟设计方法;5)结束语。1.1.2 本节引言“不积跬步,无以至千里;不积小流,无以成江海。就是说:不积累一步半步的行程,就没有办法达到千里之远;不积累细小的流水,就没有办法汇成江河大海。1.1.3 FPGA简介FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展._单端时钟设计
文章浏览阅读321次。IT之家讯,不能否认,三星旗舰机一直都是最热门的安卓系列手机,背后也有着为数众多的开发者支持,这显然是一件好事,这样用户在官方升级出来之前就会提前用上新的系统。那些一直眼馋原生安卓5.0系统的三星S5和三星S4用户听到这个消息应该很高兴,目前针对两款设备的CM12安卓5.0 ROM已经出炉,提供接近原生的安卓5.0体验,支持的机型包括SM-G900I, SM-G0900F和SM-G900M版三星S..._三星s5手机 模拟安卓系统
文章浏览阅读296次。这篇文章主要介绍了Android按钮单击事件的四种常用写法总结; 第四种写法是自己刚开始接触安卓时总用的,后来点击事件多了就用第三种,结果今天看到第四种写法时发现自己忘了,因此记录下来,有时间看看。XML文件代码如下:<Button android:id="@+id/button2" android:layout_width="match_parent" and..._android单击事件
文章浏览阅读2.1k次,点赞3次,收藏14次。拿到一个待检测的站或给你一个网站,你觉得应该先做什么?一、信息收集1.获取域名的whois信息,获取注册者邮箱姓名电话等。2.通过站长之家、明小子、k8等查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。3、通过DNS域传送漏洞、备份号查询、SSl证书、APP、微信公众号、暴力破解、DNS历史记录、K8 C段查询、Jsfinder、360或华为威胁情报、证书序列号获取企业域名与ip。4.通过Nmap、Wappalyzer、御剑等查看服务器操作系统版本
文章浏览阅读2k次,点赞2次,收藏12次。软件架构(software architecture)软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通..._mary shaw 软件
文章浏览阅读2.1w次,点赞36次,收藏153次。作为模拟真实驾驶环境的模拟器,CARLA提供了丰富的传感器接口,不同传感器的特点不同,应该针对不同场景选择合适的传感器或将多种传感器结合使用。 _carla 语义分割相机
文章浏览阅读1.8k次。叙述nginx指定文件路径有两种方式root和aliasroot语法: root path;默认值:root html;配置段:http、server、location、ifalias语法: alias path;配置段:locationroot与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。root的处理结果是:root路径+location路径alias的处理结果是:使用alia_nginx root asian
文章浏览阅读551次。 重装系统大概有三种方法:Dell官网下载USB制作小程序,这个程序会自动下载win10家庭版,并且把插入的u盘制作成启动盘,然后插入电脑从优盘启动,选择疑难解答->从驱动器安装,这种方法会删除所有个人文件,唯一一个好处就是操作系统是正版的。还可以去微软的官网,有一个win10启动盘制作工具下载页面,同样是下载个小程序一键操作,安装的时候可以选择安装在哪个盘,C盘安过之后可以在E盘再..._系统重装有几个方法
文章浏览阅读430次。题目如下:AC代码如下:#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int inf = 0x3f3f3f3f;const int N = 2009;int d[N][N];int dis[N];int vis[N];char s[N];int jl[N];int main()//目标1->n; { int t;._最少换乘课程日志
文章浏览阅读2.5k次。很多朋友在使用新版本的ffmpeg时,都遇到了avformat_open_input返回失败的问题。在下也遇到了此问题。在stackoverflow上搜了一下,解决方法如下。在调用avformat_open_input之前,先调用如下接口初始化一下即可。av_register_all();这算是新版本ffmpeg代码流程的一个变化了。老版本的ffmpeg,代码流程如下:avcodec_..._avformat_open_input返回值-5