效果图:

css 代码:

<style type="text/css">
*{margin: 0;padding: 0;list-style: none;}
.demo{width: 500px;height: 600px;margin: auto;margin-top: 100px;}
.biaoti{width:400px;height: 60px;margin: auto;}
.list{float: left; width: 100px;height: 60px;text-align: center;cursor: pointer;margin-left: 20px;
line-height: 60px;border: 1px solid #ccc;border-bottom: 0}
/*.biaoti ul li{float: left; width: 100px;height: 60px;text-align: center;cursor: pointer;margin-left: 20px;
line-height: 60px;border: 1px solid #ccc;border-bottom: 0;}*/
.list-content{width: 400px;height: 400px;left:50px;border: 1px solid blue;border-top: 2px solid brown;margin: auto;margin-top: 2px;}
/* .biaoti ul li:first-child{border-top:2px solid brown;border-bottom: 2px solid #fff;}*/
.biaoti ul .active{border-top:2px solid brown;border-bottom:2px solid #fff;}
.content{display: none;text-align: center;padding-top: 20px;line-height: 30px;}
.list-content div:first-child{display: block;}

</style>

HTMl代码:

<div class="demo">
<div class="biaoti">
<ul>
<li class="list active">房产</li>
<li class="list">家居</li>
<li class="list">二手房</li>
</ul>
</div>

<div class="list-content">
<div class="content" id="1">
275万购昌平邻铁三居 总价20万买一居<br />
200万内购五环三居 140万安家东三环<br />
北京首现零首付楼盘 53万购东5环50平<br />
京楼盘直降5000 中信府 公园楼王现房<br />

</div>

<div class="content" id="2">
40平出租屋大改造 美少女的混搭小窝<br />
经典清新简欧爱家 90平老房焕发新生<br />
新中式的酷色温情 66平撞色活泼家居<br />
瓷砖就像选好老婆 卫生间烟道的设计<br />
</div>

<div class="content" id="3">
通州豪华3居260万 二环稀缺2居250w甩<br />
西3环通透2居290万 130万2居限量抢购<br />
黄城根小学学区仅260万 121平70万抛!<br />
独家别墅280万 苏州桥2居优惠价248万<br />

       </div>
    </div>
</div>

js代码:

未封装:

<!--<script type="text/javascript">
// var list=document.getElementsByTagName("li");
var list=document.getElementsByClassName("list")
for(var i=0;i<list.length;i++){
list[i].index=i;
list[i].onclick=function(){
//alert(this.index)
getcontent(this.index)
//alert(this.index+1)
var cs=this.parentNode.children;
console.log(cs);
for(var i=0;i<cs.length;i++){
var ci=cs[i];
if(this!=ci){
// console.log(ci)
// this.style.cssText="border-top:2px solid brown;border-bottom: 2px solid #fff;"
// ci.style.cssText="border-top: 1px solid #CCCCCC;border-bottom: 0;"
this.setAttribute("class","active list")
ci.setAttribute("class","list")
}
}
}
}
function getcontent(id){
var content=document.getElementsByClassName("content");
var itemId=content.item(id).getAttribute("id");
var par=content.item(id).parentNode.children;
//console.log(par);
for(var i=0;i<par.length;i++){
var ci=par[i];
if(content.item(id)!=ci){
content.item(id).style.display="block";
ci.style.display="none";
}
}
}           
</script>-->

封装后:

<!--<script type="text/javascript">

var list=document.getElementsByClassName("list")
for(var i=0;i<list.length;i++){
list[i].index=i;
list[i].onclick=function(){
getcontent(this.index)
}
}
function getcontent(id){
var content=document.getElementsByClassName("content");
var itemId=content.item(id).getAttribute("id");
var par=content.item(id).parentNode.children;
var cs=list.item(id).parentNode.children;
for(var i=0;i<par.length;i++){
var txt=content.item(id)
var ci=par[i];
if(txt!=ci){
txt.style.display="block";
ci.style.display="none";
}
}
for(var i=0;i<cs.length;i++){
var txt1=list.item(id);
var ci=cs[i];
if(txt1!=ci){
txt1.setAttribute("class","active list")
ci.setAttribute("class","list")
}
}
}
</script>-->

封装后:

<script type="text/javascript">

var list=document.getElementsByClassName("list")
for(var i=0;i<list.length;i++){
list[i].index=i;
list[i].onclick=function(){
getcontent(this.index)
}
}
function getcontent(id){
var content=document.getElementsByClassName("content");
var par=content.item(id).parentNode.children;
var cs=list.item(id).parentNode.children;
for(var i=0;i<par.length;i++){
var txt=content.item(id),txt1=list.item(id);
var ci=par[i],ci1=cs[i];
if(txt!=ci&&txt1!=ci){
// content
txt.style.display="block";
ci.style.display="none";
//list
txt1.setAttribute("class","active list")
ci1.setAttribute("class","list")
}
}
}
</script>

虽然简单,但是对初学者来说可以锻炼思维。希望对你们有帮助,谢谢!

有什么更好的方法,希望大牛给点意见!!!

总结:这不是一个很复杂的功能,但是只用js来写,对于js不熟悉的人来说,可能很费脑;闲话少说;在写这个功能的:思路如下:

1.首先就是html的结构和css样式,这是必不可少的。

2.就是js操作主要就是dom操作和循环遍历,在dom操作中最困难的问题就是this的兄弟元素。

js实现选项卡切换的效果的更多相关文章

  1. 用html+css+js实现选项卡切换效果

    文章转载自:http://tongling.github.io/JSCards/ 用html+css+js实现选项卡切换效果 使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材 ...

  2. 用js实现选项卡切换效果

    这是要实现的效果图: 一.HTML页面布局 <!-- HTML页面布局 --><ul class="tab_menu"> <li class=&quo ...

  3. 7、JavaScript总结——实现选项卡切换的效果

    编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居    200万内购五环三居 140万安家东三环 ...

  4. js实现选项卡切换

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  5. JS实现选项卡切换效果

    1.在网页制作过程中,我们经常会用到选项卡切换效果,它能够让我们的网页在交互和布局上都能得到提升 原理:在布局好选项卡的HTML结构后,我们可以看的出来,选项卡实际上是三个选项卡标头和三个对应的版块, ...

  6. js实现选项卡切换的三种方式

    前两种主要实现一个选项卡的切换,第三种使用闭包看书,构造函数实现多个选项卡的切换: 1.第一种实现实现效果为: 实现代码为: <!doctype html> <!DOCTYPE ht ...

  7. (效果三)js实现选项卡切换

    开发了很久的小程序,在接到一个h5移动端页面的时候,很多原生的东西都忘了,虽然说我们随着工作经验的增加,处理业务逻辑的能力在提高,但是基础的东西如果长时间不用,也会逐渐忘记.所以以后会经常总结原生的一 ...

  8. 二、JavaScript语言--JS基础--JavaScript进阶篇--选项卡切换效果

    利用JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居     200万内购五环三居 140万安家东三环     北京首现零首付楼 ...

  9. [前端] html+css+javascript 实现选项卡切换效果

    用html+css+js实现选项卡切换效果使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材:房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安 ...

随机推荐

  1. sublime-text-3设置输入中文方法

    sublime-text-3 编辑器性感而敏捷,却让人感慨有其长必有其短. 有些缺点都可以通过插件解决.但是要解决输入中文问题却很复杂,不能输入中文实在是太痛苦了. 我在做一个有很多文字的html页面 ...

  2. vscode奇淫记(上)

    每次换editor都是一种煎熬,从最早的eclipse,sublime,webstorm到现在在用的atom,换编辑器的驱动是寻找更酷炫和轻量的平衡点,其实我真的蛮喜欢atom的,酷炫!那我这次打算入 ...

  3. 读书笔记之JavaScript中的数据类型(1)

    JavaScript严格意义上分为ECMAScript.DOM.BOM.ECMAScript是一门真正意义上的语言,独立于浏览器,浏览器只是它的一个宿主环境.DOM(文档对象模型),为ECMAScri ...

  4. 用vuejs仿网易云音乐(实现听歌以及搜索功能)

    前言 前端时间学了vue,一开始看了vue1.0,后来实在觉得技术总得实践,就直接上手vue2.0.然后花了将近一周时间做了一个网易云音乐的小项目.一开始觉得项目比较小,没必要用vuex所以就没有使用 ...

  5. 新建Android项目,会出现两个项目一个是自己创建的项目,另一个是“appcompat_v7”项目,这是怎么回事呢?该怎么解决呢?

    做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容.并且是创建一个新的内容就会出现.这到底是怎么回事呢?原来appcompa ...

  6. ASP.NET WebForm

    ASP.NET WEBFORM Aspx aspx文件(新建项→Web窗体) .在aspx中可以使用<%=表达式%>的方式在页面的当前位置输出表达式(表达式至少要用protected级别, ...

  7. jQuery选择器与CSS选择器

    1. 通过位置选择的几个操作: :first:默认情况下是相对整个页面来说的第一个,如:li:first表示整个页面的第一个li元素,而ul li:first表示整个页面的第一个li元素,并且是在ul ...

  8. PRML读书笔记——机器学习导论

    什么是模式识别(Pattern Recognition)? 按照Bishop的定义,模式识别就是用机器学习的算法从数据中挖掘出有用的pattern. 人们很早就开始学习如何从大量的数据中发现隐藏在背后 ...

  9. Java AOP (2) runtime weaving 【Java 切面编程 (2) 运行时织入】

    接上一篇 Java AOP (1) compile time weaving [Java 切面编程 (1) 编译期织入] Dynamic proxy   动态代理 Befor talking abou ...

  10. redis多数据库操作

    redis下,数据库是由一个整数索引标识,而不是由一个数据库名称.默认情况下,一个客户端连接到数据库0. redis配置文件中下面的参数来控制数据库总数: databases 16   [root@M ...