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

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


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

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>选项卡</title>
</head> <body>
<div id="tab">
<h3 class="active">教育</h3>
<h3>娱乐</h3>
<h3>汽车</h3> <div class="content">教育内容</div>
<div>娱乐内容</div>
<div>汽车内容</div>
</div>
</body>
</html>

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

效果:

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

 <style type="text/css">
#tab {
border: 2px solid;
}
#tab h3 {
border: 1px solid #cccccc;
}
#tab div {
border: 1px solid #cccccc;
}
</style>

效果:

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

 <style type="text/css">
#tab {
border: 2px solid;
}
#tab h3 {
border: 1px solid #cccccc;
margin: 2px 1px 0px 1px;
padding: 0px;
font-size: 14px;
float: left;
right: 5px;
width: 60px;
height: 24px;
line-height: 24px;
text-align: center;
}
#tab div {
border: 1px solid #cccccc;
}
</style>

效果:

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

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

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

 <style type="text/css">
#tab {
border: 2px solid;
}
#tab h3 {
border: 1px solid #cccccc;
margin: 2px 1px 0px 1px;
padding: 0px;
font-size: 14px;
float: left;
right: 5px;
width: 60px;
height: 24px;
line-height: 24px;
text-align: center;
}
#tab div {
clear: both;
border: 1px solid #cccccc;
}
</style>

效果:

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

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

 <style type="text/css">
#tab {
border: 2px solid;
width: 500px;
margin: 0 auto;
}
#tab h3 {
border: 1px solid #cccccc;
margin: 2px 1px 0px 1px;
padding: 0px;
font-size: 14px;
float: left;
right: 5px;
width: 60px;
height: 24px;
line-height: 24px;
text-align: center;
}
#tab div {
border: 1px solid #cccccc;
clear: both;
height: 100px;
font-size: 14px;
padding: 20px 0px 0px 20px;
}
</style>

效果:

这样看起来就舒服多了!

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

 <style type="text/css">
#tab {
border: 2px solid;
width: 500px;
margin: 0 auto;
}
#tab h3 {
border: 1px solid #cccccc;
margin: 2px 1px 0px 1px;
padding: 0px;
font-size: 14px;
float: left;
right: 5px;
width: 60px;
height: 24px;
line-height: 24px;
text-align: center;
}
#tab div {
border: 1px solid #cccccc;
clear: both;
height: 100px;
font-size: 14px;
padding: 20px 0px 0px 20px;
display: none;
}
#tab div.content {
display: block;
}
</style>

效果:

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

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

 #tab h3.active {
background: #cccc00;
}
#tab div.content {
display: block;
background: #cccc00;
}

效果:

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

 <script type="text/javascript">
window.onload = function() {
var oTab = document.getElementById("tab");
var aH3 = oTab.getElementsByTagName("h3");
var aDiv = oTab.getElementsByTagName("div");
for (var i = 0; i < aH3.length; i++) {
aH3[i].index = i;
aH3[i].onclick = function() {
for (var i = 0; i < aH3.length; i++) {
  aH3[i].className = "";
  aDiv[i].style.display = "none";
  aDiv[this.index].className = "";
  aDiv[this.index].className = "content";
}
this.className = "active";
aDiv[this.index].style.display = "block";
};
}
};
</script>

这样我们点击其他标题

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

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>选项卡</title>
<style type="text/css">
#tab {
width: 500px;
margin: 0 auto;
box-shadow: 5px 5px 5px #888888;
}
#tab h3 {
margin: 0px;
padding: 0px;
font-size: 14px;
float: left;
right: 5px;
width: 60px;
height: 24px;
line-height: 24px;
text-align: center;
}
#tab div {
clear: both;
height: 100px;
font-size: 14px;
padding: 20px 0px 0px 20px;
display: none;
}
#tab h3.active {
background: #cccc00;
}
#tab div.content {
display: block;
background: #cccc00;
}
</style> <script type="text/javascript">
window.onload = function() {
var oTab = document.getElementById("tab");
var aH3 = oTab.getElementsByTagName("h3");
var aDiv = oTab.getElementsByTagName("div");
for (var i = 0; i < aH3.length; i++) {
aH3[i].index = i;
aH3[i].onclick = function() {
for (var i = 0; i < aH3.length; i++) {
aH3[i].className = "";
aDiv[i].style.display = "none";
aDiv[this.index].className = "";
aDiv[this.index].className = "content";
}
this.className = "active";
aDiv[this.index].style.display = "block";
};
}
};
</script>
</head> <body>
<div id="tab">
<h3 class="active">教育</h3>
<h3>娱乐</h3>
<h3>汽车</h3> <div class="content">教育内容</div>
<div>娱乐内容</div>
<div>汽车内容</div>
</div>
</body>
</html>

