原生javascript实现鼠标滚轮滚动页面效果

html部分:

<div id="gp">
 <div id="gunping">
        <div class="page1 page">1</div>
        <div class="page2 page">2</div>
        <div class="page3 page">3</div>
        <div class="page4 page">4</div>
        <div class="page5 page">5</div>
        <div class="page6 page">6</div>
    </div>
</div>

css部分:

 html, body { padding:0; margin:0; overflow:hidden;}
#gp { width:100%; text-align:center; font-size:100px; overflow:hidden;}
#gunping { width:100%; position:absolute; top:0; left:0; }
.page { width:100%;}
.page1 { background:#f00000;}
.page2 { background:#0ff000;}
.page3 { background:#00f0f0;}
.page4 { background:#f00f00;}
.page5 { background:#f000f0;}
.page6 { background:#0000ff;}

js部分:

function getStyle(obj, attr){
 return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj, false)[attr];
}
function startMove(obj,attr,iTarget){
 var iSpeed = 0;
 var sty = 0;
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
  sty = parseInt(getStyle(obj,attr));
  iSpeed = (iTarget - sty)/7;
  iSpeed = iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
  if(Math.abs(iTarget - sty)>3){
   obj.style[attr] = sty + iSpeed + ‘px‘;
  }else{
   clearInterval(obj.timer);
   obj.style[attr] = iTarget + ‘px‘;
  }
 },30);
}
//获取className兼容ie
function getClassName(tag, className){
 if(document.getElementsByClassName){
  return document.getElementsByClassName(className);
 }else{
  var rel = [];
  var nodes = document.getElementsByTagName(tag);
  for(var i=0; i<nodes.length; i++){
   var tagClassName = nodes[i].className.split(/\s+/);
   for(var j=0; j<tagClassName.length; j++){
    if(tagClassName[j] == className){
     rel.push(nodes[i]);
     break;
    }
   }
  }
  return rel;
 }
}
function gunPing(){
 var aDiv = document.getElementById(‘gp‘);
 var oDiv = document.getElementById(‘gunping‘);
 var oDiv_div = getClassName(‘div‘, ‘page‘);
 var aHeight = document.documentElement.clientHeight;
 var iNum = 0;
 
 fnHeight();
 //页面高度
 function fnHeight(){
  for(var i=0; i<oDiv_div.length; i++){
   oDiv_div[i].style.height = aHeight + ‘px‘;
  }
  aDiv.style.height = aHeight + ‘px‘;
 }
 //ff滚轮事件
 if(document.addEventListener){
  document.addEventListener(‘DOMMouseScroll‘,scrollFunc,false);
 }
 //ie滚轮事件
 document.onmousewheel = scrollFunc;
 
 function scrollFunc(e){
  e = e || window.event;
  if(e.wheelDelta<0 || e.detail>0){
   if(iNum > -oDiv_div.length+1){
    iNum--;
   }
  }else{
   if(iNum<0){
    iNum++
   }
  }
  startMove(oDiv,‘top‘,iNum*aHeight);
 }
 
 //改变窗口大小
 window.onresize = function(){
  aHeight = document.documentElement.clientHeight;
  fnHeight();
  oDiv.style.top = iNum*aHeight + ‘px‘;
 }
 
}
window.onload = function(){
 gunPing();
}
时间: 2024-11-10 07:03:38

原生javascript实现鼠标滚轮滚动页面效果的相关文章

如何让DbGrid支持鼠标滚轮滚动

如何让DbGrid支持鼠标滚轮滚动 在主窗体上加一个ApplicationEvents控件(控件在Additional面板中), 在它的OnMessage事件中加入下述代码,一切搞定-! procedure TFrm_main_usermanager.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var hWnd: THandle; aName: array [0..255] of char; begin //

javaScript判断鼠标滚轮的上下滚动

分享一个js实现判断鼠标滚轮的上下滚动: 1 <script type="text/javascript"> 2 var scrollFunc = function (e) { 3 e = e || window.event; 4 if (e.wheelDelta) { //判断浏览器IE,谷歌滑轮事件 5 if (e.wheelDelta > 0) { //当滑轮向上滚动时 6 alert("滑轮向上滚动"); 7 } 8 if (e.wheel

WPF中关于自定义控件的滚动条鼠标停留在内容上鼠标滚轮滚动无效的问题

问题起因:在一个用户控件里放置了1个TreeView垂直顺序放置. 当用户控件中的内容超过面板大小时,滚动条会自动出现 ,但是只有当鼠标指示在右边滚动条的那一条位置时,才支持鼠标滚轴滚动. 点在控件内部时滚轴无效. 问题分析:由于设置了d:designheight,自定义控件的宽高都是随着父容器的变化而变化的,于是我将Height设为较小的固定高度时,发现鼠标停留在控件内容时,滚轮控制滚动条滚动是有效的.这就说明UI上显示的滚动条并非是这个自定义控件的,而是这个自定义控件所在的父容器的,这样也解

如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动

VB6毕竟是很老的产品了,它的代码编辑器垂直滚动条并不能随鼠标的滚轮而滚动,这个问题会让我们在编写代码的时候觉得很不方便,不过还是有一种方法可以解决这个问题的.    先下载一个微软发布的"VB6IDEMouseWheelAddin.dll"文件(此文件已经上传到百度网盘,网址:http://pan.baidu.com/s/1c06KY7e,或者也可以自己百度一下该文件名下载),然后按照以下的方法进行(注意:此处介绍的是一种通用的方法,适合是32位和64位的系统上使用): 一.  将下

鼠标滚轮控制页面横向滚动

metrojs.js和jquery.mousewheel.min.js这两个是必须要有的 <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script src="js/jquery-1.4.2.min.js" type="text/javascript"><

jquery+javaScript完成瀑布流图片页面效果

效果如图: html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/image.css"/> <script type="text/jav

原生JavaScript 全特效微博发布面板效果实现

javaScript实现微博发布面板效果.采用的js知识有: 正则表达式区分中英文字节.随机数生成等函数 淡入淡出.缓冲运动.闪动等动画函数 onfocus.onblur.oninput.onpropertychange等事件 动态添加元素,获取设置动态属性 基本思路: 当内容为空时,发布按钮为灰色,点击时候文本框会闪动,输入文字会提示还可以输入多少文字,超出会提示,且不能发布,要注意的是,判断文本框内容的长度,不能直接来,因为英文属于一个字节,中文占两个,要用正则处理一下! 获取到所有头像的s

原生javascript实现网页显示日期时钟效果

刚接触javascript中Date内置对象时,以为这些方法都太简单了,结果要自己实际操作写一个时钟效果还真一时把我难住了,主要有几点大家要注意的.先看实际效果 要实现这样的效果 某年某月某日星期几几时几分几秒 先看代码效果 <script type="text/javascript"> window.onload=function(){ showDate(); countdown(); } function showDate(){ var myDate=new Date(

jquery鼠标移入某区域屏蔽鼠标滚轮 滚动滚动条

<script> var firefox = navigator.userAgent.indexOf('Firefox') != -1; function MouseWheel(e) { ///对img按下鼠标滚路,阻止视窗滚动 e = e || window.event; if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; if (e.preventDefault) e.preventDefault(