博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生js实现全屏滚动--fullPage
阅读量:6255 次
发布时间:2019-06-22

本文共 6346 字,大约阅读时间需要 21 分钟。

原生js实现全屏滚动

fullPage.js

function fullPage() {      const fullPage = document.getElementsByClassName("full_page")[0];      const fullPageItems = fullPage.getElementsByClassName("full_page_item");      const sliderTab = document.getElementsByClassName("slider_tab")[0];      const sliderTabItems = document.getElementsByTagName("li");      const sliderTabDivs = document.getElementsByClassName("small_tab");      const sliderTabImgs = sliderTab.getElementsByTagName("img");      const nextPage = document.getElementsByClassName("next_page")[0];            let pageIndex = 0, pageScroll = true, prevIndex = 0;            document.onmousewheel = mouseWheel;      document.addEventListener("DOMMouseScroll", mouseWheel)          // 点击箭头,实现下一页      nextPage.onclick = scrollDown          sliderTabClick()          // 滚轮事件      function mouseWheel(e) {        if(e.wheelDelta) {          if(e.wheelDelta > 0) {            scrollUp()          } else {            scrollDown()          }        } else {          if(e.detail > 0) {            scrollDown()          } else {            scrollUp()          }        }      }          // 上滑      function scrollUp() {        if(pageIndex > 0 && pageScroll) {          prevIndex = pageIndex;          pageIndex --;          srcollToPage(pageIndex, prevIndex)        } else if(pageIndex <= 0) {          pageIndex = 0        }      }          // 下滑      function scrollDown() {        if(pageIndex < fullPageItems.length - 1 && pageScroll) {          prevIndex = pageIndex;          pageIndex ++;          srcollToPage(pageIndex, prevIndex)        } else if(pageIndex >= fullPageItems.length - 1) {          pageIndex = fullPageItems.length - 1        }      }          // 滚动到对应页      function srcollToPage(pageIndex, prevIndex) {        fullPage.style.top = - pageIndex * 100 + "%";        fullPage.style.transition = `all ease-in ${(Math.abs(pageIndex - prevIndex) - 1)/2 + .3}s`        sliderTabSelect(pageIndex)        pageScroll = false        scrollTimer()        if(pageIndex == sliderTabItems.length -1) {          nextPage.style.opacity = "0"        } else {          nextPage.style.opacity = "1"        }      }          // 定时器 解决函数连续执行      function scrollTimer() {        setTimeout(function() {          pageScroll = true        }, 500)      }          // 页面滚动,导航对应变化      function sliderTabSelect(index) {        for(let i = 0; i < sliderTabDivs.length; i ++) {          sliderTabDivs[i].classList.remove("active");          sliderTabImgs[i].classList.remove("select");        }        sliderTabDivs[index].classList.add("active");        sliderTabImgs[index].classList.add("select")      }          // 点击导航,页面滚动      function sliderTabClick() {        for(let i = 0; i < sliderTabItems.length; i ++) {          sliderTabItems[i].onclick = function () {            if(i > pageIndex) {              fullPage.style.top = - (i - 1) * 100 + "%";            } else {              fullPage.style.top = - (i + 1) * 100 + "%";            }            srcollToPage(i, pageIndex)            pageIndex = i          }        }      }    }

html部分--index.html

              
全屏滚动
第1页
第2页
第3页
第4页
第5页
下三角

css部分--index.css

/* 容器 */    .container {      width: 100%;      height: 100vh;      overflow: hidden;      position: relative;    }        /* 全屏滚动容器 */    .full_page {      width: 100%;      height: 500%;      /* overflow: hidden; */      position: absolute;      top: 0;      left: 0;    }        .full_page_item {      width: 100%;      height: 20%;      position: relative;    }        .home {      background: url(../img/bg.png) #87b0a5;    }        .info {      background: url(../img/bg.png) #109085;    }        .skill {      background: url(../img/bg.png) #a29971;    }        .project {      background: url(../img/bg.png) #788990;    }        .contact {      background: url(../img/bg.png) #999;    }       /* 全屏滚动tab */    .slider_tab {      position: fixed;      top: 50%;      right: 30px;      margin-top: -150px;    }        .slider_tab li {      width: 50px;      height: 50px;      margin-bottom: 20px;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;    }        .slider_tab li div {      width: 15px;      height: 15px;      background: #f0f0f0;      border-radius: 50%;    }        .slider_tab li div.active {      width: 50px;      height: 50px;      background: #666;      transition: all .3s;    }        .slider_tab li div img {      width: 60%;      height: 60%;      padding-top: 20%;      padding-left: 20%;      display: none;    }        .slider_tab li div img.select {      display: block;    }        /* 下一页 */    .next_page {      width: 30px;      height: 30px;      position: fixed;      left: 50%;      margin-left: -15px;      cursor: pointer;      animation:jump .8s infinite;      -moz-animation:jump .8s infinite; /* Firefox */      -webkit-animation:jump .8s infinite; /* Safari and Chrome */      -o-animation:jump .8s infinite; /* Opera */    }        .next_page img {       width: 100%;    }        @keyframes jump    {      0% {bottom:70px;}      100% {bottom:55px;}    }        @-moz-keyframes jump /* Firefox */    {      0% {bottom:70px;}      100% {bottom:55px;}    }        @-webkit-keyframes jump /* Safari 和 Chrome */    {      0% {bottom:70px;}      100% {bottom:55px;}    }        @-o-keyframes jump /* Opera */    {      0% {bottom:70px;}      100% {bottom:55px;}    }

js部分--index.js

window.onload = function() {      fullPage()    }

图片

图片描述
clipboard.png
clipboard.png
clipboard.png
clipboard.png
clipboard.png

转载地址:http://blnsa.baihongyu.com/

你可能感兴趣的文章
Solidity notes
查看>>
网上购物系统(Task005)——通用数据库访问函数集SqlHelper类
查看>>
java 单例模式浅析
查看>>
Codeforces Round #389 (Div. 2,) B C
查看>>
python中configparser模块记录
查看>>
IIIDX[九省联考2018]
查看>>
Protobuf3 序列化
查看>>
C语言面试题大汇总
查看>>
JavaSE-List常用方法
查看>>
json 和 pickel 详解
查看>>
Linux基础命令之grep
查看>>
python自动化开发-7
查看>>
使用VS2010+SVN出現的問題
查看>>
谁说Javascript简单的?
查看>>
UVA 1374 Power Calculus
查看>>
表结构更改后或新增加数据后同步到表中
查看>>
软媒魔方u盘装系统
查看>>
python中的文件操作小结1
查看>>
ggplot2 geom设置—散点图
查看>>
inotify+rsync 实时同步目录文件
查看>>