zoukankan      html  css  js  c++  java
  • 【特效】页面滚动到相应位置运行css3动画

    请到我的个人博客网站上浏览此文章,欢迎评论和建议。

    文章链接:http://www.xiaoxianworld.com/archives/87

    现在css3动画很常见了,实际项目中经常应用,特别是那种长长的信息展示类的页面。于是产生一个问题,需要控制动画的运行,就像给其加一个开关,什么时候动,什么时候停,想随心所欲的控制。自然会用到animation-play-state属性,其两个属性值paused:规定动画已暂停,和running:规定动画正在播放,正好能满足要求。

    对于那种长长的页面,给一些文字或图片添加了动画后,想实现其随着页面滚动而动画的效果,因为如果动画一开始就运行,那么处在不是第一屏的内容,就算其动画运行了,我们也看不到。所以,就要实现,当内容从页面底端滚动出来,也就是出现在视野范围内时,动画才运行。这就免不了用到js,来获取滚动条滚动的高度,和动画所在层的位置。 

    写了一个简单的demo来具体说明吧,只写了一个文字从右向左移动的动画,当其滚动出现时,才运行:

    html:

    <div class="con">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</div>

    <ul class="list">
    <li>
    <p>第1屏动画进入视线</p>
    </li>
    <li>
    <p>第2屏动画进入视线</p>
    </li>
    <li>
    <p>第3屏动画进入视线</p>
    </li>
    </ul>

    css: 

    .con{ height:1200px;}
    .list{ list-style:none; padding:0; margin:0; border-top:2px solid blue;}
    .list li{ height:500px; border-bottom:1px solid green;}
    .list li p{ opacity:0; animation:move 1s forwards; animation-play-state:paused;}
    .list .move p{ animation-play-state:running;}
    @keyframes move{
    from{ opacity:0; margin-left:500px;}
    to{ opacity:1; margin-left:0;}
    }

    js: 

    $(document).ready(function(){
    var a,b,c;
    a=$(window).height();
    $(window).scroll(function(){
    var b=$(this).scrollTop();
    $(".list li").each(function(){
    c=$(this).offset().top;
    if(a+b>c){
    $(this).addClass("move");
    }
    else{
    $(this).removeClass("move");
    }
    });
    });

    });

    源码下载:http://pan.baidu.com/s/1qY8nWPA 

  • 相关阅读:
    [校内模拟赛T3]火花灿灿_二分答案_组合数学_贪心
    [loj#539][LibreOJ NOIP Round #1]旅游路线_倍增_dp
    [loj#2005][SDOI2017]相关分析 _线段树
    [bzoj3162]独钓寒江雪_树hash_树形dp
    [bzoj2746][HEOI2012]旅行问题 _AC自动机_倍增
    [bzoj2597][Wc2007]剪刀石头布_费用流
    [bzoj4818][Sdoi2017]序列计数_矩阵乘法_欧拉筛
    vue中的组件传值
    vue中的修饰符
    箭头函数递归斐波那契数列
  • 原文地址:https://www.cnblogs.com/xiaoxianweb/p/6627029.html
Copyright © 2011-2022 走看看