效果:

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

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

  1. 使用jQuery.extend创建一个简单的选项卡插件

    选项卡样式如图,请忽略丑陋的样式,样式可以随意更改 主要是基于jquery的extend扩展出的一个简单的选项卡插件,注意:这里封装的类使用的是es6中的class,所以不兼容ie8等低版本浏览器呦! ...

  2. JS入门学习,写一个简单的选项卡

    /* 经过昨天一整天的纠结和摸索.总结下学习初期我最致命的几个问题…… 1.var oDiv = document.getElementById('');    一定要多输,熟悉后o u什么的字母别搞 ...

  3. vue实现一个简单的选项卡

    用vue来实现一个小的选项卡切换,比之前要简单.方便很多. <!DOCTYPE html> <html lang="en"> <head> &l ...

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

    一个简单的网页模板,有导航.子菜单.banner部分 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&q ...

  5. javascript简单的选项卡

    实现一个简单的选项卡功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

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

    今晚,我们来用实现一个简单的选项卡切换代码,主要代码只有两行. 效果: 思路:通过切换JQuery控制div的显隐和样式的改变 其中那个一个div显示,其余全隐藏 实现: <!DOCTYPE h ...

  7. react做的简单的选项卡

    ### 首先安装react的脚手架 cnpm    install   create-react-app   -g    只需要在电脑下载安装一次即可  ###创建项目 create-react-ap ...

  8. Css实现一个简单的幻灯片效果页面

    使用animation动画实现一个简单的幻灯片效果. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

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

    什么是BFC BFC(Block Formatting Context),简单讲,它是提供了一个独立布局的环境,每个BFC都遵守同一套布局规则.例如,在同一个BFC内,盒子会一个挨着一个的排,相邻盒子 ...

随机推荐

  1. jira项目管理平台搭建

    参考文档:http://www.cnblogs.com/ilanni/p/6200875.html   一.环境准备 jira7.2的运行是需要依赖java环境的,也就是说需要安装jdk并且要是1.8 ...

  2. 20145218张晓涵_Web基础

    20145218张晓涵_Web基础 基础知识 Apache一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且 ...

  3. 《html5 从入门到精通》读书笔记(三)

    二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...

  4. Label下FormattedText中的Span无法使用Binding的解决方法

    在Xamarin.Forms中,Xaml的模板功能并没有原生WPF丰富,比如Label中虽然有FormattedText可以添加Span来丰富Label的功能,但是下面的Span中的Text并没有绑定 ...

  5. System.Data.OracleClient.dll方式操作oracle数据库

    System.Data.OracleClient.dll方式操作oracle数据库 一.查询语句: using (OracleConnection conn = new OracleConnectio ...

  6. PXE-cobbler 无人值守装机------续

    上篇学习了cobbler pxe 安装的大致流程以及采用默认分区方式安装centos7系统. 这里深入学习ks文件的具体参数 . ks.cfg文件又叫kickstart.cfg文件,主要被用于linu ...

  7. [USACO09FEB] 改造路Revamping Trails | [JLOI2011] 飞行路线

    题目链接: 改造路 飞行路线 其实这两道题基本上是一样的,就是分层图的套路题. 为什么是分层图呢?首先,我们的选择次数比较少,可以把这几层的图建出来而不会爆空间.然后因为选择一个边权为0的路线之后我们 ...

  8. LAYABOX 开发遇到的问题记录

    1.  如若在MAC下用LAYA开发H5游戏, 调试的时候会发现像素点过小(mac 5k屏),直接用下面按比例填充就好了 //保持原始高宽比的情况下,将舞台铺满屏幕,超出比例的部分会有黑边       ...

  9. img标签中onerror用法

    <img src="/statics/bazi/images/150x100.jpg" alt="#" onerror="this.style. ...

  10. linux新服务器分区挂载

    新买一台服务器,需要自己手动对硬盘进行分区挂载:(这是centos下,其他版本应该也类似) 1.查看没有分区的硬盘:fdisk  -l  由图上信息可知,该服务器由三块硬盘 vda.vdb.vdc,其 ...