jQuery实现带幻灯的tab滑动切换风格菜单代码


Posted in Javascript onAugust 27, 2015

本文实例讲述了jQuery实现带幻灯的tab滑动切换风格菜单代码。分享给大家供大家参考。具体如下:

这是一款很不错的TAB滑动切换效果,jQuery带幻灯的tab滑动切换风格菜单导航条,点击上方的文字,下边就向左或向右滑动切换,动画效果的TAB选项卡。

运行效果截图如下:

jQuery实现带幻灯的tab滑动切换风格菜单代码

在线演示地址如下:

具体代码如下:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery实现的带幻灯效果的tab风格导航菜单</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script>
;(function( $ ){
 var $scrollTo = $.scrollTo = function( target, duration, settings ){
 $(window).scrollTo( target, duration, settings );
 };
 $scrollTo.defaults = {
 axis:'xy',
 duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
 };
 $scrollTo.window = function( scope ){
 return $(window)._scrollable();
 };
 $.fn._scrollable = function(){
 return this.map(function(){
  var elem = this,
  isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
  if( !isWin )
   return elem;
  var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
  return $.browser.safari || doc.compatMode == 'BackCompat' ?
  doc.body : 
  doc.documentElement;
 });
 };
 $.fn.scrollTo = function( target, duration, settings ){
 if( typeof duration == 'object' ){
  settings = duration;
  duration = 0;
 }
 if( typeof settings == 'function' )
  settings = { onAfter:settings }; 
 if( target == 'max' )
  target = 9e9;
 settings = $.extend( {}, $scrollTo.defaults, settings );
 duration = duration || settings.speed || settings.duration;
 settings.queue = settings.queue && settings.axis.length > 1;
 if( settings.queue )
  duration /= 2;
 settings.offset = both( settings.offset );
 settings.over = both( settings.over );
 return this._scrollable().each(function(){
  var elem = this,
  $elem = $(elem),
  targ = target, toff, attr = {},
  win = $elem.is('html,body');
  switch( typeof targ ){
  // A number will pass the regex
  case 'number':
  case 'string':
   if( /^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ) ){
   targ = both( targ );
   // We are done
   break;
   }
   // Relative selector, no break!
   targ = $(targ,this);
  case 'object':
   // DOMElement / jQuery
   if( targ.is || targ.style )
   // Get the real position of the target 
   toff = (targ = $(targ)).offset();
  }
  $.each( settings.axis.split(''), function( i, axis ){
  var Pos = axis == 'x' ? 'Left' : 'Top',
   pos = Pos.toLowerCase(),
   key = 'scroll' + Pos,
   old = elem[key],
   max = $scrollTo.max(elem, axis);
  if( toff ){// jQuery / DOMElement
   attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
   // If it's a dom element, reduce the margin
   if( settings.margin ){
   attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
   attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
   }
   attr[key] += settings.offset[pos] || 0;
   if( settings.over[pos] )
   // Scroll to a fraction of its width/height
   attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
  }else{ 
   var val = targ[pos];
   // Handle percentage values
   attr[key] = val.slice && val.slice(-1) == '%' ? 
   parseFloat(val) / 100 * max
   : val;
  }
  // Number or 'number'
  if( /^\d+$/.test(attr[key]) )
   // Check the limits
   attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
  // Queueing axes
  if( !i && settings.queue ){
   // Don't waste time animating, if there's no need.
   if( old != attr[key] )
   // Intermediate animation
   animate( settings.onAfterFirst );
   // Don't animate this axis again in the next iteration.
   delete attr[key];
  }
  });
  animate( settings.onAfter );  
  function animate( callback ){
  $elem.animate( attr, duration, settings.easing, callback && function(){
   callback.call(this, target, settings);
  });
  };
 }).end();
 };
 $scrollTo.max = function( elem, axis ){
 var Dim = axis == 'x' ? 'Width' : 'Height',
  scroll = 'scroll'+Dim;
 if( !$(elem).is('html,body') )
  return elem[scroll] - $(elem)[Dim.toLowerCase()]();
 var size = 'client' + Dim,
  html = elem.ownerDocument.documentElement,
  body = elem.ownerDocument.body;
 return Math.max( html[scroll], body[scroll] ) 
  - Math.min( html[size] , body[size] );
 };
 function both( val ){
 return typeof val == 'object' ? val : { top:val, left:val };
 };
})( jQuery );
$(document).ready(function() { 
 $('#mask').css({'height':$('#panel-1').height()}); 
 $('#panel').width(parseInt($('#mask').width() * $('#panel div').length));
 $('#panel div').width($('#mask').width());
 $('a[rel=panel]').click(function () {
 var panelheight = $($(this).attr('href')).height();
 $('a[rel=panel]').removeClass('selected');
 $(this).addClass('selected');
 $('#mask').animate({'height':panelheight},{queue:false, duration:500});  
 $('#mask').scrollTo($(this).attr('href'), 800); 
 return false;
 });
});
</script>
<style>
body {
 padding:0;
 margin:0 20px;
 background:#d2e0e5;
 font:12px arial;
}
#scroller-header a {
 text-decoration:none; 
 color:#867863; 
 padding:0 2px;
}
#scroller-header a:hover {
 text-decoration:none; 
 color:#4b412f
}
a.selected {
 text-decoration:underline !important; 
 color:#4b412f !important;
}
#scroller-header {
 background:url(images/header.gif) no-repeat;
 width:277px;
 height:24px;
 padding:35px 0 0 15px;
 font-weight:700;
}
#scroller-body {
 background:url(images/body.gif) no-repeat bottom center;
 width:277px;
 padding-bottom:30px;
}
#mask {
 width:250px;
 overflow:hidden;
 margin:0 auto;
}
#panel {
}
#panel div {
float:left;
}
#panel ul {
list-style:none;
margin:0 5px;
padding:0;
}
#panel ul li {
padding:5px;
color:#557482;
border-bottom:1px dotted #ccc;
}
#panel ul li.last {
border-bottom:none !important;
}
#panel-1 {
}
#panel-2 {
}
#panel-3 {
}
</style>
</head>
<body>
<h2><a href="#">jQuery Sidebar Sliding Tab Menu Tutorial</a></h2>
<div id="scroller-header">
<a href="#panel-1" rel="panel" class="selected">流行时尚</a>
<a href="#panel-2" rel="panel">网络注释</a>
<a href="#panel-3" rel="panel">历史记录</a>
<a href="#panel-4" rel="panel">网络收藏</a>
</div>
<div id="scroller-body">
<div id="mask">
<div id="panel">
 <div id="panel-1">
 <ul>
 <li>Simple JQuery Image Slide Show with Semi-Transparent Caption</li>
 <li>A Really Simple jQuery Plugin Tutorial</li>
 <li>Create a Simple CSS + Javascript Tooltip with jQuery</li>
 <li>Simple jQuery Modal Window Tutorial</li>
 </ul>
 </div>
 <div id="panel-2">
 <ul>
 <li>30 Javascript Menu Plugins and Scripts</li>
 <li>10+ jQuery photo gallery and slider plugins</li>
 </ul> 
 </div>
 <div id="panel-3">
 <ul>
 <li>CSS and Web Gallery List</li>
 <li class="last">Examples for Inpiration</li>
 </ul> 
 </div>
 <div id="panel-4">
 <ul>
 <li>三水点靠木</li>
 <li>seo</li>
 <li class="last">wordpress</li>
 </ul> 
 </div> 
