效果图:

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. CSS布局之-水平垂直居中

    对一个元素水平垂直居中,在我们的工作中是会经常遇到的,也是CSS布局中很重要的一部分,本文就来讲讲CSS水平垂直居中的一些方法.另外,文中的css都是用less书写的,如果看不懂less,可以把我给的 ...

  2. Angular.js学习笔记 (一)

    - angular中最重要的概念是指令(directive)- ng-model 是双向数据绑定的指令,效果就是将当前元素的value属性和模型中的[user.name]建立绑定关系### 模块(Mo ...

  3. 【Hololens】微软Hololens虚拟现实视频集

    混合虚拟现实(Hololens眼镜) 微软还是混合虚拟现实的行业领导者,Hololens眼镜在很多行业有了令人印象深刻的应用和演示.譬如: Hololens中文宣传片: https://pan.bai ...

  4. php 启动过程 - sapi MINIT 过程

    php 启动过程 - sapi MINIT 过程 sapi 概念 sapi 是 php 的应用编程接口, server 端接收请求通过 sapi 接口层交给 php 处理 不同的 server 端底层 ...

  5. Vue 事件驱动和依赖追踪

    之前关于 Vue 数据绑定原理的一点分析,最近需要回顾,就顺便发到随笔上了 在之前实现一个自己的Mvvm中,用 setter 来观测model,将界面上所有的 viewModel 绑定到 model ...

  6. Web.简单配置

    XML 元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感.所有这些元素都是可选的.因此,可以省略掉某一元素,但不能把它放于不正确的位置. icon icon元素指出IDE和GUI工具用来 ...

  7. 局域网内补丁更新80072EE2错误

    在公网中,80072ee2通常是在进行自动更新时遇到的连接性错误.通常由于三防杀毒软件或者浏览器,代理服务器设置不正确而导致的.那么如果是在局域网中遇到该问题,该如何解决呢? 错误截图: 1.首先确认 ...

  8. Postmark介绍

    一. 引言 Postmark是由著名的NAS提供商NetApp开发,用来测试其产品的后端存储性能. Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁.大量 ...

  9. jquery 模态窗口 蒙层无法覆盖flash解决办法

    在应用swf的<object></object>标签中加入如下属性: <param name="wmode" value="transpar ...

  10. js与juery基础知识对比(一)---2017-05-06

    用表格做的,想要对比的内容一目了然,红色部分为重点   js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...