[原创]tab滑动面板效果初探

长平狐 发布于 2012/08/30 14:31
阅读 839
收藏 0

从接触jquery到现在,几乎没怎么去运用,之前一直习惯写js代码,今天想试着用jq实现一些常用的UI功能,滑动面板切换效果

先看效果图,样式比较简单:点击下载【原创】tab切换面板.zip

实例一:

html页面

View Code
 1  <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 2  < html  xmlns ="http://www.w3.org/1999/xhtml" >
 3  < head >
 4      < title ></ title >
 5      < style  type ="text/css" >
 6          *
 7           {
 8              margin :  0px ;
 9              padding :  0 ;
10           }
11          #ul_tab
12           {
13              background-color :  #ff0 ;
14              width :  300px ;
15              height :  20px ;
16              float :  left ;
17           }
18          #ul_tab li
19           {
20              float :  left ;
21              list-style :  none ;
22              height :  20px ;
23              width :  100px ;
24           }
25          .divCon
26           {
27              clear :  none ;
28              width :  300px ;
29              height :  80px ;
30              display :  none ;
31           }
32       </ style >
33      < script  type ="text/javascript"  src ="js/jquery-1.3.2.min.js" ></ script >
34      < script  type ="text/javascript"  src ="js/tab2.js" ></ script >
35  </ head >
36  < body >
37      < div  id ="content"  style ="height: 100px; width: 300px; padding-left: 0; border: 1px solid #000;" >
38          < ul  id ="ul_tab" >
39              < li >面板一 </ li >
40              < li >面板二 </ li >
41              < li >面板三 </ li >
42          </ ul >
43          < div  class ="divCon" >
44             1 </ div >
45          < div  class ="divCon" >
46             2 </ div >
47          < div  class ="divCon" >
48             3 </ div >
49      </ div >
50  </ body >
51  </ html >

下面看jq代码

 

View Code
 1 $(document).ready( function () {
 2     $("#ul_tab li:eq(0)").css("background-color", "#f00");
 3     $("#ul_tab").next("div").css("background-color", "#f00").show();
 4 
 5     $("#ul_tab li").each( function (index) { // 利用li对应的索引index传递到每个div中去
 6          $("#ul_tab li:eq(" + index + ")").mouseover( function () {
 7            // 对所有的li和对应的div设置为违背触发事件时的样式
 8              $("#ul_tab li").css("background-color", "#ff0")
 9             $("#content >div").hide();
10           //       //对触发事件的li和div应用相应被选中的样式    
11              $( this).css("background-color", "#f00");
12             $("#content >div:eq(" + index + ")").css("background-color", "#f00").show();
13         })
14     })
15 }) 

 

实例二:

 做完了上面的效果图后,想增加点功能,就是自动轮播,点击时候停止

html代码,跟上面的有些不一样,

 

View Code
 1  <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 2  < html  xmlns ="http://www.w3.org/1999/xhtml" >
 3  < head >
 4      < title ></ title >
 5        < style  type ="text/css" >
 6          * { margin : 0px ;  padding : 0 ; }
 7          #ul_tab { background-color : #ff0 ;  width : 300px ;  height : 20px ;  float : left ; }
 8         #ul_tab li {  float : left ;  list-style : none ; height : 20px ; width : 100px ; }
 9       </ style >
10      < script  type ="text/javascript"  src ="js/jquery-1.3.2.min.js" ></ script >
11  <!--     <script type="text/javascript" src="js/tab1.js">
12      </script> -->
13        < script  type ="text/javascript"  src ="js/tab1.js" >
14       </ script >  
15  </ head >
16  < body >
17  < div  id ="content"  style ="height:100px;width:300px; padding-left:0;border:1px solid #000;" >
18        < ul  id ="ul_tab" >
19          < li  onmousemove ="tabs(this,0)" >面板一 </ li >
20          < li  onmousemove ="tabs(this,1)" >面板二 </ li >
21          < li  onmousemove ="tabs(this,2)" >面板三 </ li >        
22        </ ul >
23        < div  style ="clear:none;width:300px; height:80px;" >1 </ div >
24        < div  style ="clear:none;width:300px; height:80px; display:none;" >2 </ div >
25        < div  style ="clear:none;width:300px; height:80px; display:none;" >3 </ div >
26      </ div > 
27  </ body >
28  </ html >

 

jq代码如下:用到了定时器setInterval和clearInterval

 

View Code
 1 $(document).ready( function () {
 2     $("#ul_tab li:eq(0)").css("background-color", "#f00"); // 页面加载初始化所有的li,和对应的div标签背景颜色
 3      $("#ul_tab").next("div").css("background-color", "#f00");
 4      var time;
 5     auto();
 6 })
 7  function tabs(oli, i) { // 改变对应li和div的样式
 8      clearInterval(time);
 9     $("#ul_tab >li").css("background-color", "#ff0")
10     $("#content>div").hide();
11     $(oli).css("background-color", "#f00");
12     $("#content>div:eq(" + i + ")").show().css("background-color", "#f00");
13 }
14 
15  function autoPlay(i) // 当li执行时显示的样式
16 
17     $("#ul_tab >li").css("background-color", "#ff0")
18     $("#content>div").hide();
19     $("#ul_tab >li:eq("+i+")").css("background-color", "#f00");
20      $("#content>div:eq(" + i + ")").show().css("background-color", "#f00");     
21 }
22 
23  function auto() // 自动播放函数
24  {
25   var i=0; // 定义全局变量 播放一次后i的值加1
26    var count=$("#ul_tab >li").length;  // 获取li的个数
27    time = setInterval( function(){
28           autoPlay(i);
29             i++;
30              if (i>=count) // 检测如果i的值超过范围 就从0开始
31              {
32               i=0;
33             }
34 },1500);
35 }