</div>
</div>
</div>
</body>
</html>

希望本文所述对大家的jquery程序设计有所帮助。

Javascript 相关文章推荐
巧妙破除网页右键禁用的十大绝招
Aug 12 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
Apr 28 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
Jan 13 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
JavaScript 变量、作用域及内存
Apr 08 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
使用bootstrap实现多窗口和拖动效果
Sep 22 Javascript
vue element upload实现图片本地预览
Aug 20 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
Sep 22 Javascript
vue实现树状表格效果
Dec 29 Vue.js
jquery图片倾斜层叠切换特效代码分享
Aug 27 #Javascript
JavaScript实现非常简单实用的下拉菜单效果
Aug 27 #Javascript
JavaScript中的Function函数
Aug 27 #Javascript
jquery带动画效果幻灯片特效代码
Aug 27 #Javascript
javascript中判断json的方法总结
Aug 27 #Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 #Javascript
js实现div拖动动画运行轨迹效果代码分享
Aug 27 #Javascript
You might like
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php变量范围介绍
2012/10/15 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
JavaScript方法和技巧大全
2006/12/27 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
在微信小程序中使用vant的方法
2019/06/07 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
python实现多线程采集的2个代码例子
2014/07/07 Python
python根据出生日期返回年龄的方法
2015/03/26 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
matplotlib绘制动画代码示例
2018/01/02 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python函数的万能参数传参详解
2019/07/26 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
竞聘演讲稿
2014/04/24 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers