zoukankan      html  css  js  c++  java
  • 关于CSS3属性transition的触发

    关于怎么触发transition的效果,前面有篇文章说过一次,《关于transition和animation》,而且在实际的项目生产中,也是一直这么使用的,因为明明知道直接添加class是无法触发transition效果的,那何必再做这些无用功呢?而且很确定的是,之前也做过各种测试的。

    然而,事实真的这样吗?

    今天突然想到是不是应该再看看transition这个属性。

    其中的属性不做一一介绍,我自己也没有那么透彻的理解每一个属性值的每一小点,我们这里依然聚焦于怎么触发transition这个变形的效果。

    <div class="btn-transiton">
        <a href="javascript:;">触发transition-show</a>
        <a href="javascript:;">触发transition-hide</a>
    </div>
    <div class="transition"></div>
    

      比较简单的html结构,看看css

    .btn-transiton {
      line-height: 2;
      padding: 0.5rem;
    }
    
    .transition {
       2rem;
      height: 2rem;
      background: #ccc;
      opacity: 1;
      transition: height 1s ease-in;
    }
    

      刚开始的时候,肯定是通过js设置css属性,让其达到触发transition动画效果的目的。

     var height = $(".transition").height();
    $(".btn-transiton").on("click", "a:first-child", function () {
        $(".transition").css("height", 0);
    }).on("click", "a:last-child", function () {
        $(".transition").css("height", height);
    });
    

      看到这样的代码,当然就会想到利用height()函数替代:

    var height = $(".transition").height()
    $(".btn-transiton").on("click", "a:first-child", function () {
        $(".transition").height(0);
    }).on("click", "a:last-child", function () {
        $(".transition").height(height);
    });
    

      当走到这一步的时候,如果不试验一下使用添加删除class触发这个transition效果,能死心吗?

    为css添加:

    .transition.active-height {
      height: 0;
    }
    

     js改造:

    var height = $(".transition").height()
    $(".btn-transiton").on("click", "a:first-child", function () {
        $(".transition").addClass("active-height");
    }).on("click", "a:last-child", function () {
        $(".transition").removeClass("active-height");
    });
    

      此时,令人意想不到的事情发生了,添加删除class,居然也可以触发transition的动画效果了,究竟什么时候可以的?或者哪一版本浏览器开始支持这一特性的?并不仅仅是chrome浏览器支持,firefox,safari也都可以支持。

    当前电脑上安装的chrome版本为:

    firefox版本为:

    Safari版本:

    为了避免出现仅仅是height属性才有这种情况发生,使用opacity、transform属性,也能够触发相同效果,甚至同时触发width、height、all都能够实现。

    这样就可以减少很多,不必要的js写css的过程!

     

  • 相关阅读:
    又是一个递归的题
    全文检索引擎记录
    处理“System.Web.HttpException: 超过了最大请求长度”
    完整国内城市js级联选择
    多服务器共享session的解决方案之一
    递归求n的阶乘
    面试遇到了 <计算从1到N中1的出现次数>结果悲剧了.
    DropDownList绑定Xml数据的实现
    简单图片上传示例
    C#默认访问修饰符
  • 原文地址:https://www.cnblogs.com/zhuhuoxingguang/p/7472215.html
Copyright © 2011-2022 走看看