美文网首页
[CSS] 学习transform translate tran

[CSS] 学习transform translate tran

作者: iamsharleen | 来源:发表于2021-03-21 00:43 被阅读0次
  • transition
  • transform
  • translate

这个三个CSS属性长得也太像了吧,刚接触的时候傻傻分不清,去翻了一下MDN和W3的文档,简单总结了一下它们是用来做什么的。

transition

参考文档: css-transitions

transition是一个元素在不同状态之间切换的时候定义不同的过渡效果,是以下几个属性的简写。

  • transition-property: none或all或CSS属性名(一个或多个),默认值是all
  • transition-duration: 表示transition效果需要指定多少秒或毫秒才能完成,默认值是0s
  • transition-timing-function: 过渡函数,指定transition效果的转速曲线,默认值是 ease
  • transition-delay: 延迟时间,定义transition效果开始的时候,默认值是0s

<single-transition>#
where
<single-transition> = [ none | <single-transition-property> ] || <time> || <easing-function> || <time>
where
<single-transition-property> = all | <custom-ident>
<easing-function> = linear | <cubic-bezier-timing-function> | <step-timing-function>
where
<cubic-bezier-timing-function> = ease | ease-in | ease-out | ease-in-out | cubic-bezier([0,1]>, <number>, [0,1]>, <number>)
<step-timing-function> = step-start | step-end | steps(<integer>[, <step-position>]?)
where
<step-position> = jump-start | jump-end | jump-none | jump-both | start | end

例子:

// transition.html
// div的背景色为红色,:hover鼠标放上去后变成绿色
// transition实现渐变效果
<style>
  div {
    width: 100px;
    height: 100px;
    background-color: red;
    transition: background-color 3s;
  }
  div:hover {
    background-color: green;
  }
</style>
<div></div>

如果同时要改变颜色和大小

<style>
  div {
    width: 100px;
    height: 100px;
    background-color: lightcoral;
    transition: background-color, width 4s;
  }

  div:hover {
    width: 300px;
    height: 200px;
    background-color: green;
  }
</style>
<div></div>

"transition: background-color, width 4s" 这里指定是颜色和宽度两个属性,那么高度的变化就不会有动画效果了,如果要包括宽度,可能用"transition: 4s" 或者“transition: background-color, width, height 4s”,因为<transition-property>默认是all。以下两种写法效果一样:

div {
    transition-property: background-color, width, height;
    transition-duration: 1s, 2s, 3s;
    transition-timing-function: ease;
    transition-delay: 0s;
}
//等同于
div {
 transition: background-color, width, height 1s, 2s, 3s
}

使用例子

// 把div沿xy轴向右向下移动
div{
  transform: translate(120px, 50%);
}

transform

参考文档: css-transforms

通过修改CSS视觉格式化模型的坐标空间来旋转,缩放,倾斜或平移元素(只能转换由盒模型定位的元素)。

transform的属性可以是none或一个或多个变换函数<transform-function>

  • none: 不使用任何变换。
  • <transform-function>: 一个或多个变换函数。变换函数按从左到右的顺序相乘,这意味着复合变换按从右到左的顺序有效地应用。以下是一些变换函数:
    • matrix()
    • translate() | translateX() | translateY()
    • scale() | scaleX() | scaleY()
    • rotate()
    • perspective()
    • skew()
    • ...

translate

translate是transform的一个属性,可独立使用。参考 css-transform/individual-transfroms

Value: none | <length-percentage> [<length-percentage><length>?]?

translate可以接受1-3个值,只有一个或两个值的时候,元素沿着XY轴移动(只有一个值时第二个值默认为0)。三个值的时候,元素沿着XYZ轴作3D变换。

例子

// 把div向右向下移动
// 结合transition可以看到移动效果
<style>
  div {
    height: 150px;
    width: 150px;
    background-color: lightgreen;
    transition: transform 1s;
  }

  div:hover {
    background-color: lightgreen;
    transform: translate(120px, 50%);
  }
</style>

<div></div>

为了更好地了解这几个属性,以下例子是在MDN的一个例子的基础上稍作修改:

[CSS]从立方体学习CSS属性 - transform

相关文章

网友评论

      本文标题:[CSS] 学习transform translate tran

      本文链接:https://www.haomeiwen.com/subject/zpngcltx.html