实例三:

 看到网上的牛人都是将js代码封装成所谓的插件形式,封装插件的方法有1.类级别的插件开发。2.对象级别插件开发。

类级别写法:jQuery.插件名称=function(){.....};

调用方法:$.插件名称();

 

View Code
<script type="text/javascript">
        jQuery.msg =  function () {
            alert("123");
      };         
    </script>
    <script type="text/javascript">
        $( function () {
$.msg();
        });
    </script>

 

来比较一下对象级别 插件写法:Go on!

 

( function($) 
{$.fn.pluginName =  function() 
{
//  代码区域。
};})(jQuery);

对象级别写法:$.fn.插件名称 = function(){};多了一个fn,没错,是fn! fn!!! fn!!!

调用方法:$("#Me").插件名称();

稍微说一下,$.插件名称();是通过$访问调用jquery中的全局函数,直接可以通过jquery或者美元$调用,从而实现一些效果。

先看看我的jq对象级别的封装

 

View Code
 1  //  JavaScript Document
 2  ( function($) {
 3           $.fn.tabs =  function(method) 
 4           {      
 5                 var defualts = { events: "click" };  // json对象数据,默认是点击事件  
 6                 var opts = $.extend({}, defualts, method);
 7                  var obj = $( this);
 8                  // 初始化第一个li,第一个div被选中
 9                  $("ul li:first",obj).addClass("defaultLi");
10                 $("div:first",obj).show();                     
11             
12              $("ul li",obj).bind(opts.events, function(){
13                          var index=$("ul li",obj).index    ($( this));                                    
14                      // 对所有的li和对应的div设置为违背触发事件时的样式
15                          $("ul li",obj).addClass("undefaultLi");
16                        $("div",obj).hide();
17                      // 对触发事件的li和div应用相应被选中的样式        
18                          $("ul li:eq("+index+")",obj).removeClass("undefaultLi").addClass("defaultLi");    
19                         $("div:eq("+index+")",obj).show().addClass("defaultDiv");            
20                                                                                 
21                 }) // end bind
22              
23           };
24 })(jQuery);

下面看看html控制页面的代码

View Code
 1  <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 2  < html  xmlns ="http://www.w3.org/1999/xhtml" >
 3  < head >    
 4  < title ></ title >  
 5   < meta  http-equiv ="Content-Type"  content ="text/html; charset=utf-8"   /> 
 6  < style  type ="text/css" >
 7  * {  margin : 0 ;  padding : 0 ; }
 8  #mytabs {
 9      height :  100px ;  
10      width :  300px ;  
11      padding-left :  0 ;
12      border : 1px solid #000 ;
13       }
14      #mytabs ul {
15            background-color :  #ff0 ;
16              width :  300px ;
17              height :  20px ;         
18             }
19          #mytabs ul li
20           {
21              float :  left ;
22              list-style :  none ;
23              height :  20px ;
24              width :  100px ;
25           }
26          #mytabs div
27           {
28              clear :  none ;
29              width :  300px ;
30              height :  80px ;             
31              display :  none ;
32              background-color : #F00 ;
33           }
34          .defaultLi {   
35              float :  left ;
36              list-style :  none ;
37              height :  20px ;
38              width :  100px ;
39              background-color : #F00 ;
40           }
41          .undefaultLi
42           {    float :  left ;
43              list-style :  none ;
44              height :  20px ;
45              width :  100px ;
46              background-color : #ff0 ;
47           }
48          .defaultDiv
49           {
50              clear :  none ;
51              width :  300px ;
52              height :  80px ;
53              background-color : #F00 ;
54           }         
55  </ style >
56   
57  < script  src ="js/jquery-1.3.2.min.js"  type ="text/javascript" ></ script >   
58   < script  src ="js/mytabs2.js"  type ="text/javascript" ></ script >    
59    < script  type ="text/javascript" >       
60    $( function  () {         
61                // 默认为点击 $("#mytabs").tabs();    
62                $( " #mytabs " ).tabs({events: " mouseover " })
63                });    
64      </ script >
65   </ head >< body >  
66     <!-- tabs示例 -->    
67     < div  id ="mytabs" >       
68      <!-- 选项卡区域 -->        
69      < ul >           
70           < li >< href ="#" >选项1 </ a ></ li >        
71           < li >< href ="#" >选项2 </ a ></ li >          
72            < li >< href ="#" >选项3 </ a ></ li >      
73       </ ul >       
74                <!-- 面板区域 -->      
75            < div >11111 </ div >        
76              < div >22222 </ div >      
77             < div>33333 </ div >    
78      </ div >
79   </ body >
80  </ html >

实例三的方式,html页面简单,只有定义面板区域总div的id,不过jq调用都是对样式类名的控制,不像前两种比较固定,调用插件的方法只有一句话

 

<script type="text/javascript">      
  $( function () {         
              // 默认为点击 $("#mytabs").tabs();    
              $("#mytabs").tabs({events:"mouseover"})
              });    
   </script>

最后提供完整代码:/Files/Jaylong/tab切换面板.zip


原文链接:http://www.cnblogs.com/Jaylong/archive/2011/10/20/ty.html
加载中
0
冰奇
冰奇

赞一个~~呵呵

只是不了解为什么出现在Android里~~

0
小牧
小牧
可以再android中加载HTML页面的。
返回顶部
顶部