css3怎么实现高度从固定到自动的过渡动画?

您好,我是“web秀-提供专业的web前端技术知识”。

我想您要的是这样的效果

这个效果,主要是通过transition事件动画,当然也可以用animation动画

下面我们看看transition、animation怎么区分?

transition需要触发一个事件, 而animation在不需要触发任何事件的情况下也可以显式的随着时间变化来改变元素css的属性值,从而达到一种动画的效果。transition属性是一个简单的动画属性,非常简单非常容易用。可以说它是animation的简化版本,是给普通做简单网页特效用的。

ok,明白了吧

我们用animation实现上面效果看看

animation语法

animation: name duration timing-function delay iteration-count direction fill-mode play-state;

属性值描述

  • animation-name 规定 @keyframes 动画的名称。

  • animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。

  • animation-timing-function 规定动画的速度曲线。默认是 "ease"。linear 动画从头到尾的速度是相同的。ease 默认。动画以低速开始,然后加快,在结束前变慢。ease-in 动画以低速开始。ease-out 动画以低速结束。ease-in-out 动画以低速开始和结束。cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

  • animation-fill-mode 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。forwards 在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。backwards 动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 "normal" 或 "alternate" 时)或 to 关键帧中的值(当 animation-direction 为 "reverse" 或 "alternate-reverse" 时)。both 动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。

  • animation-delay 规定动画何时开始(延时多少s后执行)。默认是 0。

  • animation-iteration-count 规定动画被播放的次数。默认是 1。

  • animation-direction 规定动画是否在下一周期逆向地播放。默认是 "normal"。reverse 动画反向播放。alternate 动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。alternate-reverse 动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。

  • animation-play-state 规定动画是否正在运行或暂停(通常控制动画是否运行或暂停)。默认是 "running"。paused 指定暂停动画running 指定正在运行的动画

注意

animation 所有动画属性的简写属性,除了 animation-play-state 属性。

喜欢我的点击关注哦,为大家提供专业的web前端知识,但不止于前端哦

transition

css3的transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值

transition-property:检索或设置对象中的参与过渡的属性

transition-duration:检索或设置对象过渡的持续时间

transition-delay:检索或设置对象延迟过渡的时间

transition-timing-function:检索或设置对象中过渡的动画类型

简写:

transition:all/具体属性值 运动时间s/ms 延迟时间s/ms 动画类型

transition-timing-function:检索或设置对象中过渡的动画类型

贝塞尔曲线:

属性值:cubic-bezier()贝塞尔曲线网址:http://cubic-bezier.com/逐帧动画:transition-timing-function:steps(动画执行的步数);

CSS3 2D

transform

transform的属性包括:rotate() / skew() / scale() / translate(,) ,分别还有x、y之分,比如:rotatex() 和 rotatey()

1、translate()

将元素向指定的方向移动,类似于position中的relative。

水平移动:向右移动translate(tx,0)和向左移动translate(-tx,0);

垂直移动:向上移动translate(0,-ty)和向下移动translate(0,ty);

对角移动:右下角移动translate(tx,ty)、右上角移动translate(tx,-ty)、左上角移动translate(-tx,-ty)和左下角移动translate(-tx,ty)。

translateX():水平方向移动一个对象。对像只向X轴进行移动,如果值为正值,对像向右移动;如果值为负值,对像向左移动。translateY():纵轴方向移动一个对象。对象只向Y轴进行移动,如果值为正值,对象向下移动;如果值为负值,对像向上移动。

这两个函数和前面介绍的translate()函数不同的是每个方法只接受一个值。

所以

transform:translate(-100px,0)实际上等于transform:translateX(-100px);

transform:translate(0,-100px)实际上等于transform:translateY(-100px)。

2、scale()

让元素根据中心原点对对象进行缩放。默认的值1。因此0.01到0.99之间的任何值,使一个元素缩小;而任何大于或等于1.01的值,让元素显得更大。

缩放scale()函数和translate()函数的语法非常相似,他可以接受一个值,也可以同时接受两个值,如果只有一个值时,其第二个值默认与第一个值相等。

例如,

scale(1,1)元素不会有任何变化,而scale(2,2)让元素沿X轴和Y轴放大两倍。

scaleX():相当于scale(sx,1)。表示元素只在X轴(水平方向)缩放元素,其默认值是1。

scaleY():相当于scale(1,sy)。表示元素只在Y轴(纵横方向)缩放元素,其默认值是1。

3、rotate()

旋转rotate()函数通过指定的角度参数对元素根据对象原点指定一个2D旋转。它主要在二维空间内进行操作,接受一个角度值,用来指定旋转的幅度。如果这个值为正值,元素相对原点中心顺时针旋转;如果这个值为负值,元素相对原点中心逆时针旋转。

rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转

rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转

4、skew()

倾斜skew()函数能够让元素倾斜显示。它可以将一个对象以其中心位置围绕着X轴和Y轴按照一定的角度倾斜。

一个参数时:表示水平方向的倾斜角度;

两个参数时:第一个参数表示水平方向的倾斜角度,第二个参数表示垂直方向的倾斜角度

transform-origin

transform-origin是变形原点,也就是该元素围绕着那个点变形或旋转,该属性只有在设置了transform属性的时候起作用;

因为我们元素默认基点就是其中心位置,换句话说我们没有使用transform-origin改变元素基点位置的情况下,transform进行的rotate,translate,scale,skew等操作都是以元素自己中心位置进行变化的。

2D 转换元素能够改变元素 x 和 y 轴

2022-04-24

2022-04-24