自己写的简单的FullPage插件

用js的定时器写的小玩意...

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div id="container">
    <div id="page1">
        <p>我是第一页</p>
    </div>
    <div id="page2">
         <p>我是第二页</p>
    </div>
    <div id="page3">
         <p>我是第三页</p>
    </div>
    <div id="page4">
         <p>我是第四页</p>
    </div>
</div>
    <script src="FullPage.js"></script>
</body>
</html>

html部分父容器里放上几个div,每个div占一整屏

<style>
        *{
            padding: 0;
            margin: 0;
        }
        #container{
            overflow: hidden;
        }
        #page1{
            background: coral;
            position: relative;
        }
        #page2{
            background: mediumspringgreen;
            position: relative;
        }
        #page3{
            background: #00bfbf;
            position: relative;
        }
        #page4{
            background: royalblue;
            position: relative;
        }
        p{
            position: absolute;
            left: 50%;
            top: 50%;
            margin: -33px -125px;
            font-size: 50px;
        }

    </style>

css嘛关键就是父容器要设置overflow: hidden;

window.onload = function () {
    pageHeight(‘container‘, ‘page1‘, ‘page2‘, ‘page3‘, ‘page4‘);
};
//改变页面大小做出变化
window.onresize = function () {
    pageHeight(‘container‘, ‘page1‘, ‘page2‘, ‘page3‘, ‘page4‘);
};

function pageHeight(){
    var windowHeight = window.innerHeight;//整个页面高度
    for(var i=0; i<arguments.length; i++){
        document.getElementById(arguments[i]).style.height = windowHeight + ‘px‘;
    }

    var flag = true; //在滚动时不影响
    var parObj = document.getElementById(arguments[0]);
    var maxHeight = (arguments.length-2)*windowHeight;
    function foo(e) {
        //判断滚动条滚动的方向
        var e=e||window.event;
        if(e.wheelDelta){
            //e.wheelDelta    其他浏览器识别的
            if(e.wheelDelta>0){
                //console.log("向上滚动");
                move(parObj, e.wheelDelta);

            }else{
                //console.log("向下滚动");
                move(parObj, e.wheelDelta);
            }
        }else if(e.detail){
            //e.detail是火狐浏览器识别
            if(e.detail>0){
                console.log("向下滚动");
                move(parObj, -e.detail);
            }else{
                console.log("向上滚动");
                move(parObj, -e.detail);
            }
        }
    }
    //绑定滚动事件
    if(document.addEventListener){
        document.addEventListener(‘DOMMouseScroll‘,foo,false);
    }
    //W3C
    window.onmousewheel=document.onmousewheel=foo;//IE/Opera/Chrome

    function move(parObj, wheelDelta){
        if (!flag) {
            return;
        }
        flag =false;
        if(wheelDelta>0){
            var tarHeight = parObj.scrollTop - windowHeight;
            if(tarHeight <= 0){
                tarHeight = 0;
            }else{
                tarHeight = parObj.scrollTop - windowHeight;
            }
            parObj.timer = setInterval(function () {
                if(parObj.scrollTop > tarHeight){
                    parObj.scrollTop = parObj.scrollTop + Math.floor((tarHeight - parObj.scrollTop)/10);
                }
                if(parObj.scrollTop == tarHeight){
                    clearInterval(parObj.timer);
                    flag = true;
                }
            }, 50);
        }else{
            var tarHeight = (windowHeight + parObj.scrollTop);
            if(tarHeight >= maxHeight){
                tarHeight = maxHeight;
            }else{
                tarHeight = (windowHeight + parObj.scrollTop);
            }
            parObj.timer = setInterval(function () {
                if(parObj.scrollTop < tarHeight){
                    parObj.scrollTop = parObj.scrollTop + Math.ceil((tarHeight - parObj.scrollTop)/10);
                }
                if(parObj.scrollTop == tarHeight){
                    clearInterval(parObj.timer);
                    flag = true;
                }
            }, 50);
        }
    }
}

js 监听滑轮,利用定时器移动一屏的高度

用的时候只要改变函数里的参数就可以了   pageHeight(‘container‘, ‘page1‘, ‘page2‘, ‘page3‘, ‘page4‘, ‘page5‘.....); 随着父容器里有多少子div传进去就ok

时间: 2024-10-07 04:45:01

自己写的简单的FullPage插件的相关文章

写个简单的chrome插件-京东商品历史价格查询

