• 跟我学习css3之transition


    HTML5和css3已经是将来的发展趋势,现在有很多移动端还有一些游戏公司已然使用它们开
    发了比较成功的产品。我在2011年的时候也跟着技术潮流初浅的学习了html5+css3。毕竟那
    时候我没有把学习的知识与实际工作结合起来。因此,这种没有实践的学习很容易忘记。在
    去年年底的时候公司有个页面的浮层图标需要优化,就是鼠标划过能变大,划出复原。其实
    要做这个功能很简单,也有很多的方法。但是,我后来就用了css3的transition属性。

          

    简单的示例结构:

    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
        <meta charset="UTF-8">
        
    
    <title></title>
        <style type="text/css">
            #scrollTop { margin:0; _margin-bottom:30px; padding:0; 
    
    height:77px; position:fixed; _position:absolute; right:2px; bottom:30px; 
    
    _bottom:0; _top:expression(eval(document.documentElement.scrollTop
    
    +document.documentElement.clientHeight-this.offsetHeight-(parseInt
    
    (this.currentStyle.marginTop,10)||0)-(parseInt
    
    (this.currentStyle.marginBottom,10)||0))); z-index:60000;}
            #scrollTop a {display:block; width:28px; height:77px; margin:0; 
    
    padding:0; text-decoration:none; background:#FFF url
    
    (http://s.hqbcdn.com/assets/v3/images/scrollTop_ico.png) no-repeat;}
            
        </style>
    </head>
    <body>
        <div style="display:none;" id="scrollTop"><a 
    
    href="javascript:;">&nbsp;</a></div>
    </body>
    </html>
    View Code

    方法一:
    给元素添加:hover伪类样式

    #scrollTop a:hover {width:84px; background:#b4b9bd url
    
    (http://s.hqbcdn.com/assets/v2/images/scroll_top.jpg) no-repeat 50% 50%; text-
    
    decoration:none; opacity:0.8;}

    这个方式功能是达到了,但是交互的效果有点生硬,大家都喜欢运动效果的交互。

    方法二:
    为了有运动的交互效果,我们可以使用一些js框架的运动效果
    这里我就使用大家常使用的jquery+jquery-easing.1.3.js来实现

    $('#scrollTop a').hover(function(){
            $(this).animate({'84px'}, 2000, 'easeInOutQuad')
        }, 
        function(){
            $(this).animate({'28px'}, 2000, 'easeInOutQuad')
        })

    方法三:
    使用css3的transition给#scrollTop a:hover多添加一条css,如下:

    #scrollTop a:hover {transition:width .2s ease-out;}

    这样是不是比方法二简单方便,当然这个方法是不是没有缺点,只要懂一点前端的就是知道
    这个方法不适合IE10以下的浏览器。不过,也没有关系,这个方法是结合方法一的,所以在
    IE以下的功能能实现只是没有交互的效果,谁叫他们使用IE是吧^_^!

    以上说了那么多无关transition的话,只是为了下面来学习了解它

    transition:支持从一个属性值平稳过渡到另一个属性值

    语法:

    transition: property duration timing-function delay;
    property:规定设置过渡效果的 CSS 属性的名称。
    duration:规定完成过渡效果需要多少秒或毫秒。
    timing-function:规定速度效果的速度曲线。
    delay:定义过渡效果何时开始。

    实例

    把鼠标指针放到 div 元素上,其宽度会从 100px 逐渐变为 300px:

    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title> 
    
    transition </title>
        <style type="text/css">
        div {
            width:100px;
            height:100px;
            background:red;
            transition: width 2s;
            -moz-transition: width 2s; /* Firefox 4 */
            -webkit-transition: width 2s; /* Safari 和 Chrome */
            -o-transition: width 2s; /* Opera */
        }
        div:hover {
            width:300px;
        }
        </style>
    </head>
    <body>
        <div>transition</div>
    </body>
    </html>

    transition还能同时过渡几个属性值如下:

    例1:

    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title> 
    
    transition </title>
        <style type="text/css">
        div {
            width:100px;
            height:100px;
            background-color:red;
            color:#fff;
            transition: width 2s, height 2s, color 2s;
            -moz-transition: width 2s, height 2s, color 2s; /* Firefox 4 */
            -webkit-transition: width 2s, height 2s, color 2s; /* Safari 和 
    
    Chrome */
            -o-transition: width 2s, height 2s, color 2s; /* Opera */
        }
        div:hover {
            width:300px;
            height:300px;
            color:yellow
        }
        </style>
    </head>
    <body>
        <div>transition</div>
    </body>
    </html>
    View Code

    例2:

    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title> 
    
    transition </title>
        <style type="text/css">
        div {positionn:relative;}
        img {
            position:absolute;
            left:0;
            top:70px;
            -webkit-transform:rotate(0deg);
            -webkit-transition:left 1s linear, -webkit-transform 1s linear;
            -moz-transform:rotate(0deg);
            -moz-transition:left 1s linear, -moz-transform 1s linear;
            -o-transform:rotate(0deg);
            -o-transition:left 1s linear, -o-transform 1s linear;
        }
        div:hover img {
            left:30px;
            -webkit-transform:rotate(720deg);
            -moz-transform:rotate(720deg);
            -o-transform:rotate(720deg);
        }
        </style>
    </head>
    <body>
        <div><img 
    
    src="http://im.okhqb.com/images/im_entrance_big.jpg" alt="" /></div>
    </body>
    </html>
    View Code

    怎么样transition(变换)是不是用起来很是方便,不用写一句js就能实现很多的交互效果。

  • 相关阅读:
    在线微博数据可视化
    SAP系统和微信集成的系列教程之六:如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中
    SAP系统和微信集成的系列教程之五:如何将SAP UI5应用嵌入到微信公众号菜单中
    Jerry在2020 SAP全球技术大会的分享:SAP Spartacus技术介绍的文字版
    索引的正确“打开姿势”
    15个问题告诉你如何使用Java泛型
    华为云FusionInsight MRS:千余节点滚动升级业务无中断
    你的开发好帮手:下一代云原生开发工具技术
    云图说|读请求太多怎么办?一键读写分离来帮忙
    FusionInsight MRS:你的大数据“管家”
  • 原文地址:https://www.cnblogs.com/qiheng/p/3551291.html
Copyright © 2020-2023  润新知