CSS3 Tranform 3D 的应用

CSS3 Tranform 3D 的应用

一、perspective 属性

1. 作用:

设置元素被查看位置的视图,类似于眼睛到屏幕的距离,一般跟 perspective-origin 共同作用在一个父元素上

  • 属性值 = 屏幕分辩率 * 屏幕和我们眼睛的距离
  • 当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身
  • perspective 属性只影响 3D 转换元素

2. 作用范围

  • 舞台效果: 作用在 transform 属性元素的父元素上,里面的元素都会受到改属性的影响,而且显示的效果跟子元素在父元素的位置有关系。

perspective: 200px

  • 单个元素:和 transform 属性 共同作用在同一元素中:

transform: perspective(500px) rotateY(45deg);

二、transform 属性

1. 属性:

  • translateZ: 元素向着它朝的方向(也就是其经过rotate之后) “走出去” 的距离
  • rotateX( xx deg)
  • rotateY( xx deg)
  • rotateZ( xx deg)
  • ...

三、perspective-origin 属性

1. 作用

设置 3D 元素的基点位置(也就是我们眼睛看的位置),默认就是所看舞台或元素的中心

perspective-origin: 25% 75%;

四、transform-style

1. 作用

利用该属性可以使被转换的子元素(不是后代)保留其 3D 转换:

transform-style: preserve-3d / flat

五、backface-visibility

1. 作用

该属性定义当元素不面向屏幕时(前面有3d元素挡住时)是否可见,可以想象各个面连成一个实体的形状,后面的面会被前面的面挡住看不见。

backface-visibility : hidden / visible;
  • 为每个面设置 backface-visibility: visible,默认值就是 visible

  • 为每个面设置 backface-visibility: hidden

?

六、例子

<body>
    <div class="center showbf">
        <div class="cube">
        <div class="face front">1</div>
        <div class="face back">2</div>
        <div class="face right">3</div>
        <div class="face left">4</div>
        <div class="face top">5</div>
        <div class="face bottom">6</div>
        </div>
    <div>
</body>
.hidebf div {
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}
.showbf div {
    backface-visibility: visible;
    -webkit-backface-visibility: visible;
}

.center{
    margin: auto;
    margin-top: 100px;
    width: 80%;
    height: 300px;
    border: 1px solid;
    perspective: 200px;          /* prespective 和 perspective-origin 一般一起在外层元素上使用 */
    perspective-origin: 50% 5%;  /* **** */
}

.cube {
    width: 100px;
    height: 100px;
    margin: auto;
    margin-top: 100px;
    transform-style: preserve-3d;   /* 让多个子元素之间的 3D 关系像我们想象一样呈现 */
    transition: 1s ease;
    transform: rotateY(0deg);  /* 改变角度看 */
}
.face {
    display: block;
    position: absolute;
    width: 100px;
    height: 100px;
    border: none;
    line-height: 100px;
    font-family: sans-serif;
    font-size: 60px;
    color: white;
    text-align: center;
}

/* Define each face based on direction */
.front {
    background: rgba(0, 0, 0, 0.3);
    transform: translateZ(80px);
}
.back {
    background: rgba(0, 255, 0, 1);
    color: black;
    transform: rotateY(180deg) translateZ(80px);
}
.right {
    background: rgba(196, 0, 0, 0.7);
    transform: rotateY(90deg) translateZ(80px);
}
.left {
    background: rgba(0, 0, 196, 0.7);
    transform: rotateY(-90deg) translateZ(80px);
}
.top {
    background: rgba(196, 196, 0, 0.7);
    transform: rotateX(90deg) translateZ(80px);
}
.bottom {
    background: rgba(196, 0, 196, 0.7);
    transform: rotateX(-90deg) translateZ(80px);
}

上面如果把 div class="cube" 的元素旋转 rotateY(30deg) 其效果如下:

但是如果把 prespective 从 cube 的父元素移到 cube 上,其旋转效果如下:

参考:

好吧,CSS3 3D transform变换,不过如此!



注意

转载、引用,但请标明作者和原文地址

原文地址:https://www.cnblogs.com/CccZss/p/8511469.html

时间: 2024-11-08 21:29:28

CSS3 Tranform 3D 的应用的相关文章

