jQuery写百叶窗和和页面滚动

百叶窗

思路

1.先给每一个li绑定mouseenter(或者mouseover)事件,我们优先选用mouseenter,因为mouseover具有事件冒泡的特征,而mouseenter没有,较为方便。
2.然后当你进入li的时候通过改变li的left值。也就是当你进入当前li的时候改变前后li的left值,在当前li之前的里就是[0,60,120,180,240],之后里的值就是[ 0,560,620,680,740].

下面是html+css:
<style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        .shutter{
            width: 800px;
            height: 300px;
            border: 1px solid #000;
            margin: 100px auto;
            position: relative;
            overflow: hidden;
        }
        .shutter ul{
            list-style: none;
        }
        .shutter ul li{
            position: absolute;
            top: 0;
        }
        .shutter ul li.no0{left: 0;}
        .shutter ul li.no1{left: 160px;}
        .shutter ul li.no2{left: 320px;}
        .shutter ul li.no3{left: 480px;}
        .shutter ul li.no4{left: 640px;}
    </style>
</head>
<body>
    <div class="shutter">
        <ul>
            <li class="no0">
                <a href="">
                    ![](images/0.jpg)
                </a>
            </li>
            <li class="no1">
                <a href="">
                    ![](images/1.jpg)
                </a>
            </li>
            <li class="no2">
                <a href="">
                    ![](images/2.jpg)
                </a>
            </li>
            <li class="no3">
                <a href="">
                    ![](images/3.jpg)
                </a>
            </li>
            <li class="no4">
                <a href="">
                    ![](images/4.jpg)
                </a>
            </li>
        </ul>
    </div>
jQuery代码:
//给每个li绑定移开事件mouseleave(不冒泡)
        $("li").mouseleave(function() {
            //函数截流,即在当前动作完成之前不会进入下一动作
            $("li").stop(true);         
            //规定的每个li的位置
            $(".no0").animate({"left": 0});
            $(".no1").animate({"left": 120});
            $(".no2").animate({"left": 240});
            $(".no3").animate({"left": 360});
            $(".no4").animate({"left": 480});
        })
        //给每个li绑定移入事件
        $("li").mouseenter(function(){
            //函数截流,即在当前动作完成之前不会进入下一动作
            $("li").stop(true);
            //获取每个i的的下标值
            var i = $(this).index();
            //当前位置的前后li的left值
            var left = [0,60,120,180,240]
            var right = [0,560,620,680,740]
            //遍历所有的li
            $("li").each(function(j){
                //判断 如果当前li的index值(i)>= j时
                if (j <= i){
                    //那么当前li的左边就是left[j]
                  $(this).animate({"left":left[j]})
              }
                else{
                    ////否则当前li的右边就是right[j]
                    $(this).animate({"left":right[j]})
                }
            })
            
        })

页面滚动

思路:

1.先引入插件<script type="text/javascript" src="js/jquery.mousewheel.js" ></script>因为jQuery中没有滚动事件。
2.然后我们给document绑定滚轮事件mousewheel(),在得到e.deltaY的值。当值为负时,往下滚动,反之,向上滚动。
3.然后在更新当前页面的高度。

代码如下:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
        
            body, html {
                width: 100%;
                height: 100%;
                /* 给外层的body 添加隐藏*/
                overflow: hidden;  
            }
        
            #big {
                width: 100%;
                height: 100%;
                position: absolute;
                left: 0;
                top: 0;
            }
            
            .page {
                position: relative;
                width: 100%;
                height: 100%;
                background: green;
            }
            
            .page0 {
                background: green;
            }
            
            .page1 {
                background: yellow;
            }
            
            .page2 {
                background: greenyellow;
            }
            
            .page3 {
                background: orange;
            }
            
            .page4 {
                background: gold;
            }
        </style>
    </head>
    <body>
        <div id="big">
        <!-- div.page*5  按TAB键
            
            page page0  同时将 page 和 page0 作用在 div元素 中
        -->
        <div class="page page0">1</div>
        <div class="page page1">2</div>
        <div class="page page2">3</div>
        <div class="page page3">4</div>
        <div class="page page4">5</div>
</div>
    </body>
</html>
<script type="text/javascript" src="js/jquery-3.2.1.js" ></script>
<!-- jquery 没有处理滚轮的事件, 借助插件。 插件已经处理了不同浏览器的兼容问题 -->
<script type="text/javascript" src="js/jquery.mousewheel.js" ></script>
<script>
    var n = 0;
    $(document).mousewheel(function(e){
        //console.log(e.deltaY )
        if ($("#big").is(":animated")) {
            return
        }
        if (e.deltaY > 0) {
            n--;
        } else{
            n++
        }
        //判断n不能小于零或者大于四,否者滚轮会滚动到空白位置
        if (n < 0) {
            n = 0
        } 
        if(n > 4){
            n = 4
        }
        //保存body的高度值
        var h = $("body").height();
        //设置动画让最大的盒子big动一个-n * h
        $("#big").animate({"top": -n * h})
    })
    
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容

  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,313评论 0 8
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 1,592评论 2 10
  • 为甚嚒要学习jQuery? 因为JS中有很多痛点: window.onload事件只能出现一次,如果出现多次,后面...
    magic_pill阅读 808评论 0 13
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,319评论 0 2
  • 许久不动笔说些什么,再拾起笔怕也难逃硬式教育的后遗症,结束了众人各自印象中都最炎热的暑假,初到山大几个月,若说我...
    好大一个碗哟阅读 280评论 0 1