原生js和jQuery写的网页选项卡特效对比


Posted in Javascript onApril 27, 2015

总的来说思路比较简单,就是先获取节点,然后对节点进行相应的处理,下面是完整的页面代码:

原生js:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>原生js tab</title>
<style type="text/css">
.tab{
  margin:10px auto;
  position:relative;
  width:300px;
}
ul,li{
  list-style-type:none;
  padding:0;
  margin:0;
  font:13px/20px SimSun,arial;
  color:#333;
  text-align:center;
}
.tabTltle ul li{
 float:left;
 position:relative;
 background:#fefefe;
 background:-webkit-gradient(linear,left top,left bottom, from(#fefefe), to(#ededed));
 padding:7px 15px;
 border:1px #ddd solid;
 margin-right:-1px;
 cursor:pointer;

}
.tabTltle ul li.active{
  background:#fff;
  font-weight: bold;
}
.clearfix{
}
.clearfix:after{
  display:block;
  clear:both;
  overflow:hidden;
  content:"";
}
.tabConn{
  border:1px #eee solid;
  position:relative;
  height:100px
}
.tabConn div{
  position:absolute;
  opacity:0;
  filter:alpha(opacity=0);
  padding:5px;
  text-align:center;
  width:100%;
}
.tabConn div.current{
  opacity:1;
  filter:alpha(opacity=100);
}
</style>
</head>
<body>
  <div id="tab" class="tab">
    <div class="tabTltle">
      <ul class="clearfix">
        <li class="active">标题一</li>
        <li>标题二</li>
        <li>标题三</li>
        <li>标题四</li>
      </ul>
    </div>
    <div class="tabConn">
      <div class="current">aaaaaaaaaaaaaaa</div>
      <div>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
      <div>cccccccccccccccccccccccccccccccc</div>
      <div>ddddddddddddddddddddddddddddd</div>
    </div>
  </div>
<script type="text/javascript">
 (function(){
   var tab = document.getElementById("tab");
   var tabList = tab.getElementsByTagName("div")[0].getElementsByTagName("li");
   var tabConn = tab.getElementsByTagName("div")[1].getElementsByTagName("div");for(var i=0;i<tabList.length;i++){
    tabList[i].index = i;
    tabList[i].onclick = function(){
      showConn(this.index);
    }
  }
  function showConn(_index){
    var index = _index;for(var j=0;j<tabList.length;j++){
      tabList[j].className = "";
      tabConn[j].className = "";
      tabConn[j].style.opacity=0;
    }
    tabConn[index].className="current";
    tabList[index].className="active";
  }
 })();
</script>
</body>
</html>

下面我们来看一下jQuery写的(css共用,需要引进jQuery库):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>jQuery tab</title>
<script type="text/javascript" src="js/jquery-1.8.1.min.js"></script>
<style type="text/css">
.tab{
 margin:10px auto;
 position:relative;
 width:300px;
}
ul,li{
 list-style-type:none;
 padding:0;
 margin:0;
 font:13px/20px SimSun,arial;
 color:#333;
 text-align:center;
}
.tabTltle ul li{
 float:left;
 position:relative;
 background:#fefefe;
 background:-webkit-gradient(linear,left top,left bottom, from(#fefefe), to(#ededed));
 padding:7px 15px;
 border:1px #ddd solid;
 margin-right:-1px;
 cursor:pointer;

}
.tabTltle ul li.active{
 background:#fff;
 font-weight: bold;
}
.clearfix{
}
.clearfix:after{
 display:block;
 clear:both;
 overflow:hidden;
 content:"";
}
.tabConn{
 border:1px #eee solid;
 position:relative;
 height:100px
}
.tabConn div{
 position:absolute;
 opacity:0;
 filter:alpha(opacity=0);
 padding:5px;
 text-align:center;
 width:100%;
}
.tabConn div.current{
 opacity:1;
 filter:alpha(opacity=100);
}
</style>
</head>
<body>
<h3>jQuery写的选项卡:</h3>
 <div id="tab2" class="tab">
  <div class="tabTltle tab-title">
   <ul class="clearfix">
    <li class="active">标题一</li>
    <li>标题二</li>
    <li>标题三</li>
    <li>标题四</li>
   </ul>
  </div>
  <div class="tabConn tab-conn">
   <div class="current">aaaaaaaaaaaaaaa</div>
   <div>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
   <div>cccccccccccccccccccccccccccccccc</div>
   <div>ddddddddddddddddddddddddddddd</div>
  </div>
 </div>
<script type="text/javascript">
$(document).ready(function(){
 var $tabTitle = $('.tab-title').find('li');
 var $tabList = $('.tab-conn > div');
 $tabTitle.click(function(){
  $tabTitle.each(function(){
   $tabTitle.removeClass('active');
  });
  var index = $tabTitle.index(this);
  $(this).addClass('active'); 
  $tabList.eq(index).addClass('current').siblings().removeClass('current');
 });
});
</script>
</body>
</html>

是不是简单了好多!

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
IE6不能修改NAME问题的解决方法
Sep 03 Javascript
正则表达式搭配js轻松处理json文本方便而老古
Feb 17 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
javascript使用onclick事件改变选中行的颜色
Dec 30 Javascript
js创建一个input数组并绑定click事件的方法
Jun 12 Javascript
JavaScript实现分页效果
Mar 28 Javascript
JS中将多个逗号替换为一个逗号的实现代码
Jun 23 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
BootStrap中Table隐藏后显示问题的实现代码
Aug 31 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
Feb 10 Javascript
node实现socket链接与GPRS进行通信的方法
May 20 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 #Javascript
jquery实现标签上移、下移、置顶
Apr 26 #Javascript
jquery ui resize 中border-box的bug修正
Apr 26 #Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
Apr 26 #Javascript
jquery获取节点名称
Apr 26 #Javascript
jQuery实现鼠标经过提示信息的地图热点效果
Apr 26 #Javascript
jquery插件qrcode在线生成二维码
Apr 26 #Javascript
You might like
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
javascript中this的四种用法
2015/05/11 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
Vue 中mixin 的用法详解
2018/04/23 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
新手简单了解vue
2019/05/29 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
vue设置动态请求地址的例子
2019/11/01 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
跟老齐学Python之类的细节
2014/10/13 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python操作sqlite的CRUD实例分析
2015/05/08 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
ktv好的活动方案
2014/08/17 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
学校食品安全责任书
2015/01/29 职场文书
医院消毒隔离制度
2015/08/05 职场文书
《颐和园》教学反思
2016/02/19 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
MySQL批量更新不同表中的数据
2022/05/11 MySQL