【Css】一个简单的选项卡

这次来做一个简单的选项卡。

选项卡其实就分3个部分:html代码,用于显示的内容;css代码,用于显示的样式;javascript代码,用于点击事件。



老规矩,先写一个html坯子。

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 5         <title>选项卡</title>
 6     </head>
 7
 8     <body>
 9         <div id="tab">
10             <h3 class="active">教育</h3>
11             <h3>娱乐</h3>
12             <h3>汽车</h3>
13
14             <div class="content">教育内容</div>
15             <div>娱乐内容</div>
16             <div>汽车内容</div>
17         </div>
18     </body>
19 </html>

html代码里只给“教育”和“教育内容”设置class的目的是为了做一个标记,表示这个是点选或者默认显示的内容。

效果:

接下来,我们给整个块加一个框,并且给各个元素都加上边框,这样看得更清楚一些。

 1 <style type="text/css">
 2     #tab {
 3     border: 2px solid;
 4     }
 5     #tab h3 {
 6     border: 1px solid #cccccc;
 7     }
 8     #tab div {
 9     border: 1px solid #cccccc;
10     }
11 </style>

效果:

我们把3个标题向左浮动,并且调整一下字体的大小,布局等等。

 1 <style type="text/css">
 2     #tab {
 3         border: 2px solid;
 4     }
 5     #tab h3 {
 6         border: 1px solid #cccccc;
 7         margin: 2px 1px 0px 1px;
 8         padding: 0px;
 9         font-size: 14px;
10         float: left;
11         right: 5px;
12         width: 60px;
13         height: 24px;
14         line-height: 24px;
15         text-align: center;
16     }
17     #tab div {
18         border: 1px solid #cccccc;
19     }
20 </style>

效果:

3个标题貌似被盖住了...

这是由于标题浮动引起的。

我们把内容给clear一下就行了。

 1 <style type="text/css">
 2     #tab {
 3         border: 2px solid;
 4     }
 5     #tab h3 {
 6         border: 1px solid #cccccc;
 7         margin: 2px 1px 0px 1px;
 8         padding: 0px;
 9         font-size: 14px;
10         float: left;
11         right: 5px;
12         width: 60px;
13         height: 24px;
14         line-height: 24px;
15         text-align: center;
16     }
17     #tab div {
18         clear: both;
19         border: 1px solid #cccccc;
20     }
21 </style>

效果:

这样看起来好一些,不过距离目的还差得远。

接下来,我们设置内容的样式。设置了父框的宽度,并且将整个父元素块居中。

 1 <style type="text/css">
 2     #tab {
 3         border: 2px solid;
 4         width: 500px;
 5         margin: 0 auto;
 6     }
 7     #tab h3 {
 8         border: 1px solid #cccccc;
 9         margin: 2px 1px 0px 1px;
10         padding: 0px;
11         font-size: 14px;
12         float: left;
13         right: 5px;
14         width: 60px;
15         height: 24px;
16         line-height: 24px;
17         text-align: center;
18     }
19     #tab div {
20         border: 1px solid #cccccc;
21         clear: both;
22         height: 100px;
23         font-size: 14px;
24         padding: 20px 0px 0px 20px;
25     }
26 </style>

效果:

这样看起来就舒服多了!

至于如何体现选项卡的效果,我们通过内容的显示与隐藏来控制。display:[none block]

 1 <style type="text/css">
 2     #tab {
 3         border: 2px solid;
 4         width: 500px;
 5         margin: 0 auto;
 6     }
 7     #tab h3 {
 8         border: 1px solid #cccccc;
 9         margin: 2px 1px 0px 1px;
10         padding: 0px;
11         font-size: 14px;
12         float: left;
13         right: 5px;
14         width: 60px;
15         height: 24px;
16         line-height: 24px;
17         text-align: center;
18     }
19     #tab div {
20         border: 1px solid #cccccc;
21         clear: both;
22         height: 100px;
23         font-size: 14px;
24         padding: 20px 0px 0px 20px;
25         display: none;
26     }
27     #tab div.content {
28         display: block;
29     }
30 </style>

效果:

这里只看到了“教育内容”,其他内容则被隐藏了。

如何凸现哪个被点选和内容的显示呢,我们给他设置背景颜色。

1 #tab h3.active {
2     background: #cccc00;
3 }
4 #tab div.content {
5     display: block;
6     background: #cccc00;
7 }

效果:

现在这个还是一个固定的显示,我们给3个标题注册点击事件,通过点击标题切换标题和内容的标记class,来达到切换选项卡的目的。

 1 <script type="text/javascript">
 2     window.onload = function() {
 3         var oTab = document.getElementById("tab");
 4         var aH3 = oTab.getElementsByTagName("h3");
 5         var aDiv = oTab.getElementsByTagName("div");
 6         for (var i = 0; i < aH3.length; i++) {
 7             aH3[i].index = i;
 8             aH3[i].onclick = function() {
 9                 for (var i = 0; i < aH3.length; i++) {
10                   aH3[i].className = "";
11                   aDiv[i].style.display = "none";
12                   aDiv[this.index].className = "";
13                   aDiv[this.index].className = "content";
14                 }
15                 this.className = "active";
16                 aDiv[this.index].style.display = "block";
17             };
18         }
19     };
20 </script>

