`

js实现动画滚动条

阅读更多

我 有这样一个案例,需要在用户完成评论是跳转到评论的开始位置。在这里用到了jquery的animate方法

 

var first = $('.pCenter');
var firstTop = first.offset().top;
addReply($('#cont').val());
var bd = (window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body');
	
bd.animate({scrollTop: firstTop}, 500);
 

本例参考了一下代码

 

var scrolltotop={
	//startline: 鼠标向下滚动了100px后出现#topcontrol
	//scrollto: 它的值可以是整数,也可以是一个id标记。若为整数(假设为n),则滑动到距离top的n像素处;若为id标记,则滑动到该id标记所在的同等高处
	//scrollduration:滑动的速度
	//fadeduration:#topcontrol这个div的淡入淡出速度,第一个参数为淡入速度,第二个参数为淡出速度
	//controlHTML:控制向上滑动的html源码,默认为<img src="up.png" style="width:48px; height:48px" />,可以自行更改。该处的html代码会被包含在一个id标记为#topcontrol的div中。
	//controlattrs:控制#topcontrol这个div距离右下角的像素距离
	//anchorkeyword:滑动到的id标签
	/*state: isvisible:是否#topcontrol这个div为可见
			shouldvisible:是否#topcontrol这个div该出现
	*/
 
	setting: {startline:100, scrollto: 0, scrollduration:500, fadeduration:[500, 100]},
	controlHTML: '<a href="#top">back-to-top</a>',
	controlattrs: {offsetx:5, offsety:5}, 
	anchorkeyword: '#top', 
 
	state: {isvisible:false, shouldvisible:false},
 
	scrollup:function(){
		if (!this.cssfixedsupport) {
			this.$control.css({opacity:0}) 
		};//点击后隐藏#topcontrol这个div
		var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : parseInt(this.setting.scrollto);
		if (typeof dest=="string" && jQuery('#'+dest).length==1) { //检查若scrollto的值是一个id标记的话
			dest=jQuery('#'+dest).offset().top;
		} else { //检查若scrollto的值是一个整数
			dest=this.setting.scrollto;
		};
		this.$body.animate({scrollTop: dest}, this.setting.scrollduration);
	},
 
	keepfixed:function(){
		//获得浏览器的窗口对象
		var $window=jQuery(window);
		//获得#topcontrol这个div的x轴坐标
		var controlx=$window.scrollLeft() + $window.width() - this.$control.width() - this.controlattrs.offsetx;
		//获得#topcontrol这个div的y轴坐标
		var controly=$window.scrollTop() + $window.height() - this.$control.height() - this.controlattrs.offsety;
		//随着滑动块的滑动#topcontrol这个div跟随着滑动
		this.$control.css({left:controlx+'px', top:controly+'px'});
	},
 
	togglecontrol:function(){
		//当前窗口的滑动块的高度
		var scrolltop=jQuery(window).scrollTop();
		if (!this.cssfixedsupport) {
			this.keepfixed();
		};
		//若设置了startline这个参数,则shouldvisible为true
		this.state.shouldvisible=(scrolltop>=this.setting.startline)? true : false;
		//若shouldvisible为true,且!isvisible为true
		if (this.state.shouldvisible && !this.state.isvisible){
			this.$control.stop().animate({opacity:1}, this.setting.fadeduration[0]);
			this.state.isvisible=true;
		} //若shouldvisible为false,且isvisible为false
		else if (this.state.shouldvisible==false && this.state.isvisible){
			this.$control.stop().animate({opacity:0}, this.setting.fadeduration[1]);
			this.state.isvisible=false;
		}
	},
 
	init:function(){
		jQuery(document).ready(function($){
			var mainobj=scrolltotop;
			var iebrws=document.all;
			mainobj.cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest; //not IE or IE7+ browsers in standards mode
			mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body');
 
			//包含#topcontrol这个div
			mainobj.$control=$('<div id="topcontrol">'+mainobj.controlHTML+'</div>')
				.css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'})
				.attr({title:'Scroll Back to Top'})
				.click(function(){mainobj.scrollup(); return false;})
				.appendTo('body');
 
			if (document.all && !window.XMLHttpRequest && mainobj.$control.text()!='') {//loose check for IE6 and below, plus whether control contains any text
				mainobj.$control.css({width:mainobj.$control.width()}); //IE6- seems to require an explicit width on a DIV containing text
			};
 
			mainobj.togglecontrol();
 
			//点击控制
			$('a[href="' + mainobj.anchorkeyword +'"]').click(function(){
				mainobj.scrollup();
				return false;
			});
 
			$(window).bind('scroll resize', function(e){
				mainobj.togglecontrol();
			});
		});
	}
};
 
scrolltotop.init();
分享到:
评论

相关推荐

    原生JS实现的滚动条支持各种回调支持移动端PC端支持自定义样式

    通过编写JavaScript代码,我们可以精确控制滚动条的行为,如滑动速度、触发动画等,同时,还能实现跨平台的兼容性,确保在不同设备上一致的表现。 对于"支持各种回调"这一点,这意味着开发者可以监听滚动事件,当...

    JS控制滚动条自动向下滚动

    在JavaScript(JS)编程中,控制滚动条自动向下滚动是一种常见的需求,特别是在实时聊天、论坛或者日志更新等场景中,我们希望用户能够始终保持看到最新的内容。本篇将详细讲解如何利用JavaScript实现这一功能,以及...

    JS模仿横向滚动条

    总的来说,"JS模仿横向滚动条"涉及的知识点包括JavaScript事件监听、DOM操作、CSS样式定制、以及动画效果的实现。通过这些技术的结合运用,开发者可以创建出既美观又具有交互性的自定义滚动条,提升网页的用户体验。

    js原生实现滚动条效果.rar

    总结来说,JS原生实现滚动条效果主要涉及监听滚动事件、获取和改变滚动位置、自定义滚动条样式以及模拟滚动条和滚动动画。通过这些技术,开发者可以创建出更具个性化的滚动体验,满足不同项目的需求。

    js自定义滚动条插件

    1. **源码文件**:这是实现自定义滚动条功能的核心代码,可能是.js文件,用于定义滚动条的样式和行为。这些文件通常包含了CSS样式定义(如scss或less)和JavaScript逻辑(如jQuery插件或者纯JavaScript模块),用于...

    JS模仿滚动条JS模仿滚动条

    5. **添加动画效果**:为了增加酷炫感,可以使用CSS过渡(`transition`)或JavaScript动画库(如GSAP)为滚动条添加平滑滚动效果。 6. **兼容性处理**:不同的浏览器对滚动条自定义的支持程度不同,所以需要进行...

    New js 滚动条

    因此,"New js 滚动条"通常是利用JavaScript库或者自定义代码来实现更加个性化和动态的滚动效果。 一、JavaScript滚动条的优势 1. 可定制性:JavaScript允许开发者自定义滚动条的样式,颜色,宽度,甚至动画效果,...

    js模拟滚动条

    总之,通过JavaScript模拟滚动条,我们可以实现跨浏览器的个性化滚动体验,同时结合CSS3的样式定制,可以创造出符合网站设计风格的独特滚动条,提升用户体验。不过,需要注意的是,过度复杂的滚动条可能会影响页面...

    js各种兼容滚动条

    综上所述,JavaScript在处理滚动条兼容性方面提供了多种方法和策略,包括使用CSS自定义Webkit内核的滚动条样式,通过事件监听滚动行为,以及借助第三方库实现更强大的自定义滚动条功能。在实际开发中,应根据项目...

    jscroll_js实现QQ软件滚动条

    在本主题中,我们将深入探讨如何使用`jscroll.js`这个JavaScript库来实现类似QQ软件那样的滚动条效果。 `jscroll.js`是一个轻量级的JavaScript插件,主要用于创建自定义的滚动条,它可以提供更加优雅的滚动体验,...

    js图片左右滚动条切换.zip

    【标题】"js图片左右滚动条切换.zip"所包含的知识点主要是关于JavaScript(JS)实现的图片滚动条交互效果,这种效果通常用于图片相册或展示类网站,以提供用户友好的图片浏览体验。在现代网页设计中,动态且可自定义...

    js滚动条美化

    虽然CSS能实现基本的滚动条样式定制,但若要实现更复杂的交互效果,如动态改变滚动条样式、添加动画等,就需要借助JS。以下是一个简单的例子,展示了如何用JS监听滚动事件并修改滚动条状态: ```javascript window....

    jQuery实现精美滚动条

    本篇文章将详细探讨如何使用jQuery来实现这样的精美滚动条。 首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画效果以及Ajax交互。通过jQuery,我们可以轻松地对网页中的滚动条进行...

    原生js scrollbars滚动条插件设置浏览器竖直滚动条美化.rar

    原生JS(JavaScript)滚动条插件能够帮助开发者自定义和美化浏览器的默认滚动条,使其符合网站的整体风格。本资源包“原生js scrollbars滚动条插件设置浏览器竖直滚动条美化”提供了一套解决方案,专用于竖直滚动条...

    Jquery实现水平滚动条

    而使用Jquery实现的水平滚动条可以提供更加灵活、美观且用户体验良好的解决方案。本篇将深入探讨如何利用Jquery插件来创建这样的功能。 首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、...

    js 模拟滚动条js 模拟滚动条js 模拟滚动条

    JavaScript(简称JS)提供了一种方式来实现这一功能,让我们深入探讨一下如何使用JavaScript来模拟滚动条。 首先,我们需要了解原生浏览器的滚动条是由浏览器自身控制的,其样式和行为通常无法直接修改。但在CSS3中...

    javascript 美化滚动条 可自定义图片

    通过阅读和分析这些源码,开发者可以学习到如何利用JavaScript创建自定义滚动条,以及如何实现过渡动画。 在实际应用中,要根据项目需求选择合适的库或编写自定义代码。同时,考虑到性能和可维护性,应尽量避免过度...

    js Tab选项卡标签滑动带滚动条的内容滚动切换显示代码

    在这个特定的场景中,我们讨论的是如何使用JS实现Tab选项卡的滑动切换,同时带有滚动条的内容滚动功能。这种功能常见于网页设计中,可以有效地组织和展示大量信息,提升用户体验。 首先,`index.html`是网页的主体...

    纯ajax实现的滚动条

    而“工具”标签可能表明这个滚动条实现可以作为一种增强网页交互性的工具,开发者可以将其整合到自己的开发工具箱中。 【压缩包子文件的文件名称列表】:ajaxProcessBar_text 这个文件名暗示了压缩包中可能包含...

    滚动条js代码

    JavaScript(简称JS)是一种强大的客户端脚本语言,可以用来实现各种动态效果,包括自定义滚动条。本文将深入探讨如何使用JavaScript来实现滚动条效果,以及相关的技术细节。 ### 1. 基本原理 滚动条的实现主要...

Global site tag (gtag.js) - Google Analytics