html原生组件,HTML+CSS+原生JS撸一个tab组件

tab组件是很常用的一个ui组件,之前一种的是第三方组件库中的;最近想巩固一下自己的javascript的基础就决定手动撸一个!

实现的功能

当鼠标移动到标题的时候,选中的标题底部有一条横线;

选中的标题对应的内容显示,其他标题的内容隐藏!

思路

底部横线可以用css中的border-bottom属性来实现。我们可以写两种样式。这两种样式一种是默认的样式即未选中时候的样式;另外一种是选中的时候的样式;我们为了操作简单就将选中的样式用一个className 进行区分!(当然你也可以直接用js来直接修改css样式,但是我更加推荐用class名来区分,这样子便于维护!省的以后都不知道哪个js可以改变样式!)

2.内容的切换可以通过增加和删除className来实现。className对应的css设置display的none/block来控制内容的显示与不显示!

3.只要保证标题和内容的dom的数量一致就可以通过获取title的id属性来控制对应的content内容的显示与否!

html代码

tabs

1

2

3

4

5

content1

content2

content3

content4

content5

css代码

* {

margin: 0;

padding: 0;

}

ul li {

list-style: none;

}

.gui-tab-main {

width:400px;

height:300px;

background-color: antiquewhite;

}

.gui-tab-title {

position:absolute;

background-color: aqua;

width: 400px;

height: 50px;

}

.gui-tab-title ul li {

float: left;

width: 78px;

height: 50px;

padding: 0 1px;

text-align: center;

line-height: 50px;

cursor: pointer

}

.gui-tab-title ul li.selected {

border-bottom: 2px solid blue;

}

.gui-tab-content {

position:absolute;

top:50px;

height: 300px;

}

.gui-tab-content ul {

height:100%;

}

.gui-tab-content ul li {

height: calc(100% - 50px);

display: none;

}

.gui-tab-content ul li.selected {

display: block

}

js代码

;(function(window,undefined){

window.onload = function(){

// todos

// 1.当鼠标点击或者移到某个标题的时候显示对应的内容;

// 2.被点击或者鼠标放置的标题背景高亮,其他标题背景不变!

var titles = document.getElementById('gui-tab-title-item').getElementsByTagName('li');

var contents = document.getElementById('gui-tab-content-item').getElementsByTagName('li');

if(titles.length!== contents.length){

return ;

}

for(var i=0,len=titles.length;i

总结

代码可能还有优化的地方,如果各位有自己的想法请在下面留言!谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值