在做练习的时候学到css的翻转导航菜单,原代码有点让人头疼,通过对其css的参数一点点研究了其实现过程。

这里推荐大家研究这个3D翻转动画的代码

我的github:swarz,欢迎给老弟我++星星

首先要知道坐标系的设定如下:

其次翻转关键的参数有:

perspective:  200px;

transform-style: preserve-3d;
transform: rotateX(90deg);
transform: translateZ(30px);
transition: all 1s linear;

1.设置透视属性,观察者位置在视图前200px;

2.设置是3D空间的变换效果,子元素合在一起变换;

3.设置旋转,沿X轴旋转90度,平面旋转后看到的是线;

4.设置位移,沿Z轴位移30px。

5.设置变换函数。

为了先初步了解,我先做一个导航图正面的翻转效果。

效果同立方体的翻转,正面翻转到顶面。立方体只旋转不位移,但是立方体的正面是发生位移的。

正面的变换原点在中心点,相对变换前的位置,变换后的位置向上位移50% 向后位移50%。

但是!css动画结束参数是根据这个面结束时的坐标的,这时候坐标系跟着变了,最后的结果是Z轴+50% Y轴-50%。

初始参数参考坐标如图一,不是根据变换后坐标写。

下图是三个参数的效果。

父元素设置 :

perspective: [para]px;
变换子元素设置:
transform: rotateX(90deg) translateZ(50px) translateY(-50px);
transition: all 1s linear;
 
通过上面的例子,我就明白了啥是3D变换了。但是这个例子是单个面,而设置一个3D立体的变换怎么设呢?当然不能对每个面进行定位,太麻烦,要整体变换。
1.设置多个面的原始旋转和位移,组成一个立方体。
2.立方体盒子元素设置:transform-style: preserve-3d;
3.立方体父元素设置景深:perspective: [para]px; 
4.立方体盒子元素设置变换原点:transform-origin: 50% 50% -50px;
 如果不设置变换原点,修正变换后位移也行。
5.对立方体盒子元素进行整体旋转。方体盒子元素沿X轴旋转90度即可。
效果如下,第二个图是设置了 opacity: 0.5; 
 

另外下面做个错误的稀饭

在立方体元素上设置transform-style: preserve-3d; perspective:200px;

立方体上设置景深 perspective,立方体的图形就被固定了,或者说观察位置随立方体改变。需要从上一级元素观察才行。

↓  在立方体元素上同时设置transform-style: preserve-3d; perspective

↓  没有设置perspective;

↓  没有设置transform-style: preserve-3d

over 
 

纯CSS 3D翻转一个面(翻转导航菜单 立方体)的更多相关文章

  1. 纯css实现网上商城左侧垂直商品分类菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 10分钟使用纯css实现完整的响应式导航菜单栏的效果

    在开发hexo主题pixel的时候没有选择bootstrap和jquery实现响应式菜单,而是 使用了纯css实现响应式菜单,这个想法来自于You-Dont-Need-Javascript, 这个项目 ...

  3. 使用CSS创建有图标的网站导航菜单

    在我创建的每一个互联网应用中,我都试图避免创建完全由图片组成的菜单.在我看来,网页菜单系统中应该使用文字.这样做也会让菜单变得更干净利落.清晰和易读,不用考虑应用程序如何读取它,以及页面放大的时候也不 ...

  4. 纯css实现鼠标感应弹出二级菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 纯CSS做的一个Silder

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. 纯CSS实现带返回顶部右侧悬浮菜单

    这是我做个人网页的时候加上的带返回顶部右侧悬浮菜单效果,如下图, 使用工具是Hbuilder. 代码如下: <!DOCTYPE html> <html> <head> ...

  7. 10个超漂亮的CSS 3D特效

    10个超漂亮的CSS 3D特效 一.总结 一句话总结: 后面有空得好好练一练,也可以作为录课素材 二.10个超漂亮的CSS 3D特效 转自或参考:10个超漂亮的CSS 3D特效https://blog ...

  8. 纯css实现翻书效果

    前言 最近研究了一下css3的3D效果,写了几个demo,写篇博客总结一下实现的经过.PS:如果对transform-origin/perspective/transform-style这些概念还不了 ...

  9. Sultana后记:纯css也能写col,select,datepicker,carousel...

    未完待续 背景 如今css3越来越发达,focus-within等属性也已经开始在Chrome得到支持.如果有出色的css功底,一点点ps技能,你也能用css3配合原生html标签写出优秀的框架.通过 ...

随机推荐

  1. android.os.TransactionTooLargeException

    android.os.TransactionTooLargeException 今天开发过程共遇到问题,后台要反回一些表格,不是单纯的数据.就是有一些html标签的东西.错误的思路: 我得到数据后通过 ...

  2. JavaScript的代码库

    JavaScript的代码库 本文主要是汇集了一些JavaScript中一些经常使用代码.方便以后查找和复用. javascript框架: <script language="java ...

  3. POJ 1128 Frame Stacking(拓扑排序&#183;打印字典序)

    题意  给你一些矩形框堆叠后的鸟瞰图  推断这些矩形框的堆叠顺序  每一个矩形框满足每边都至少有一个点可见  输入保证至少有一个解 按字典序输出全部可行解 和上一题有点像  仅仅是这个要打印全部的可行 ...

  4. 很强大的shell写的俄罗斯方块

    网上看到的一个用linux的shell脚本写的俄罗斯方块. 是我至今见过写的最牛逼的shell了.共享一下. 原作者信息在脚本的凝视中有. 下载地址:点击下载 #!/bin/bash # Tetris ...

  5. windows下solr7.9+tomcat7环境搭建

    1.下载solr.tomcat(能够不用下载.由于solr有jetty支持) 2.solr部署到tomcat上    首先,把解压包下的solr-4.9.0\example\solr-webapp中的 ...

  6. 利用安卓手机搭建WEB服务器

    背景介绍 Android是一种基于Linux的自由及开放源代码的操作系统 所以是用安卓来搭建服务器是完全可行的.接下来将教大家如何利用AndroPHP和Feel FTP(或者其他FTP管理器)来在安卓 ...

  7. elasticsearch date_histogram

    (5)Date Histogram Aggregation 时间直方图聚合,专门对时间类型的字段做直方图聚合.这种需求是比较常用见得的,我们在统计时,通常就会按照固定的时间断(1个月或1年等)来做统计 ...

  8. [NOIP 2016] 蚯蚓

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4721 [算法] 首先,我们可以维护一个堆,堆中存放蚯蚓的长度,由于除当前蚯蚓其他的蚯 ...

  9. bzoj 1800 & 洛谷 P2165 [AHOI2009]飞行棋 —— 模拟

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1800   https://www.luogu.org/problemnew/show/P21 ...

  10. nodejs express开发

    用NodeJS+Express开发WEB应用---第一篇 大漠穷秋2014-03-28 预热 为了对后面的内容理解更加透彻,推荐首先阅读下面这篇很好的文章: http://www.nodebeginn ...