css3实现3D动画轮播图

这个感觉有点水,只是一个很简单的css3的3D动画,不过对于不会的人来说,应该还是蛮能唬人的吧,哈. 原理很简单,老规矩,都在注释里面,可以直接复制走代码,粘贴 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { padding: 0; marg

CSS3 《3D骰子 压大小》

游戏在线预览地址:http://dtdxrk.github.io/game/3d-dice/index.html js判断一个随机数大小的游戏. 本来想用canvas做的,平面的生产一个点数,感觉没啥意思. 结合CSS3来吧,正好温习一下css3的3d属性. CSS具体实现过程[CSS3练习]3D盒子制作

基于CSS3的3D旋转效果

自从有了html5和css3,好多以前只能想想的华丽效果都可以上手实现了.3D 转换(个人认为3D变换更贴切^)就是其中之一.关于3D转换,可以阅读CSS3 3D transform变换,不过如此,文中对3D转换进行了形象.生动.详细的阐述.在这里,只和大家讨论怎么利用3D转换来实现立体及其旋转效果,例如: 好吧,废话不多说,上代码! 1.页面代码 1 <div class="translate3D_test"> 2 <ul class="cube"

CSS3的3D转换效果详解介绍

CSS3的3D转换效果详解介绍:本章介绍一下CSS3的3D转换效果,此效果的实现依靠的是transform属性,3D转换只是此属性的部分应用,更多相关内容可以参阅CSS3的transform属性总略介绍一章节.掌握3D转换效果,可以从三个方法作为突破口,分别是rotateX, rotateY, rotateZ,在2D变换过程中rotate()函数的应用,它表示旋转的意思,由于是2D变换,所以它只是在一个平面进行旋转,所以无需细分,具体可以参阅CSS3的2D转换效果详细介绍一章节. 下面分别介绍一

CSS3的3D转换translate3d(x,y,z)函数

CSS3的3D转换translate3d(x,y,z)函数:translate3d(x,y,z)只是规定3D转换的一种形式,更多相关内容可以参阅CSS3的3D转换效果详解介绍一章节.此函数用来规定指定元素在三维空间中的位移.语法结构: translate3d(x,y,z) 参数解析:1.x:表示在x轴方向的位移.2.y:表示在y轴方向的位移.3.z:表示在z轴方向的位移.代码实例:1.x轴方向的位移: <!DOCTYPE html> <html> <head> <

初步学习css3之3D动画

本人是一名前端菜鸟,在css3如此火爆的时代,今天才来接触这个神秘的东西,第一次接触到的就是使用css3制作3d动画,特来写此文章,高手勿喷. 以下是body部分 <body> <div id="my3d"> <div id="pagegroup"> <div class="page" id="page1">1</div> <div class="pa

使用CSS3实现3D图片滑块效果

使用 CSS3 的3D变换特性,我们可以通过让元素在三维空间中变换来实现一些新奇的效果. 这篇文章分享的这款 jQuery 立体图片滑块插件,利用了 3D transforms(变换)属性来实现多种不同的效果. 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 实现的基本思路是创建三维图像切片,作为三维物体的另一侧,旋转并显示下一个图像.若浏览器不支持3D变换,一个简单的滑块将作为后备方案.要调用这个插件,首先把图片放在无序列表中

css3的3D和2D

css3的3D旋转:rorateX():参数为正值时,盒子是围绕x轴,完成从Y轴正方向到Y轴负方向的旋转,视觉上呈现高度上的变化.rorateY():参数为正值时,盒子是围绕Y轴,完成从X轴正方向到X轴负方向的旋转,视觉上呈现盒子宽度上的变化.css2D旋转:translate(a,b):a,b,均大于0时,a表示是在水平方向的位移(从左向右),b是垂直方向的位移(从上往下),rotate(a):a>0,在水平面上顺时针旋转的度数,a<0时,在水平面上逆时针旋转度数.scale(x,y):x是

一款基于css3的3D图片翻页切换特效

今天给大家分享一款基于css3的3D图片翻页切换特效.单击图片下方的滑块会切换上方的图片.动起你的鼠标试试吧,效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="imgdex"> <figure> <img src="arabic-eyes.jpg" alt="Photograph of a woman's face under a Bedouin headress"><