整屏滚动的讲解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整屏滚动的讲解相关的知识,希望对你有一定的参考价值。

今天写的是整屏滚动的内容,最近奶糖饱受Vue的折磨,之前学习js的时候就没认真学,知道这一个月的后台学习下来我才知道js和jq是如此的可爱,好了闲话不扯进入今天的主体。

首先是我们的布局部分

//有了身体,我们还是得给他设置点样式属性,毕竟得有情怀

<style>

* {margin: 0; padding: 0;}
button {background: #3498db; color: #fff; font-size: 14px; text-align: center; width: 60px; height: 60px; padding: 10px; border: none 0; cursor: pointer; position: fixed; right: 30px; bottom: 30px; display: none}
#wrap { overflow: hidden; position: relative;}
#content {position: absolute; left: 0; top: 0; width: 100%;}
.colorBlock {height: 500px; background: #c0dbff;}
#nav {position: fixed; left: 50%; margin-left: -70px; bottom: 30px;}
#nav a {background: #999; float: left; width: 10px; height: 10px; margin-left: 10px; cursor: pointer;}
#nav .now { background: #3CF;}

</style>

//这里是我们的body部分

<div id="wrap">
<div id="content">
<div class="colorBlock">第一屏</div>
<div class="colorBlock" style="background:#c0faff">第二屏</div>
<div class="colorBlock" style="background:#d6ffc0">第三屏</div>
<div class="colorBlock" style="background:#ffcfe3">第四屏</div>
</div>
</div>
<div id="nav"><a index="0" class="now"></a><a index="1"></a><a index="2"></a><a index="3"></a></div>
<script>
/* 要求:返回顶部按钮开始是隐藏的,当页面向上滚动超出600px的时候,显示返回顶部按钮 */
var GLOBLF = GLOBLE||{}; //这里我们定义一个全局变量,用来存值

window.onload = function(){
  resizeBlocks();

window.onresize = function(){
rsizeBlocks();
//调整页面大小的时候让整屏居中。

mainSlideGo();
if(mainSlideIndex){
    if(GLOBLE.resizeTimer){
      clearInterval(GLOBLE.resizeTimer);
}
GLOBLE.resizeTimr = setTimeout(function(){
    mainSlideGoing = true;
    mainSlideGo();
   },200)

  }
}
}//到这里的话我们的自动调整页面大小居中就OK啦
//现在我们需要鼠标点击时候切换

var aAtags = document.getElementByTagName("a");
for(var i=0;i<aAtags.length;i++){
  aAtags[i].onclick = function(){
    mainSlideIndex = this.getAttribute("index");
     mainSlideGo();
}
}
// 单页滚动开始
//鼠标滚动实践绑定及检测
var mainSlideIndex = 0;
var mainSlideGoing = false;
var mainSlideDelay = 0;
var mainSlideTimer = null;

var scrollFunc = function(e){
  e = e || window .event;
    if(e.wheelDelta){//判断浏览器IE,谷歌滑轮      if(e.wheelDelta>0){ //当滑轮向上滚动时候
        console.log("滑轮向上啦!!")
       maiSlideUp();
}
    if(e.wheelDelta<0){//滑轮向下滚动时
      console.log(“滑轮向下了”)
        maiSlideDown()
}
}  else if(e.detail){//Firefox滑轮事件
    if(e.detail>0){//当滑轮向下滚动时
      console.log(“滑轮向下了”)
        mainSlideDown()
}
  if(e.detail<0){//滑轮向上滚动
    console.log(“向上滚动了”)
    mainSlideUp
}  

}

}
//现在我们给页面绑定滑轮滚动事件
if(document.addEventListener){firefox
  document.addEventListener("DOMMouseScroll",scrollFunc,false);
}
//滚动滑轮触发scrollFunc方法 //IE 谷歌
window.onmousewheel = document.onmousewheel = scrollFunc;
//向下滚动
function mainSlideDown(){
  if(mainSlideDelay<1){//这个判断用于第一次检测鼠标滚动,让第二次鼠标滚动的时候在执行页面动画效果
      clearInterval(mainSlideTimer);
        mainSlideTimer = setTimeout(unction(){
          mainSlideDelay++
},100)
    
}else if(!mainSlideGoing){
  mainSlideGoing  = true;
  mainSlideIndex++;
  if(mainSlideIndex>3){
    maindeIndex = 3;
} 
    mainSlideGo();
}
}
//向上滚动
functuin mainSlideUp(){
  if(mainSlideDelay<1){
    clearInterval(mainSlideTimer);
    mainSlideTimer = setTimeout(functin(){
      mainSlideDelay++

},100)
}else if(!mainSlidGoing){
  mainSlideGoing = true;
  mainSlideIndex--;
  if(mainSlideIndex<0){
    maiSlideIndex = 0
}
  mainSlideGo();
}
}

//滚动方法
function mainSlideGo(){
//用于设置滚动方向
var direction = 1;

var oDiv = document.getElementById("content");
var taget = document.getElementById("wrap").offstHeight*mainSlideIndex;
var distance = Math.abs(target + oDiv.offsetTop);
//判断滚动方法,并设置相应的滚动方向是+还是-
  if(target + oDiv.offsetTop <0){
    direction = -1;
}
//设置滚动速度
var spead = distance/40;
var remainDis = distance;
//运动定时器
var goTimer = setInterval(function(){
oDiv.style.top = oDiv.offsetTop - spead*direction + "px";
remainDis -= spead;
  if(remainDis<=40){
    clearInterval(goTimer);
    oDiv.style.top = -target +"px";
    mainSlideGoing = false;
    mainSlideDelay = 0;
    document.getElementsByClassName("now")[0].className = "";
    docment,getElementsByTagName("a")[mainSlideIndex].className = "now"
,},8)
    /*单页滚动结束*/

//调整页面高度的方法
function resizeBlocks(){
var screenh = document.documentElement.clientHeight || document.body.clientHeight;

aBlock = document.getElementsByClassName("colorBlock");

for(var i=0; i<aBlock.length; i++){

aBlock[i].style.height = screenh + "px";
}
document.getElementById("wrap").style.height = screenh + "px";

}

}


</script>



以上是关于整屏滚动的讲解的主要内容,如果未能解决你的问题,请参考以下文章

关于整屏滚动的一些想法

jQuery整屏滚动

鼠标滚轮事件实现整屏滚动

搜狗浏览器响应式整屏切换效果

如何在 MS Word 文档中显示代码片段,因为它在 *** 中显示(滚动条和灰色背景)

Proteus仿真LCD1602整屏内容移动