css3动画——正方体旋转

css3动画——正方体旋转

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动画</title>
    <style>
        * {
            margin: 0;padding: 0;
          
        }

        body {
            transform-style: preserve-3d;
        }

        .contanier {
            margin: 100px auto;
            width: 300px;
            height: 300px;
            position: relative;
            /* transform--style属性指定嵌套元素是怎样在三维空间中呈现。
            语法:transform-style:flat|preserve-3d;
            flat	表示所有子元素在2D平面呈现。
            preserve-3d	表示所有子元素在3D空间中呈现。 */
            transform-style: preserve-3d;
            /* 设置旋转元素的基点位置:
             默认值:50% 50% 0 */
            transform-origin: center center;
            /* 语法:animation: name duration timing-function delay iteration-count direction fill-mode play-state;
animation-name	指定要绑定到选择器的关键帧的名称
animation-duration	 动画指定需要多少秒或毫秒完成
animation-timing-function	设置动画将如何完成一个周期
animation-delay	设置动画在启动前的延迟间隔。
animation-iteration-count	定义动画的播放次数。infinite 无限的
animation-direction	指定是否应该轮流反向播放动画。 alternate 先执行一遍动画,然后再反向执行一遍动画:
animation-fill-mode	规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
animation-play-state	指定动画是否正在运行或已暂停。 */

            animation: rotate 20s linear infinite alternate;
            /* 语法:perspective: number|none;
            number	元素距离视图的距离,以像素计。
            none	默认值。与 0 相同。不设置透视。
            设置元素被查看位置的视图
            当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
            注释:perspective 属性只影响 3D 转换元素。 */
            /* perspective: 120px; */
            /* 语法:perspective-origin: x-axis y-axis;
            x-axis	定义该视图在 x 轴上的位置。默认值:50%。
            y-axis	定义该视图在 y 轴上的位置。默认值:50%。
            注释:该属性必须与 perspective 属性一同使用,而且只影响 3D 转换元素。
            当为元素定义 perspective-origin 属性时,其子元素会获得透视效果,而不是元素本身。
            设置 3D 元素的基点位置: */
             perspective-origin: left top; 
        }

        .item {
            width: 300px;
            height: 300px;
            position: absolute;
            text-align: center;
/*line-height 使用百分比设置行高,不允许负值
normal	默认。设置合理的行间距。
number	设置数字,此数字会与当前的字体尺寸相乘来设置行间距。
length	设置固定的行间距。
%	基于当前字体尺寸的百分比行间距。
inherit	规定应该从父元素继承 line-height 属性的值。 */
            line-height: 300px;
        }
        .item:nth-child(1){
            background-color: rgba(235, 35, 195, 0.877);
            transform:rotateY(180deg) translateZ(150px);
        }
        .item:nth-child(2){
            background-color: rgba(221, 29, 54, 0.712);
            transform:rotateX(-90deg) translateZ(150px);
        }
        .item:nth-child(3){
            background-color: rgba(24, 218, 69, 0.877);
            transform:rotateY(90deg) translateZ(150px);
        }
        .item:nth-child(4){
            background-color: rgba(24, 199, 196, 0.5);
            transform:rotateX(90deg) translateZ(150px);
        }
        .item:nth-child(5){
            background-color: rgba(16, 20, 226, 0.938);
            transform:rotateY(-90deg) translateZ(150px);
        }
        .item:nth-child(6){
            background-color: rgba(257,135,22,0.5);
            transform:translateZ(150px);
        }
         /* 语法:@keyframes animationname {keyframes-selector {css-styles;}}
        animationname	必需的。定义animation的名称。
        keyframes-selector	 必需的。动画持续时间的百分比。
        css-styles	 必需的。一个或多个合法的CSS样式属性

        指定的变化时发生时使用%,或关键字"from"和"to",这是和0%到100%相同。
        注意: @keyframes 规则 不兼容 IE 9 以及更早版本的浏览器. */
        /* @keyframes rotate{
            0%{transform:rotateY(0deg) rotateX(0deg)}
            50%{transform:rotateY(180deg) rotateX(-10deg)}
            100%{transform:rotateY(360deg) rotateX(0deg)}
        } */
        @keyframes rotate{
            0%{
                transform: rotateY(0deg) rotateX(0deg) rotateZ(0deg);
            }
            100%{
                transform:  rotateX(360deg) rotateZ(360deg);
            }
        }
    </style>
</head>

<body>
    <div class="contanier">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
    </div>
</body>

</html>

运行结果如图:
在这里插入图片描述


版权声明:本文为m0_48845795原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。