zoukankan      html  css  js  c++  java
  • 百度客户端首页的图片轮换效果

    今天看了下css3中关于动画的一些内容,想到自己手机上了装了一个百度的客户端。有个换一批的功能。点击后,可以快速浏览不同的分类信息。网上找了个截图。

    这个图没显示全,最下面那个 换一批 的按钮没显示出来。

    点击换一批后,上面的新闻会以一种旋转的动画方式进行替换新的新闻,我个人觉得那种动画方式 有点像开关窗户的动作,很有意思。
    然后就是看下,怎么实现效果的呢,

    css3中的动画 网上介绍的有translate(x,y)---移动,rotate(deg)---旋转,skew(x,y)---缩放,和这里的效果好像都不太沾边。我查了好多才知道,这里用的是rotate

    但并不是直接给一个角度就可以的,用的是rotateY(deg)-----没错,rotate还有rotateX,rotateY()两个方法,传的参数值和rotate一样,只要传个角度就可以。

    #two{
         width : 200px;
         height : 100px;
         background : #ccc;
         display:inline-block;                    
    }
    .a{
        -moz-animation: change 1s linear;
        -webkit-animation : change 1s linear;
     }
                
                
     @-moz-keyframes change{
         25% {-moz-transform: rotateX(180deg);}
     }
     @-webkie-keyframes change{
         25% {-moz-transform: rotateX(180deg);}
     }

    样式出来了,现在要做的是,点击标签,背景展示换窗口的效果,同时标签内的内容页发生了变化。这样的话就需要添加事件了。

    function id(id){
        return document.getElementById(id);
    }
    
    id('two').onclick = function(){
        id('two').className = 'a';
        id('two').innerHTML = 'new content';
                 
    };

    嗯 点击后,因为增加了动画样式,所以背景展示换窗口效果,内容也变化了,但是再点击,由于目前标签已经有了'a'样式,因此,就不再展示换窗口效果了。

    怎么解决,很简单,点击标签的时候,先添加动画样式,动画展示完后,再清掉动画样式。那下一个问题,如何知道css3动画已经展示完了呢,如何监听css3的动画事件呢

    两个解决方案,第一个,制定一个计时器,和动画的时间一样长。

    第二个:监听css3的动画事件(百度真好,我是百度才知道原来还有这么些事件的。)

     当-webkit-animation动画结束时有一个webkitAnimationEnd事件,只要监听这个事件就可以了。-----缺点(值适用于chrome。火狐下还是要用计时器,悲催)

    同 webkitAnimationEnd类似的还有 动画的开始事件 ---webkitAnimationStart;

    因此代码再次的修订如下:

            function id(id){
            return document.getElementById(id);
        }
        
        id('two').onclick = function(){
            id('two').className = 'a';
                 
        };
        
            
        id('two').addEventListener('webkitAnimationEnd',function(){
            id('two').className = '';
            id('two').innerHTML = 'new content';
        })

    在chrome下试了下,木有问题,附上css3中,对rotateX以及rotateY的介绍。

  • 相关阅读:
    log4net封装类
    (转)MySQL InnoDB 架构
    备份宽带不足,innobackupex备份导致从库不可写
    从库查询阻塞xtrabackup备份,应该是kill备份还是kill查询的问题
    rabbitmq群集安装
    MySQL索引选择问题(要相信MySQL自己选择索引的能力)
    binlog_format产生的延迟问题
    命令行登录mysql报Segmentation fault故障解决
    MySQL5.7.21启动异常的修复
    大查询对mha切换的影响
  • 原文地址:https://www.cnblogs.com/lxin/p/3548554.html
Copyright © 2011-2022 走看看