`

js -> JS 原生 滚动条 动画 效果

 
阅读更多

 

scroll_Left 和 scroll_Top

 

function scroll_Left(tar_x){ 
    var timer = setTimeout(function(){  
        var current_x = document.body.scrollLeft
  
        step = 40 
        if (tar_x>current_x){  
            var dist = Math.ceil((tar_x-current_x)/step)  
            var next_x = current_x+dist  
            if(next_x<tar_x){  
                window.scrollTo(next_x,0)     
                scroll_Left(tar_x)  
            }  
            else{  
                window.scrollTo(next_x,0)  
                //clearTimeout(timer)  
            }  
        }  
        else{ 
            var dist = Math.floor((tar_x-current_x)/step)  
            var next_x = current_x+dist  
            if(next_x>tar_x){  
                window.scrollTo(next_x,0)  
                scroll_Left(tar_x)   
            }  
            else{  
                window.scrollTo(next_x,0)  
                //clearInterval(timer)  
            }  
        }  
    },1)  

}
function scroll_Top(tar_y){ //tar_y 即滑动条顶端 距离页面最上面的距离  
    //console.log('oooooooo')  
    var timer = setTimeout(function(){  
        var current_y = document.body.scrollTop  
        //console.log(current_y)  
        step = 40 //步长系数 即剩余的距离除以40 每1ms 移动一段距离  
        if (tar_y>current_y){ //tar_y > current_y 即向下滚动  
            var dist = Math.ceil((tar_y-current_y)/step)  
            var next_y = current_y+dist  
            if(next_y<tar_y){  //向上滚动和向下滚动判定的区别 是这里!!  
                window.scrollTo(0,next_y)     
                scroll_Top(tar_y)  
                console.log('do down')  
            }  
            else{  
                window.scrollTo(0,tar_y)  
                //clearTimeout(timer)  
            }  
        }  
        else{ //tar_y < current_y 即向上滚动  
            var dist = Math.floor((tar_y-current_y)/step)  
            var next_y = current_y+dist  
            if(next_y>tar_y){  
                window.scrollTo(0,next_y)  
                scroll_Top(tar_y)  
                console.log('do up')  
            }  
            else{  
                window.scrollTo(0,tar_y)  
                //clearInterval(timer)  
            }  
        }  
    },1)  
}  

 

 

**结合 zepto 做的 手势左右 滑动 轮播 

index.html

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta name="viewport" content="initial-scale=1, width=device-width, maximum-scale=1, user-scalable=0"  />
	<meta name="apple-mobile-web-app-capable" content="yes" />
	<meta name='apple-touch-fullscreen' content='yes'/>
	<meta name="full-screen" content="yes"/>
	<script src="./zepto.min.js"></script>
	<script src="./g.js?23"></script>
</head>
<body>

<script language="javascript">
<!--
	;(function($){
		var winWidth = $(window).width();
		 var startX = 0;
		 var startLeft = 0;
		 //alert(winWidth)
		 $(document).on("touchstart",function(obj){
			 startX = obj.changedTouches["0"].clientX;
 			 startLeft = document.body.scrollLeft;
			 if(startLeft < winWidth){
				 startLeft = 0;
			 }else{
				 startLeft = winWidth;
			 }
		 });
		 $(document).on("touchend",function(obj){
	 
		 
			if(((obj.changedTouches["0"].clientX) - startX) > 100  ){
				scroll_Left_prt(0);
			}else if(startX - ((obj.changedTouches["0"].clientX)) > 100  ){ 
				scroll_Left_prt(winWidth);
			}else{
				scroll_Left_prt(startLeft);
			}
			 
		
		 });
	})(Zepto);  
 

//-->
</script>
<style type="text/css">
	*{margin:0px;padding:0px}
	table{background:red;}
	table td{width:10%;text-align:center}
</style>
<table width="200%" height="100%" id="tb" cellspacing="0" cellpadding="0" border="0">
	<tr style="width:100%">
		<td id="f">1</td>
		<td>2</td>
		<td>3</td>
		<td>4</td>
		<td>5</td>
		<td>6</td>
		<td>7</td>
		<td>8</td>
		<td>9</td>
		<td>10</td>		
	</tr>
</table>

	
	

</body>
</html>

 

 

g.js  -- 解决 连续两次操作时 遇到的冲突 。 在外面包括了一个 function 和 加了个全局变量 判断状态

var scrolll_stop = false;
function scroll_Left_prt(tar_x){	
	if(scrolll_stop == true){return;}
	scrolll_stop = true;
	scroll_Left(tar_x);
}

function scroll_Left(tar_x){ 
    var timer = setTimeout(function(){  
        var current_x = document.body.scrollLeft
  
        step = 10;//值越小,滚动越快
        if (tar_x>current_x){  
            var dist = Math.ceil((tar_x-current_x)/step)  
            var next_x = current_x+dist  
            if(next_x<tar_x){  
                window.scrollTo(next_x,0)     
                scroll_Left(tar_x)   				
            }  
            else{  
				scrolll_stop = false;
                window.scrollTo(next_x,0)  
                //clearTimeout(timer)  
            }  
        }  
        else{ 
            var dist = Math.floor((tar_x-current_x)/step)  
            var next_x = current_x+dist  
            if(next_x>tar_x){  
                window.scrollTo(next_x,0)  
                scroll_Left(tar_x)       
            }  
            else{  
				scrolll_stop = false;
                window.scrollTo(next_x,0)  
                //clearInterval(timer)  
            }  
        }  
    },1)  

}
 

 

分享到:
评论

相关推荐

    JS--几种滚动条方式

    - **jQuery插件**:jQuery提供了一些插件,如`jScrollPane`和`Perfect Scrollbar`,它们允许开发者创建完全自定义的滚动条效果,包括平滑滚动、自定义滚动条形状和动画。 - **原生JS库**:例如`SimpleBar`,它是一...

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

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

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

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

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

    在现代网页设计中,用户体验是至关重要的因素之一,而滚动条作为用户与页面...通过结合CSS3和JavaScript,我们可以定制滚动条的样式、大小、颜色,甚至添加动画效果,以适应不同网站的设计风格,提升用户的浏览体验。

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

    2. **CSS样式**:隐藏原生滚动条,为自定义滚动条创建样式。使用`width: 0;`和`opacity: 0;`可以隐藏原生滚动条。 ```css .scroll-container::-webkit-scrollbar { width: 0; } .scroll-container { scrollbar...

    JS模仿横向滚动条

    "JS模仿横向滚动条"这个主题,就是利用JavaScript来创建一个自定义的、模仿原生浏览器滚动条的行为,以提供更美观或者更符合设计需求的用户体验。 在传统的HTML页面中,滚动条是浏览器默认提供的,其样式和行为由...

    一款效果很不错的JS滚动条

    标题中的“一款效果很不错的JS滚动条”指的是一个JavaScript实现的滚动条插件或库,它提供了优于浏览器默认滚动条的视觉效果和交互体验。在网页设计中,滚动条是必不可少的元素,尤其是在内容丰富的页面上,它帮助...

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

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

    js模拟滚动条

    然后,为这个容器添加一个隐藏的原生滚动条,通过JavaScript来控制其显示和隐藏。 2. **JavaScript实现滚动条**: 使用JavaScript,我们可以监听滚动事件,例如`onscroll`,然后根据滚动位置更新我们自定义滚动条...

    javascript经典特效---滚动条的设置.rar

    例如,我们可以创建自定义的滚动条元素,用JavaScript监听滚动事件,然后通过改变这些元素的位置和状态来模拟原生滚动条的行为。 3. **动态效果**:JavaScript可以添加动画效果到滚动条上,如平滑滚动。例如,`...

    js各种兼容滚动条

    在处理滚动条动画时,为了确保流畅性,可以利用`requestAnimationFrame`来避免不必要的重绘和回流。同时,使用`throttle`和`debounce`函数来限制滚动事件的频率,防止性能问题。 ```javascript function throttle...

    New js 滚动条

    1. 隐藏原生滚动条:通过CSS设置`overflow`属性为`hidden`,隐藏浏览器默认的滚动条。 2. 创建自定义滚动条:利用HTML和CSS创建滚动条的外观,可以是任何元素,如`div`或`span`。 3. 添加滚动事件:通过JavaScript...

    javascript 原生代码实现滚动条

    这个博客链接可以作为进一步学习和理解JavaScript原生滚动条实现的资源。 总结来说,JavaScript原生代码实现滚动条涉及到对DOM的深入理解,以及熟练运用事件监听、样式修改和动画处理等技巧。通过`wjscroll.js`这样...

    Optiscroll-轻量级纯Js滚动条美化插件

    它的核心特点在于轻量化和灵活性,能够让开发者以纯JS的方式实现滚动条的个性化设计,同时避免了对原生滚动条的干扰。 在网页设计中,滚动条虽然看似微不足道,但其样式和交互体验却直接影响到用户的浏览感受。原生...

    js三级滚动条

    在JavaScript中,"js三级滚动条"通常是指在网页中实现多级嵌套的滚动条效果,例如在导航菜单、树形结构或者长列表中。这样的功能可以增强用户体验,使得大量数据的展示更加有序和易操作。下面我们将深入探讨如何在...

    华丽滚动条滚动条Jquery

    这个标题表明我们将讨论如何利用Jquery这一强大的JavaScript库来创建炫丽的滚动条效果。 Jquery是一款广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。通过Jquery,开发者可以...

    0309 js 滚动条

    除了操作原生滚动条,JavaScript还可以实现自定义的滚动动画。通过定时器(如`requestAnimationFrame`)和计算差值,可以创建平滑的滚动效果。例如,实现一个向下滑动的动画: ```javascript function ...

    js 模拟 滚动条

    在开始模拟之前,我们需要隐藏浏览器的原生滚动条。这可以通过CSS实现,例如: ```css .scrollable { overflow: hidden; /* 隐藏横向和纵向滚动条 */ scrollbar-width: none; /* 针对Firefox */ -ms-overflow-...

    jquery 滚动条插件nanoScroller 的用法

    - `iOSNativeScrolling`:在 iOS 设备上是否使用原生滚动,值为布尔类型。 - `alwaysVisible`:滚动条是否始终可见,值为布尔类型。 - `flashDuration`:滚动条高亮显示的时间,单位为毫秒。 配置选项可以通过初始...

    js原生图片上下无缝滚动

    由于我们希望达到“无缝”效果,所以在最后一张图片滚动出去的同时,第一张图片需要重新出现在容器的另一端,这样用户就不会感觉到图片的切换,而是像一个连续的滚动条一样。 原生JavaScript实现图片无缝滚动,主要...

Global site tag (gtag.js) - Google Analytics