CSS3 3d特效 学习笔记

CSS3 3d特效 学习笔记

慕课网视频教程

CSS3的动画功能

  • transition 从一个属性值平滑地过渡到另一个属性值
  • animation 主要用于实现关键帧动画,产生更加复杂的动画效果

一、transition

1.transition:<过渡属性名称><过渡时间>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style>
        #block{
            width:400px;
            height:400px;
            background-color: #69c;
            margin: 0 auto;

            /*设置背景颜色的渐变*/
            -webkit-transition: background-color 2s;
            transition: background-color 2s;
            /*等价于:
            transition-property:background-color;
            transition-duration:2s;
            */
        }

        #block:hover{
            background-color: indianred;
        }
    </style>

</head>
<body>
    <div id="block">

    </div>
</body>
</html>

2.多个属性的过渡效果

  • translation:<属性名1><过渡时间1>,<属性名2><过渡时间2>
  • translation:<属性名1><过渡时间1>;
    translation:<属性名2><过渡时间2>;

3.translation过渡模式

translation:<属性名称><过渡时间><过渡模式>

  • ease 缓慢开始,缓慢结束 (default)
  • linear 匀速
  • ease-in 缓慢开始
  • ease-out 缓慢结束
  • ease-in-out 缓慢开始,缓慢结束

二、创建简单的3D场景

1.设置3d场景

-webkit-perspective:800px;
-webkit-perspective-origin:50% 50%;//视点的位置

这里写图片描述

2.使用transform属性调整元素

-webkit-transform-style:preserve-3d;

(1)translate

  • translateX(x px)
  • translateY(y px)
  • translateZ(z px)

(2)rotate

  • rotateX(x deg)
  • rotateY(y deg)
  • rotateZ(z deg)

这里写图片描述

三维平移实例

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        #experiment{
            -webkit-perspective: 800px;
            -webkit-perspective-origin: 50% 50%;

            -webkit-transition: -webkit-transform 1s linear;
            -webkit-transform-style:preserve-3d;
        }
        #block{
            width:150px;
            height:150px;
            background-color: #69c;
            margin:170px auto;

        }
        #op{
            margin:0 auto;
            font-size:16px;
            font-weight:bold;
            width:800px;
        }
        #op .range-control{width:721px;}
    </style>

    <script type="text/javascript">
        function translateall(){
            var x = document.getElementById("translatex").value;
            var y = document.getElementById("translatey").value;
            var z = document.getElementById("translatez").value;

            document.getElementById('block').style.webkitTransform = "translateX("+x+"px) translateY("+y+"px) translateZ("+z+"px)";

            document.getElementById('translatex-span').innerText = x;
            document.getElementById('translatey-span').innerText = y;
            document.getElementById('translatez-span').innerText = z;
        }
    </script>
</head>
<body>
<div id="experiment">
    <div id="block">
    </div>
</div>
<div id="op">
    <p>translate x: <span id="translatex-span">0</span> px</p>
    <input type="range" min="-360" max="360" id="translatex" value="0" class="range-control" onchange="translateall()" /><br/>
    <p>translate y: <span id="translatey-span">0</span> px</p>
    <input type="range" min="-360" max="360" id="translatey" value="0" class="range-control" onchange="translateall()" /><br/>
    <p>translate z: <span id="translatez-span">0</span> px</p>
    <input type="range" min="-360" max="360" id="translatez" value="0" class="range-control" onchange="translateall()" /><br/>
</div>
</body>
</html>

3.使用transform-origin调整旋转中心
(1)x轴

  • left
  • center
  • right

(2)y轴

  • top
  • center
  • bottom

(3)z轴
length px

三、页面3d切换实例

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        #my3dspace {
            -webkit-perspective: 800px;
            -webkit-perspective-origin: 50% 50%;
            overflow: hidden;
        }

        #pagegroup {
            width: 400px;
            height: 400px;
            margin: 0 auto;
            -webkit-transform-style: preserve-3d;
            position: relative;
        }

        .page {
            width: 360px;
            height: 360px;
            padding: 20px;
            background-color: black;
            color: white;
            font-weight: bold;
            font-size: 360px;
            line-height: 360px;
            text-align: center;
            position: absolute;
        }

        #page1 {
            -webkit-transform-origin: bottom;
            -webkit-transition: -webkit-transform 1s linear;
        }

        #page2, #page3, #page4, #page5, #page6 {
            -webkit-transform-origin: bottom;
            -webkit-transition: -webkit-transform 1s linear;
            -webkit-transform: rotateX(90deg);
        }

        #op {
            text-align: center;
            margin: 40px auto;
        }
    </style>
</head>
<body>
    <div id="my3dspace">
        <div id="pagegroup">
            <div class="page" id="page1">1</div>
            <div class="page" id="page2">2</div>
            <div class="page" id="page3">3</div>
            <div class="page" id="page4">4</div>
            <div class="page" id="page5">5</div>
            <div class="page" id="page6">6</div>
        </div>
    </div>

    <div id="op">
        <a href="javascript:next();">next</a>
        &nbsp;
        <a href="javascript:prev();">previous</a>
    </div>

    <script type="text/javascript">

        var curIndex = 1;

        function next() {

            if (curIndex === 6)
                return;

            var curPage = document.getElementById("page" + curIndex);
            curPage.style.webkitTransform = "rotateX(-90deg)";

            curIndex++;
            var nextPage = document.getElementById("page" + curIndex);
            nextPage.style.webkitTransform = "rotateX(0deg)";
        }

        function prev() {

            if (curIndex === 1)
                return;

            var curPage = document.getElementById("page" + curIndex);
            curPage.style.webkitTransform = "rotateX(90deg)";

            curIndex--;
            var prevPage = document.getElementById("page" + curIndex);
            prevPage.style.webkitTransform = "rotateX(0deg)";
        }
    </script>
</body>
</html>

效果分析:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值