说chrome插件编写的先关文章, 首推小茗的[干货]Chrome插件(扩展)开发全攻略. 有非常完善的理论,引用和demo代码. 但是还是建议看官方的 chrome extensions. chrome 插件是什么,能做什么 增强浏览器功能,HTML.CSS.JS.图片等资源组成的一个.crx后缀的压缩包. 从界面到网络请求,到本地资源的交互,都是统统可以的. 比如: ColorZilla: 取色工具 Octotree: github 项目的右边导航 FeHelper: Web 前端助手, j

写一个简单的JQ插件(例子)

虽然现在 vue angular react 当道啊但是那 JQ还是有一席之地很多很多的小单位啊.其实还会用到 我也放一个例子吧虽然我也不是很肯定有没有人写的比我更好啊但是我相信 我这个还是蛮实用的 话不多说 丢代码 JQ插件标准的封装代码如下,首先需要闭包: <scripttype="text/javascript"> (function ($) {  //这里放入插件代码 })(jQuery); </script> 这是jQuery官方的插件开发规范,这样写

08.01《jQuery》——cookie插件的简单应用和自己写的简单更换颜色插件

1.Cookie是网站设计者放置在客户端的小文本文件.实现:存储用户曾经浏览过的产品列表,记住用户喜欢浏览哪类新闻等. 在用户允许的情况下,还可以存储用户的登录信息,使得用户在访问网站时不必每次都键入这些信息. 首先上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="../jqu

嫌弃浏览器自带弹出框,写个简单的jq自定义弹窗插件

最近做项目写个表单验证,提交信息验证有错误的时候,用了最懒的方法,直接把错误提示用alert()弹出框弹出来,于是老大看完后给了这个表情... 确实,自带弹窗样式丑不能自定义这些问题困扰着很多用户,而且在同浏览器有不同的表现, 有这样的:.. 有这样的:.. 还有这样的:.. 还有这样的: 相信做前端的都很熟悉这些面孔~ 不统一风格的弹窗直接拉低了整个网站的逼格.. 好,那就写个简单的JQ插件来装饰一下吧. JQ插件标准的封装代码如下,首先需要闭包: <script type="text/

【UI插件】简单的日历插件(下)—— 学习MVC思想

前言 我们上次写了一个简单的日历插件,但是只是一个半成品,而且做完后发现一些问题,于是我们今天尝试来解决这些问题 PS:距离上次貌似很久了 上次,我们大概遇到哪些问题呢: ① 既然想做一套UI库,那么就应该考虑其它UI库的接入问题 这个意思就是,我们的系统中所有UI插件应该有一些统一行为,我们如果希望统一为所有的插件加一点什么东西,需要有位置可加 这个意味着,可能我们所有的插件需要继承至一个抽象的UI类,并且该类提供了通用的几个事件点 ② 上次做的日历插件虽然说是简单,其耦合还是比较严重的(其实

Sublime插件开发——简单的代码模板插件

最近一段一直使用sublime进行golang开发,整体感觉很不错,虽然比不上eclipse之类IDE强大,但是用起来很轻巧便捷,开发golang完全做够了.由于有一部分代码复用率很高,经常要用到,而自己记性特别差也懒得每次自己敲,就希望能够像其他IDE的插件那样能直接插入代码模板,于是就研究了下sublime的插件开发(网上有很多人推荐Gist,但是发现由于网络原因适用Gist插件很慢,每次都要等很长时间). 装过插件的都知道sublime的插件采用python开发的,所以如果想要开发需要对p

如何写一个Jquery 的Plugin插件

博客分类: Javascript /Jquery / Bootstrap / Web jQuery配置管理脚本FirebugJavaScript JQuery Plugin插件,如果大家不明白什么是JQuery插件或都不清楚如何编写可以查看其官方的网站:jQuery Authoring Guidelines 好了,下面有一些我觉得想做一个好的插件必须应有的要求: 1.在JQuery命名空间下声明只声明一个单独的名称 2.接受options参数,以便控制插件的行为 3.暴露插件的默认设置 ,以便外

写个自己的Xcode4插件

转自:http://joeyio.com/ios/2013/07/25/write_xcode4_plugin_of_your_own/ 刚写iOS程序的时候就知道Xcode支持第三方插件,比如ColorSense等很实用的插件,但Xcode的插件开发没有官方的文档支持,一直觉得很神秘,那今天就来揭开它的面纱. 在Xcode启动的时候,它会检查插件目录(~/Library/Application Support/Developer/Shared/Xcode/Plug-ins)下所有的插件(扩展名

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.