[CSS] 学习transform translate tran

2021-03-21  本文已影响0人  iamsharleen

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

transition

参考文档: css-transitions

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

<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>

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

上一篇下一篇

猜你喜欢

热点阅读