美文网首页
14、2D和3D效果

14、2D和3D效果

作者: calvinbj | 来源:发表于2019-03-04 11:46 被阅读0次

第一节 2D效果

1、CSS3过渡
2、2D变形

要实现这一点,必须规定两项内容:
1、规定您希望把效果添加到哪个CSS属性上
2、规定效果的时长

比方说,下面这个代码的动画效果,规定了效果的时长为2秒。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; transition: all 2s; }
        .box:hover {width: 200px; height: 200px; background: #0f0;}
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; transition-property: width; transition-duration: 2s;}
        .box:hover {width: 200px; height: 200px; background: #0f0;}
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>
transition-property: width,height,background; transition-duration: 2s;

上面这一句代码的效果等同于下面这一句:

transition: all 2s;



cubic-bezier(n,n,n,n),贝塞尔曲线取值,可以利用以下网站去参考:
http://cubic-bezier.com/

延迟开始过渡效果。

总体上,transition的几个属性值,可以像以下的代码这样子写,来控制2D效果:

<style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; transition: all 2s linear 1s;}
        .box:hover {width: 200px; height: 200px; background: #0f0;}
</style>



如下示例代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; margin: 100px auto; transform: rotate(30deg);}
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>

不加transform前的位置和加了transform:translate()之后,位置上出现移动。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; margin: 100px auto; transform: translate(100px,100px);}
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>
特别注意:元素的缩放中心点是元素的中心位置。

简单例子如下:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; margin: 100px auto; transform: scale(2,4);}
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; margin: 100px auto; transform: skew(30deg,40deg);}
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; margin: 100px auto; transform: rotate(-30deg);}
        .box2{width: 100px; height: 100px; background: #0f0; margin: 200px auto; transform-origin: left top; transform: rotate(-30deg); }
    </style>
</head>
<body>
<div class="box"></div>
<div class="box2"></div>
</body>
</html>

上面的box2是采用transform-origin:left top,对对应的正方形进行元素的中心点设置,之后进行变换的时候,依据这个中心点,进行相应的旋转等一系列变换。

下面这一个是对上面两种变换的进一步的优化,形成2D动画。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        .box{width: 100px; height: 100px; background: #f00; margin: 100px auto; transition: all 1s;}
        .box:hover{transform: rotate(-30deg);}
        .box2{width: 100px; height: 100px; background: #0f0; margin: 200px auto; transform-origin: left top; transition: all 1s;}
        .box2:hover{transform: rotate(-30deg); }
    </style>
</head>
<body>
<div class="box"></div>
<div class="box2"></div>
</body>
</html>
下面是对整个2D效果的综合案例
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        div {width: 100px; height: 100px; border: 1px #f00 solid; margin: 100px auto; transition: all 2s;}
        div:nth-child(1):hover {transform:translateX(200px); }
        div:nth-child(2):hover {transform:rotate(90deg); }
        div:nth-child(3):hover {transform:scale(2,0.5); }
        div:nth-child(4):hover {transform:skew(30deg,30deg); }
        div:nth-child(5):hover {transform:translateX(200px) rotate(90deg) scale(2,0.5) skew(30deg,30deg); }
        div:nth-child(6):hover {transform:rotate(90deg) scale(2,0.5) skew(30deg,30deg) translateX(200px) ; }
        div:nth-child(7):hover {transform: scale(2,0.5) rotate(90deg) skew(30deg,30deg) translateX(200px) ; }
    </style>
</head>
<body>
<div>2D平移</div>
<div>2D旋转</div>
<div>2D缩放</div>
<div>2D扭曲</div>
<div>2D综合</div>
<div>2D综合2</div>
<div>2D综合3</div>
</body>
</html>

相关文章

  • OpenGL ES基础概念

    使用这个简洁、高效的OpenGL子集创建3D和2D图形效果。 OpenGL ES为硬件加速的2D和3D图形渲染提供...

  • 14、2D和3D效果

    第一节 2D效果 1、CSS3过渡2、2D变形 要实现这一点,必须规定两项内容:1、规定您希望把效果添加到哪个CS...

  • Opengl 和 Qml 混合编程

    Opengl 和 Qml 混合编程 Opengl 描绘3D效果 Qml描绘2D效果 效果 源代码 加强版效果 1....

  • C4D 三维渲平面动画效果

    3D软件渲染2D效果。在一些表现空间的镜头中用3D技术要比2D更容易达到效果。最开始就是想做个金币翻转的动画才学C...

  • CSS3入门之2D、3D、过度、动画

    2D 3D 过度 动画 2D效果 主要是平面的一些常规操作 transform属性 移动 transform: ...

  • 2D与3D

    前言 说到2d与3d的转换,到底什么是2d,什么又是3d,看下图: 所谓的2d和3d就是我们理解的二维空间和三维空...

  • Canvas绘制地板

    导语 随着数据中心可视化系统的要求越来越高,2D、3D效果都要求几乎逼真;3D地板,相较于2D,实为更易,只需引擎...

  • Unity 2D和3D混合效果

    参考 网上找到的博客 资源 本篇内容 2D和3D混合效果 Unity软件版本 Unity2017.4.15 N...

  • 04-ARKit初体验之2D效果

    示例效果是点击屏幕,在中心点生成一个2D AR图像 2D效果的AR与3D效果有一点的区别#### 1.使用步骤与3...

  • [译文]信息可视化的感知心理学-3-3D、点阵图、树状图

    译者总结 1. 视觉效果很炫的图表未必好用 2. 慎用3D效果:柱状图的3D展示比2D让人花费更多时间理解;3D效...

网友评论

      本文标题:14、2D和3D效果

      本文链接:https://www.haomeiwen.com/subject/fpymuqtx.html