Code前端首页关于Code前端联系我们

CSS transform,过渡,动画 组织

terry 2年前 (2023-09-27) 阅读数 69 #数据结构与算法

transform

转换〜复杂转换参数的实用指南。 - 除了“原始行”字段之外的所有元素

百分比 相对范围框计算 计算值 指定值,但相对长度值计算为绝对长度 继承
transition-property: width, heitht, color ;
trnasition-duration: 1s, 1.5s, 2s ;
transition-timing-function: ease, linear, ease-in-out ;
transition-delay: 0s, 1s, 0s ;

transition: width 1s ease ,heitht 1.5s linear 1s, color 2s ease-in-out ;
无 转换

坐标系

1.1 在 CSS 中,直角坐标系由三个轴表示(如下):

  • x 轴(水平轴)
  • y 轴 ( p 轴)❙ 每个元件 都有自己的参考编号 ,并且每个轴都相对于自身移动。

    2D变形时,只需要关注x轴和y轴; 3D需要添加z轴

    x轴。正值位于右侧,负值位于左侧。 y 轴上的
    正值
    为向下,负值为向上。
    Z 轴从屏幕中弹出并指向您的眼前。 z 轴上的正值离您较近,负值则离您较远。
    1.2 旋转
    如果元素旋转,轴也会旋转。旋转后变形是另一种用于相对旋转轴计算的坐标系
    CSS 变形功能中使用的另一种坐标系 - 球坐标系

    CSS transform、transition、animation 实操指南整理

    CSS transform、transition、animation 实操指南整理

    常用 ❀l translate()

  • translate3d( )
  • 翻译 scale3d()
  • scaleX()
  • scaleY ()
  • ♽ )
  • 旋转3d()
  • 旋转Y()
  • 旋转Z( )

CSS transform、transition、animation 实操指南整理

rotate3d(x,y,z,deg)

CSS transform、transition、animation 实操指南整理 度) 表示为 3D 旋转 3 d(0,0,1,45deg)
使用rotate3d()。前三个值由 3D 空间中的向量 x、y 和 z 定义。第四个值是角度值,指的是上图在3D空间中的旋转(45°),对应rotation3d(0 ,0,1,45°)。前三个数字设置 x 轴和 y 轴上大小均为 0 的向量的三个分量。 z 轴的大小为 1。因此,该向量位于 z 轴上,指向正方向,即朝向观测值。如果查看向量的原点,会发现元素顺时针旋转。

假设旋转函数是由 rotate3d(-0.95,0.5,1.45deg) 描述的向量。假设一个立方体的边长为 200 像素,则该向量沿 x 轴的大小为 190 像素,指向左侧。 Y 轴尺寸向下 100 像素。尺寸为指向观察者的 z 轴上的 200 像素。该向量从原点 (0,0,0) (-190px,100px,200px) 指向。如下图:
CSS transform、transition、animation 实操指南整理

ps:rotate3d(1,1,0.45°)

CSS transform、transition、animation 实操指南整理
和)()()旋转 4 度 d 例如)

不等价。 3D模式下的变化 当采用元素的形状时,基本上需要赋予元素一定的可视性。视野提供了可以根据需要调整的元素前后深度。可以把理解为镜头的焦距
越大越远,越小越近;近者为大,远者为小;
有3D效果需要配置和使用下图为相同旋转角度下不同观看值得到的结果。
CSS transform、transition、animation 实操指南整理
必须为正数且不能为零。任何其他值都会导致perspective() 函数被忽略。请记住将透视()函数放在视图变换之前。

perspective属性与

  • perspective()函数的区别仅定义了目标元素的视图,例如rotate(Y00px5deg)(80Y0px5deg)。那么只有受此规则影响的元素才能使用集合视图。使用
  • perspective 属性定义的透视适用于目标元素 的所有子元素。

其他

移动原点

  • transform原点

目前看到的变换有一个共同点,都是以元素的绝对中心作为变换原点。
第一个值是水平的,第二个值是垂直的,可选的第三个值是 z 轴上的长度。

CSS transform、transition、animation 实操指南整理

变形样式

  • transform样式

