做了一个动感十足的TAB不敢独占,写出来大家共享,大家可以到宝宝孕历首页看看效果。
其实现是通过js控制div的scrollLeft属性来实现的,tab分成两个部分tab头部分和tab体部分,tab体是一个很宽的层,此div的overflow被设置成hidden,在鼠标挪动到不同的tab标签上时,逐渐修改tab体的scrollLeft属性。
实现的js代码如下:
/*scroll*/
var Scroller = Class.create();
Scroller.prototype = {
initialize:function(options){
this.commandsWrapId = options.commandsWrapId;
this.scrollWrapId = options.scrollWrapId;
this.sectionWidth = options.sectionWidth;
this.step = options.step;
},
scrollTo : function(ev){
if(!ev)ev = window.event;
var otriger = getSrcElement(ev);
while(otriger && otriger.tagName != 'LI'){
otriger = otriger.parentNode;
}
Scroller.runningInstance = otriger.scroller;
var instance = otriger.scroller;
for(var i=0;i<instance.triggers.length;i++){
instance.triggers[i].className = 'command unselected';
}
otriger.className = 'command selected';
var index = otriger.scrollIndex;
if(instance.interval)window.clearInterval(instance.interval);
instance.targetLeft = index * instance.sectionWidth;
//计算一个step,要求在500ms内转到指定位置
instance.step = Math.abs((instance.targetLeft - instance.wrap.scrollLeft)/25);
instance.interval = window.setInterval(instance.scrollByStep,10);
},
scrollByStep : function(){
var i = Scroller.runningInstance;
var current = parseInt(i.wrap.scrollLeft);
if(current > i.targetLeft){
if(current - i.targetLeft < i.step)i.wrap.scrollLeft = i.targetLeft;
else i.wrap.scrollLeft = i.wrap.scrollLeft - i.step ;
}else if(current < i.targetLeft){
if(i.targetLeft - current < i.step)i.wrap.scrollLeft = i.targetLeft;
else i.wrap.scrollLeft = i.wrap.scrollLeft + i.step;
}else{
if(i.interval){
window.clearInterval(i.interval);
}
}
},
bindEvent : function(scroller){
scroller.wrap = $id(scroller.scrollWrapId);
var ocommands = $id(scroller.commandsWrapId);
var olis = $tagsC('LI','command',ocommands);
scroller.triggers = olis;
if(olis){
for(var i=0;i<olis.length;i++){
olis[i].scrollIndex = i;
olis[i].scroller = scroller;
addEvent(olis[i],'mouseover',scroller.scrollTo);
}
}
}
};
/*endscroll*/
需要在页面上调用的css和js代码如下:
<style tpe="text/css">
.scrollCommands{clear:both;width:600px;}
.scrollCommands UL{list-item:none;margin:0px;padding:0px;width:600px;overflow:auto;zoom:1;clear:both}
.scrollCommands UL LI{height:20px;line-height:20px;margin:0px;padding:0px;display:block;float:left;}
.scrollCommands UL LI.command{width:65px;border-top:1px solid #eee;border-left:1px solid #eee;border-right:1px solid #eee;text-align:center}
.scrollCommands UL LI.selected{border-bottom:1px solid #fff;background:#fff;}
.scrollCommands UL LI.unselected{border-bottom:1px solid #f0f0f0;background:#f0f0f0;}
.scrollCommands UL LI.sep{width:10px;border-top:1px solid #fff;border-left:1px solid #fff;border-right:0px solid #fff;border-bottom:1px solid #eee;}
.scrollCommands A{font-size:12px;}
#divScrollWrap{width:600px;overflow:hidden;height:200px;padding:0px;clear:both;margin-bottom:10px;border-bottom:1px solid #eee;border-left:1px solid #eee;border-right:1px solid #eee;}
.scrollSection{width:600px;overflow:hidden;height:200px;background:#fff;float:left}
.scrollSection H3{font-size:14px;display:block;border-bottom:1px solid #f0f0f0;font-weight:normal;margin:0px 0px 5px 0px;padding:2px 2px 2px 10px;}
.scrollSection UL{list-style:none;line-height:20px;padding:0px 0px 0px 6px;margin:0px;}
.scrollSection LI{margin:0px;padding:0px 0px 0px 8px;line-height:20px;background:url(/imgs/punyarrowright.gif) no-repeat left 7px;height:20px;overflow:hidden;}
.w280{width:280px;}
</style>
<script type="text/javascript">
addLoadEvent(function(){
var scroller = new Scroller({commandsWrapId:'divScrollCommands',scrollWrapId:'divScrollWrap',sectionWidth:600,step:10});
scroller.bindEvent(scroller);});
</script>
欢迎大家点评,指点。
分享到:
相关推荐
### DIV+CSS布局技巧整理集合 #### 命名规范 在进行网页设计时,合理的命名不仅能够提高代码的可读性,还能帮助其他开发者更好地理解网页结构。以下是一些常用的命名规范: - **页头**:`header` - **登录条**:`...
在网页设计中,Tab选项卡是一种常见的用户界面元素,它能有效地组织和展示大量信息,让用户在有限的空间内浏览多个内容板块。jQuery是一款强大的JavaScript库,提供了丰富的功能和简便的API,使得实现复杂的交互效果...
每个TAB按钮对应一个内容容器,通常使用`<div>`元素来表示。我们可以用CSS来美化这些元素,如设置背景色、边框、字体样式等。 接着,我们使用JavaScript来处理用户交互。这包括监听TAB按钮的点击事件,以及控制内容...
tabtab增删选项卡<div class="wrap-top"> <div class="tab-left"><<</div> <div class="tab-right">>></div> <div class="cont-tab"> <div class="cont-scroll"> <span>HTML</span> [removed]void(0)">...
传统的Tab标签通常是横向排列,但随着移动设备和响应式设计的普及,竖向(纵向)Tab标签也开始受到关注,特别是对于屏幕空间有限的情况,竖向布局能更有效地利用垂直空间。本文将详细介绍如何实现“竖向tab标签支持...
在这个“jQuery定位滚动tab选项卡特效”项目中,我们将探讨如何利用jQuery和相关的HTML、CSS技术实现一个动态滚动的选项卡效果。 首先,让我们了解核心组件: 1. **HTML 结构**: - 选项卡容器:通常是一个div,...
这可以通过修改CSS过渡属性或者使用JavaScript库如GSAP来实现。 6. **响应式设计**:考虑到移动设备,确保选项卡和图片滚动在不同屏幕尺寸下都能正常工作,可以利用媒体查询(media queries)进行布局调整。 通过...
3. **滚动效果**:为了让菜单能够滚动,可以利用CSS的`overflow`属性。将`overflow-y`设置为`scroll`,当菜单项超出容器高度时,会出现滚动条。若想实现无滚动条但依然能滚动的效果,可以使用CSS的`transform`属性,...
"jQuery点击TAB导航菜单页面全屏滚动切换代码" 提供了一种方法,利用jQuery库实现动态的页面导航和全屏滚动效果,使用户在浏览网站时能享受到流畅的体验。下面将详细介绍这个功能的实现原理和关键知识点。 首先,...
在创建Tab选项卡时,我们可以使用`<ul>`和`<li>`来构建Tab导航,`<div>`来承载每个Tab对应的内容区域。 CSS则用于美化和布局页面元素。我们可以为Tab导航设置样式,例如背景颜色、字体、边框等。同时,为了实现向上...
Tab标签的设计通常基于前端框架,如Bootstrap、React、Vue或Angular等,或者是自定义的JavaScript和CSS实现。下面,我们将详细讨论与这个主题相关的几个核心知识点: 1. **HTML结构**:Tab标签的HTML结构通常包括一...
本文介绍了使用JavaScript实现Tab选项卡切换特效的调试过程,这种方法在Web前端开发中很常见,通过点击不同的标签来切换内容区域的显示,从而达到页面内容的快速跳转和切换。 首先,文章讲解了实现Tab选项卡切换...
本项目主要关注于实现这样的功能,结合了JavaScript和CSS技术,同时应用了tab选项卡的设计,使得用户能够在不同的内容区域进行上拉刷新和下拉加载。 1. **上拉刷新(Pull-to-Refresh)**: 上拉刷新是指当用户滚动...
在本教程中,我们将探讨如何使用jQuery来实现一个Tab选项卡滚动导航切换特效。这个功能在许多现代网页设计中非常常见,它不仅提供了良好的用户体验,还可以有效地组织和展示大量内容。 首先,我们要了解jQuery库的...
CSS标准定义了一系列规则和语法,让开发者能够精确地控制网页中的每一个元素,包括字体、颜色、间距、布局等等。 #### 四、具体Web组件及应用 接下来,我们将根据描述中的各个元素进行详细解读: 1. **页头...
首先,让我们理解这个特效的主要组成部分:选项卡、滚动按钮、图片异步加载和用户提示信息。 ### 选项卡与JQuery 选项卡是一种将大量信息组织成易于浏览和导航的界面元素。在JavaScript库中,jQuery是最常用的选择...
在Vue.js中实现“滚动tab跟随切换效果”是一种常见的移动端交互设计,它可以提供更好的用户体验,让用户更容易地在多个内容区域之间导航。以下是如何利用Vue.js实现这个功能的详细步骤: 首先,我们需要创建一个Vue...
### 107个常用JavaScript语句解析 #### 1. `document.write("")` - **功能**:在页面上写入指定的内容。 - **应用场景**:适用于简单的测试或页面加载时输出信息。 - **示例代码**: ```javascript document....
可以考虑使用`overflow` CSS属性和`scroll`事件来实现。 **5. 优化与兼容性** 为了确保良好的用户体验,我们需要处理各种边缘情况,比如错误处理(如请求失败)、回退机制(如无网络时显示默认内容)以及浏览器...
初始化Better Scroll时,你需要传递这个`.wrapper` 组件的DOM对象或其对应的CSS选择器。例如: ```javascript // 直接传递DOM对象 import BScroll from 'better-scroll' let wrapper = document.querySelector('....