zoukankan      html  css  js  c++  java
  • jquery插件之tab标签页或滑动门

    该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧。

    此插件旨在实现目前较为流行的tab标签页或滑动门特效,在此插件中默认使用的是鼠标滑过事件,您也可以根据自己的实际需求将滑过事件hover改为点击事件click。整体代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>tab标签页/滑动门</title>
    <style>
    *{margin:0;padding:0;font-size:12px;}
    li{list-style:none;}
    .tabs{margin:20px;width:400px;height:250px;}
    .tabs_nav{margin-left:1px;}
    .tabs_nav li{float:left;border:1px solid #ddd;border-bottom:none;width:90px;height:25px;line-height:25px;text-align:center;cursor:pointer;margin-left:-1px;}
    .tabs_nav li.active{background:#ccc;}
    .tabs_content{clear:both;display:none;border:1px solid #ddd;height:200px;padding:10px;}
    </style>
    <script type="text/javascript" src="../../jquery-1.7.1.js"></script>
    </head>
    
    <body>
    <div class="tabs">
      <ul class="tabs_nav">
        <li>商品详情</li>
        <li>商品参数</li>
        <li>商品评论</li>
      </ul>
      <div class="tabs_content">这里是商品详情</div>
      <div class="tabs_content">这里是商品参数</div>
      <div class="tabs_content">这里是商品评论</div>
    </div>
    <script>
    /*
    * tabs 0.1
    * Copyright (c) 2014 tnnyang http://tnnyang.cnblogs.com/
    * Dependence jquery-1.7.1.js
    */ 
    ;(function($){
        $.fn.tabs = function(options){
            //默认参数
            var defaults = {
                tabsContent:'tabscontent',
                Class:'active',
                Event:'hover'
                };
            var opts = $.extend(defaults,options);
            
            this.each(function(){
                var obj = $(this);
                var $content = opts.tabsContent, $class = opts.Class, $event = opts.Event;
                obj.find("li").first().addClass($class);
                obj.children($content).first().show();
                obj.find("li").on($event,function(){
                    $(this).addClass($class).siblings().removeClass($class);
                    var $index = obj.find("li").index(this);    
                    $(this).parent().siblings(opts.tabsContent).eq($index).show().siblings(opts.tabsContent).hide();            
                    });
                });
            };
        })(jQuery)
    </script>
    <script>
    $(function(){
        $(".tabs").tabs({
            tabsContent:'.tabs_content',  //设置滑动门的详情
            Class:'active'
            });
        })
    </script>
    </body>
    </html>

     原生js实现方法:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{margin:0;padding:0;}
        li{list-style:none;}
        #tabs{width:300px;margin:50px;border:1px solid #ddd;}
        #tabs ul{overflow:hidden;margin-bottom:10px;}
        #tabs li{float:left;width:100px;margin-left:33px;height:35px;line-height:35px;text-align:center;border-bottom:2px solid #999;cursor:pointer;}
        #tabs li.active{border-bottom:#f00 2px solid;}
        .tabs_con{margin:0 33px;display:none;}
        .tabs_con.active{display:block;}
    </style>
    </head>
    <body>
        <div id="tabs">
            <ul>
                <li class="active">周排行</li>
                <li>月排行</li>
            </ul>
            <div class="tabs_con active">这里是周排行</div>
            <div class="tabs_con">这里是月排行</div>
        </div>
    <script>
        window.onload = function(){
            //标题中的 li
            var lis = document.getElementById("tabs").getElementsByTagName("li");
            //给标题中的所有li 添加事件
            for(var i = 0;i<lis.length;i++){
                lis[i].num = i;   //当前是第几个 li
                lis[i].onclick=function(){                
                    var k = this.num  //当前的li是第几个
                    //内容中的 div块
                    var divs = document.getElementsByClassName("tabs_con");
                    //把所有的div消失并去掉所有li标签的class
                    for(var j = 0;j<divs.length;j++){
                        divs[j].style.display = "none";
                        lis[j].className = "";
                        }
                    //显示指定的div并给当前的li标签添加class
                    divs[k].style.display = "block";
                    this.className = "active";
                    };
                };
            };
    </script>
    </body>
    </html>
  • 相关阅读:
    codevs1842 递归第一次
    codevs1501 二叉树最大宽度和高度
    (noi.openjudge.cn) 1.5编程基础之循环控制T36——T45
    (noi.openjudge.cn) 1.7编程基础之字符串T21——T30
    (noi.openjudge.cn) 1.9编程基础之顺序查找T06——T15
    (noi.openjudge.cn) 1.9编程基础之顺序查找T01——T05
    (noi.openjudge.cn) 1.7编程基础之字符串T31——T35
    (noi.openjudge.cn) 1.8编程基础之多维数组T21——T25
    Objective-C/C++混编编译器设置
    UITableView使用指南
  • 原文地址:https://www.cnblogs.com/tnnyang/p/4744482.html
Copyright © 2011-2022 走看看