设置元素的子元素是位于 3D 空间中还是位于平面中。 † 过滤器:无

  • 剪辑:自动
  • 剪辑路径:无
  • 遮罩图像:无
  • 遮罩边框源:无
  • 混合 mix

    3D 变换,背面可见性属性允许您看到元素的背面。

    .card {
    position: relative;
    perspective: 800px;
    transform-style: preserve-3d;
    width:200px;
    height:280px;
    transition: all .6s;
    border: 1px solid #000;
    border-radius: 4px;
    }
    
    .card:hover {
    transform: rotateY(180deg);
    }
    img {
    position: absolute;
    width:100%;
    height: 100%;
    transition: all .5s;
    backface-visibility: hidden;
    }
    /*由于我们将两个图像都藏在了背面,所以另一面没有任何东西。 所以接下来需要再把.front-face翻转180度*/
    .back-face {
    transform: rotateY(180deg);
    }
    
    <div class="card">
        <img class="front-face" >
        <img class="back-face" >
    </div>

    注意

    1. 范围框 :计算范围框时 不会计算轮廓和边距♿❙ 可堆叠上下文 :变形小或大,占用的空间元素保持与转换前相同。它适用于所有变形函数。
    2. 表示一个或多个变形函数: 空间分隔。示例:transform:rotate(30deg) skewX(-25deg) scaleY(2);
    3. 变换顺序从第一个最左边开始♺右右:当有多个变形函数时,每个 必须设置正确 以确保它们全部正确。 如果一项功能无效,则整个值都无效。
    4. 变换重叠 :变换 通常不重叠 。如果改变元素的形状,然后想要添加变形,则必须在原始变形的基础上进行修改
    5. 变换尚不能 应用于原始行框 。原始行内框是指大括号、超链接等行内框。这些元素可以与块级父元素一起变换,但不能直接旋转。除非它们的显示模式已经改为display:block、display:inline-block等。
    6. 有3D效果必须配合**透视**❓❓:❓ ❙❝持续时间计时功能延迟

      Transition~属性,触发功能,瞬态。

    transition-property: width, heitht, color ;
    trnasition-duration: 1s, 1.5s, 2s ;
    transition-timing-function: ease, linear, ease-in-out ;
    transition-delay: 0s, 1s, 0s ;
    
    transition: width 1s ease ,heitht 1.5s linear 1s, color 2s ease-in-out ;
    valueDescription
    transition-property指定定义过渡效果的 CSS 属性的名称。
    transition-duration指定完成过渡效果需要多少秒或毫秒。
    transition-timing-function定义力度效果的力度曲线。
    transition-delay 决定过渡效果何时开始。

    transition-property:none|all|_property_

    指定定义过渡效果的 CSS 属性的名称。

    描述
    没有属性获得过渡效果。
    所有所有属性都会获得过渡效果。
    property 指定应用过渡效果的 CSS 属性名称的逗号分隔列表。

    支持转场动画功能

    transition-duration:_time_

    指定执行转场效果需要多少秒或毫秒。

    描述
    时间 定义执行过渡效果所需的时间(以秒或毫秒为单位)。
    默认值为0,表示没有效果。

    transition-timing-function

    定义速度效果的速度曲线。

    描述
    线性 指定以相同速度开始和结束的过渡效果(与cubic-bezier(0,0,1,1) 相同)。
    easy 定义了一种缓慢开始、变快然后缓慢结束的过渡效果 (cubic-bezier(0.25,0.1,0.25,1))。
    ease-in指定缓慢开始的过渡效果(与cubic-bezier(0.42,0,1,1)相同)。
    ease-out指定缓慢结束的过渡效果(与cubic-bezier(0,0,0.58,1)相同)。
    ease-in-out指定以慢速开始和结束的过渡效果(与cubic-bezier(0.42,0,0.58,1)相同)。
    cubic-bezier(_n_,_n_,_n_,_n_) 在三次贝塞尔函数中指定您自己的值。可能的值介于 0 和 1 之间。

    transition-delay

    确定过渡效果何时开始。

    描述
    时间 指定转场效果开始之前等待的时间(以秒或毫秒为单位)。

    请注意,

    1. 需要触发事件,因此在加载网页时无法自动发生。
    2. 是一次性事件,除非一遍又一遍地开始,否则无法重复。
    3. 只能指定开始状态和结束状态,不能指定中间点。换句话说,该状态 只有两个状态。
    4. 一条转换规则只能指定对一个属性的更改,不能包含多个属性。动画

      动画 ~ 关键帧,互易

        <style>
          .box {
            height: 100px;
            width: 100px;
            border: 15px solid black;
            animation: changebox 1s ease-in-out 1s infinite alternate running forwards;
          }
      
          .box:hover {
            animation-play-state: paused;
          }
      
          @keyframes changebox {
            10% {
              background: red;
            }
            50% {
              width: 80px;
            }
            70% {
              border: 15px solid yellow;
            }
            100% {
              width: 180px;
              height: 180px;
            }
          }
        </style>
      
      <div class="box"></div>
      
      描述
      animation-name 指定要绑定到选择器的关键帧的名称。 。
      animation-duration指定动画完成所需的时间,以秒或毫秒为单位。
      动画计时功能定义动画的速度曲线。
      animation-delay 指定动画开始之前的延迟。
      animation-itration-count指定动画应重复的次数。
      动画方向 确定动画是否反向交替播放。

      animation-name:_keyframe__|none;

      描述
      keyframe-name指定绑定关键帧的名称。
      none 设置无动画效果(可用于跳过级联动画)。

      animation-duration:time

      描述
      时间定义完成动画所需的时间。默认值为0,表示没有动画增强。

      animation-timing-function:_value_

      animation-timing-function 使用称为三次贝塞尔函数的数学函数来生成速度曲线。您可以在此函数中使用自己的值或预定义的值:

      描述
      线性动画速度从开始到结束都是相同的。
      简单默认。动画以慢速开始,然后加速并减慢,最后结束。
      easy动画以慢速开始。
      ease-out动画以慢速结束。
      轻松进出动画以慢速开始和结束。
      cubic-bezier(_n_,_n_,_n_,_n_)其在三次贝塞尔函数中的自身值。可能的值为 0 到 1 之间的数值。 ?指定等待动画开始的时间(以秒或毫秒为单位)。默认值为 0。

      animation-iteration-count: _n_|infinite;

      描述
      n A 的数值应重复。
      无限 要求动画应无限重复。

      动画方向:正常|替代;

      描述
      正常默认值。动画应该可以正常播放。
      选项动画反向交替播放。

      参考

      1. https://juejin.cn/post/6844903874579578887#heading-17
      2. https://jelly.jd.com/article
      3. https://www.zhangxinxu. fi /wordpress/2012/09/css3-3d-transform-perspective-animate-transition/
      4. https://www.w3school.com.cn/cssref/pr_transition.asp

      作者群:搞笑的人

  • 版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    热门