CSS3 provides transition, transform and animation to achieve some style transformations on the page. This article will briefly introduce these properties, and then compare the performance of CSS3 animation and JS animation. better.
Transition, transform and animation introduction
transition
transition allows CSS attribute values to transition smoothly within a certain time interval. The syntax is as follows:
transition : transition-property transition-duration transition-timing-function transition-delay [, ...]
Copy after login
transition-property
is used to specify the property to execute the transition effect, which can be none, all or a specific property. transition-duration
The duration of animation execution, in s (seconds) or ms (milliseconds). transition-timing-function
Transformation rate effect, optional values are ease|linear|ease-in|ease-out|ease-in-out|cubic-bezier (custom time curve). transition-delay
is used to specify the time when the animation starts to execute. The value is the same as transition-duration, but it can be a negative number. DEMO: http://codepen.io/CodingMonkeyzh/pen/ZGBRVe
transform
transform is divided into 2D and 3D. Here we only introduce the more commonly used 2D transform. , which mainly includes the following transformations: rotate rotate, distort skew, scale and translate, and matrix deformation matrix. The syntax is as follows:
transform: rotate | scale | skew | translate |matrix;
Copy after login
- rotate rotation
The unit of rotate is deg degree, positive number means clockwise rotation, negative number means counterclockwise rotation.
DEMO: http://codepen.io/CodingMonkeyzh/pen/XbNYOa - scale scaling
The value range of scale is 0~n. When it is less than 1, it means reducing, otherwise it means enlarging. For example, scale(0.5, 2) means that the horizontal direction is reduced by 1 times and the vertical direction is enlarged by 1 times. In addition, one direction can also be set through scaleX or scaleY.
DEMO: http://codepen.io/CodingMonkeyzh/pen/doOKrg - skew distortion
The unit of skew is the same as rotate, which is deg degrees. For example, skew(30deg, 10deg) means that the horizontal direction is tilted 30 degrees and the vertical direction is tilted 10 degrees.
DEMO: http://codepen.io/CodingMonkeyzh/pen/KpNeYg - translate Offset
Offset also includes horizontal offset and vertical offset. translate(x,y) moves horizontally and vertically at the same time (that is, the X-axis and Y-axis move simultaneously); translateX(x) only moves horizontally (X-axis moves); translateY(Y) only moves vertically (Y-axis move).
DEMO: http://codepen.io/CodingMonkeyzh/pen/waoXbB
animation
Animation in CSS3 is controlled through a thing called Keyframes. , its name starts with "@keyframes", followed by the "name of the animation" plus a pair of curly brackets "{}". In the brackets are some style rules for different time periods, a bit like how we write CSS styles. Same. For a style rule in "@keyframes" that is composed of multiple percentages, such as between "0%" and "100%", the syntax is as follows:
@keyframes IDENT { from { Properties: Properties value; } Percentage { Properties: Properties value; } to { Properties: Properties value; }}或者全部写成百分比的形式: @keyframes IDENT { 0% { Properties: Properties value; } Percentage { Properties: Properties value; } 100% { Properties: Properties value; }}
Copy after login
animation has its own relationship with transition. Corresponding attributes, then there are mainly the following in animation: animation-name; animation-duration; animation-timing-function; animation-delay; animation-iteration-count; animation-direction; animation-play-state. Some of the attributes are explained below:
- animation-name keyframe name
is used to define the name of an animation, which is the name of the animation created by the previous keyframes. The default value is none, when the value is none, there will be no animation effect. If we want to attach several animations to an element at the same time, just separate them with commas. - animation-iteration-count animation cycle count
The default is 1. If you want to loop infinitely, just set it to infinite. - animation-direction animation playback direction
It has only two values. The default value is normal. If set to normal, each cycle of the animation will play forward; the other value is alternate. Its function is to play the animation forward in the even-numbered times and in the reverse direction in the odd-numbered times. - animation-play-state play state
It mainly has two values, running and paused, of which running is the default value. You can stop the currently playing animation through paused, and you can also replay the paused animation through running. This attribute is not commonly used.
DEMO 1: http://codepen.io/CodingMonkeyzh/pen/mJOKZY
DEMO 2: http://codepen.io/CodingMonkeyzh/pen/EjNpaE