这样我们点击其他标题

最后我们给微调下,去除表框,添加阴影,附上完整代码:

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 5         <title>选项卡</title>
 6         <style type="text/css">
 7             #tab {
 8                 width: 500px;
 9                 margin: 0 auto;
10                 box-shadow: 5px 5px 5px #888888;
11             }
12             #tab h3 {
13                 margin: 0px;
14                 padding: 0px;
15                 font-size: 14px;
16                 float: left;
17                 right: 5px;
18                 width: 60px;
19                 height: 24px;
20                 line-height: 24px;
21                 text-align: center;
22             }
23             #tab div {
24                 clear: both;
25                 height: 100px;
26                 font-size: 14px;
27                 padding: 20px 0px 0px 20px;
28                 display: none;
29             }
30             #tab h3.active {
31                 background: #cccc00;
32             }
33             #tab div.content {
34                 display: block;
35                 background: #cccc00;
36             }
37         </style>
38
39         <script type="text/javascript">
40             window.onload = function() {
41                 var oTab = document.getElementById("tab");
42                 var aH3 = oTab.getElementsByTagName("h3");
43                 var aDiv = oTab.getElementsByTagName("div");
44                 for (var i = 0; i < aH3.length; i++) {
45                     aH3[i].index = i;
46                     aH3[i].onclick = function() {
47                         for (var i = 0; i < aH3.length; i++) {
48                             aH3[i].className = "";
49                             aDiv[i].style.display = "none";
50                             aDiv[this.index].className = "";
51                             aDiv[this.index].className = "content";
52                         }
53                         this.className = "active";
54                         aDiv[this.index].style.display = "block";
55                     };
56                 }
57             };
58         </script>
59     </head>
60
61     <body>
62         <div id="tab">
63             <h3 class="active">教育</h3>
64             <h3>娱乐</h3>
65             <h3>汽车</h3>
66
67             <div class="content">教育内容</div>
68             <div>娱乐内容</div>
69             <div>汽车内容</div>
70         </div>
71     </body>
72 </html>

效果:

这个选项卡只有最基本的功能。如果进一步,我们可以在内容块里加入图片库,把标题背景设置为图片,这样就能做出很漂亮的选项卡。

时间: 2024-10-12 13:44:19

【Css】一个简单的选项卡的相关文章

js制作一个简单的选项卡

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>简单的选项卡</title> <style type="text/css"> #main{ height: 400px; width: 400px; margin: 20px auto; } #main>div{ height: 300px; width: 3

vue实现一个简单的选项卡

用vue来实现一个小的选项卡切换,比之前要简单.方便很多. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="js/vue.min.js"></script> <style> button{

Html+css 一个简单的网页模板

一个简单的网页模板,有导航.子菜单.banner部分 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2 "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <title>网页</title> 6 <meta charset="UTF-8&qu

三行Jquery代码实现简单的选项卡

今晚,我们来用实现一个简单的选项卡切换代码,主要代码只有两行. 效果: 思路:通过切换JQuery控制div的显隐和样式的改变 其中那个一个div显示,其余全隐藏 实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin:0;p

CSS布局中一个简单的应用BFC的例子

什么是BFC BFC(Block Formatting Context),简单讲,它是提供了一个独立布局的环境,每个BFC都遵守同一套布局规则.例如,在同一个BFC内,盒子会一个挨着一个的排,相邻盒子的间距是由margin决定且垂直方向的margin会重叠.而float和clear float也只对同一个BFC内的元素有效. 什么情况产生BFC W3C标准中这样描述:Floats, absolutely positioned elements, block containers (such as

用html+css+jQuery实现的一个简单的图片切换特效

这篇文章主要介绍了用html+css+js(jQuery)实现的一个简单的图片切换特效,需要的朋友可以参考下. 记得要引入一个jQuery库文件,可以是网上在线的,也可以是本地的,注意路径. 如图所示. 该图片切换特效实现很简单,而且兼容性很好. html页面如下 复制代码代码如下: <div class="wrapper"> <div id="focus"> <ul> <li><a href="htt

用CSS写一个简单的幻灯片效果页面

这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [用CSS写一个简单的幻灯片效果页面] 1.背景介绍CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation. transform属性向元素应用2D或3D转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. transition是令一个或多个可以用数值表示的css属性值

一个简单css+js的开关组件

一个简单的开关组件 依赖:jquery.js CSS .choose-btn { display: none; } .choose-label { box-shadow: #b1b1b1 0px 0px 0px 1px; width: 30px; height: 16px; display: inline-block; border-radius: 16px; position: relative; background-color: #bdbdbd; overflow: hidden; mar

用CSS实现一个简单的幻灯片效果页面

用CSS实现一个简单的幻灯片效果页面,第一反应是利用CSS3的animation.不过为了兼容浏览器,记得加各浏览器前缀("chrome和safira:-webkit-"."firefox:-moz-"."opera:-o-"),我最开始写的时候忘记加浏览器前缀,在chrome中一直没有任何显示.下面说说用到的animation各属性.animation-name(动画名字,需用引号包裹)animation-duration(动画持续时间,如:2