最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • css 独立变换属性

    正文概述 掘金(terrence386)   2020-12-24   526

    介绍

    css 的 变换属性transform和动画属性anmition一起出现在web技术上,用来在界面上添加动画效果。十多年来,这些技术一直是web平台和前端开发人员的主要工具。实际上,css的transform属性早在08年7月iPhoneOS2.0 发布的时候就在Safari中支持了。

    有可能诞生的新属性

    Safari技术预览版Chrome的金丝雀版本中已经默认开启了 css 变换的独立属性。动画及变换属性的使用似乎变得更加简单。

    div.transform-property {
        transform: translate(100px, 100px) rotate(180deg) scale(2);
    }
    
    div.individual-properties {
        translate: 100px 100px;
        rotate: 180deg;
        scale: 2;
    }
    

    为什么使用独立变换属性

    但是为什么要在transform属性上使用这些新属性呢?一个原因是方便,因为编写scale:2而不是transform:scale(2)更简单,因为我们只想缩放元素。

    但这里最吸引人的地方是你现在可以自由地组合那些你认为合适的各种变换属性。例如,您可以轻松地编写一个CSS类来使用scale属性翻转元素,而不必担心会覆盖其他与转换相关的属性:

    .scaled{
    	scale: -1;
    }
    

    即使rotatetransform属性对元素应用了旋转,scaled的class也能正常工作。

    在设置变换动画时,此功能也很方便。假设您正在编写一个动画,该动画在元素的整个持续时间内按比例放大,但同时对该动画的后半部分应用旋转。使用transform,property,必须预先计算旋转开始和结束时比例的中间值:

    @keyframes scale-and-rotate {
        0%   { transform: scale(1) }
        50%  { transform: scale(1.5) rotate(0deg) }
        100% { transform: scale(2) rotate(180deg) }
    }
    

    虽然这看起来并不是什么大问题,但对这些关键帧进行任何进一步的更改都需要重新计算这些值。现在,考虑使用独立变换属性编写的相同动画

    @keyframes scale-and-rotate {
        0%   { scale: 0 }
        50%  { rotate: 0deg } 
        100% { scale: 1; rotate: 180deg; }
    }
    

    我们可以根据需要轻松更改关键帧和添加其他特性,而让浏览器自行决定如何正确应用这些变换特性

    但这并不是全部;还有一种情况是,您希望单独的动画同时应用于元素。您可以将这一组关键帧拆分为两组不同的关键帧,并调整计时:

    .animated {
        /* Apply the scale keyframes for 1s and the rotate
           keyframes for 500ms with a 500ms delay. */
        animation: scale 1s, rotate 500ms 500ms;
    }
    
    @keyframes scale {
        from { scale: 0 }
        to   { scale: 1 }
    }
    
    @keyframes rotate {
        from { rotate: 0deg }
        to   { rotate: 180deg }
    }
    

    应用于变换的关键帧不仅更易于编写,而且可以通过组合多个变换动画来更好地分离计时和关键帧。如果你是一个经验丰富的CSS动画开发人员,当你考虑到计时函数时,你就会知道这有多重要。

    此外,为新的单个变换属性设置动画将保留与设置变换属性具有相同的出色性能,因为这些属性支持硬件加速。

    transform 和 新的独立属性的关系

    首先,请记住transform属性支持不表示为单个转换属性的转换函数。skew()、skewX()和skewY()函数没有等效的CSS属性,也没有与matrix()函数等效的属性。

    但是当您指定一些单独的变换属性以及变换属性时会发生什么呢?CSS Transform Level 2规范解释了如何组合各个转换属性以及转换原点和转换属性,以形成当前的转换矩阵。总而言之,首先应用独立变换属性(translate、rotate和scale),然后应用变换属性transform中的函数。

    这意味着有一个清晰的模型可以将这些单独的转换属性和转换属性一起使用,以增强您在Web平台上转换内容的能力。

    在开始使用这些新属性之前,您必须知道如何检测它们的可用性并使用transform作为备用。@supports规则将允许您执行您需要的操作:

    @supports (translate: 0) {
        /* Individual transform properties are supported */
        div {
            translate: 100px 100px;
        }
    }
    
    @supports not (translate: 0) {
        /* Individual transform properties are NOT supported */
        div {
            transform: translate(100px, 100px);
        }
    }
    

    小智慧

    Safari技术预览版 和 Chrome的金丝雀版本 都是测试最新web技术的版本

    ps: 译自webkit blog 侵立删


    起源地下载网 » css 独立变换属性

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元