网站首页 > 基础教程 正文
欢迎来到我的CSS3专题系列文章,更多精彩内容持续更新中,欢迎关注 :)
上章节回顾
我们通过对transform深入挖掘,实现了一个简单的VR 3D场景的旋转效果。其中,两个必要条件确定我们的视野范围。
通过对css3transform的封装,形成了自己的操作transform的函数。
本章目标
- 3D折纸的基础布局
- 封装自己的折纸类
先来看我们今天要实现的效果吧
从gif图中我们可以看出来,有一个div里面有N个子元素div,然后将一张图片作为背景图依次做为子元素div的背景图,依次定位拼合成一张完整的图片。
巧妙的布局
这里需要注意的是。看到这种效果,我们一般会这样去布局:
<div class='box'> <div></div> <div></div> <div></div> <div></div> </div>
很遗憾,这样行不通的,一个个旋转拼接,一个两行还行,划分的多了就难了,当然你可以用三角函数去计算,不过这样就没必要了。
我的思路:
将里面的div依次嵌套,旋转一个,其子元素也会跟着旋转。比如:
我们依次嵌套了4个div,然后设置样式,让他们叠在一起,然后让分别设置他们的left让他们一字排开来
注意:要使子元素都有3D变换,我们需要给每一个div添加transform-style: preserve-3d;样式。使其内部形成3D空间。
然后依次给子div设置left值,背景图片定位:
这时候的效果是这样的
关键点来了:
1)从左往右看gif图,首先,左侧第一张在hover的时候,没有任何的变化,从二个开始,我们将其绕Y轴旋转45度,我们来看效果
可以看到,后面的子元素都随着父级一起旋转了45度。
2)然后我们再来看第三张图片,它需要在父级旋转过后需要再折回来,所以它是rotateY(-90deg);
看效果
第三张图片又折回来了,到现在我们的目标效果好像有点样子了。
4)再来看第四张,又要往里折,这次是折正90deg,
最终的效果就完成啦~
我已试过:如果再分5份,10份,后面的折纸角度分别是90度和-90度,这时候为后面的函折纸类的封装就做好的铺垫。
感觉也不过如此嘛
问题:
我们已经将这个折纸的基本布局和思路都大概讲了一下,但是这样后面在实际项目中用起来可能比较繁琐。怎么办?
解决方案
机智如我,已经想到了给你们封装好这样的一个函数类啦。
创建一个折纸类:Origami
class Origami{ constructor(options ){ this.el = null; this.imgUrl = null;//图片的地址 this.size = 4;//要拆成几部分 Object.assign(this, options);//将实例化的参数覆盖默认参数 this.layout(); } layout(){ // } }
整个盒子的大小和我们传入的图片的大小保持一致,将我们基础布局中的样式动态添加到style中去
var style = document.createElement('style');
动态生成我们需要的div,然后我们给里面的每一个div设置宽高背景图片的定位。
因为要将图片分成的份数是动态传入的,所以这时候写css hover就不太合适了,所以我采用的是JS事件来操作的
到这这个方法基本上就封装完成了。
怎么调用?
我分别调用了两次折纸效果,每张图片的细分数都不一样,这样就形成了我们最开始的gif图的效果啦。
总结:
- 3D折纸的基本布局,建议使用层层嵌套的方式,因为其它的方式我也会。
- 将图片拆成N份位次叠加在各种子元素上,拼成一张完整的图片。
- 因为父级的旋转会影响子元素的旋转,我们将子元素一层层来回旋转。从第三次往后,旋转的角度应该是一个对称的关系。大家可以拿到实际的demo后自行调整看效果
- 针对折纸效果作一个类的封装,封装的思路就是按照我们前面的基础布局一步步的实现
这里是【畅哥聊技术】CSS3专题的系列文章,更多精彩内容持续更新中……
未完待续。。。
猜你喜欢
- 2024-10-10 让交互更加生动!有意思的鼠标跟随 3D 旋转动效
- 2024-10-10 「抖音最火」的3D旋转透视酷炫相册,如何用CSS3去实现
- 2024-10-10 纯CSS3实现旋转流星旋转光环效果 css旋转动画效果
- 2024-10-10 CSS3旋转实例学习(附3D旋转实例) css3实现360度旋转
- 2024-10-10 CSS3之日记翻页效果详解 日记翻页视频的模板
- 2024-10-10 如何使用纯CSS技术实现3D书本动态展示效果?
- 2024-10-10 CSS3之3D魔方鼠标控制酷炫效果 3d魔方代码
- 2024-10-10 CSS3专题(五)—实力宠粉,来了,来了,你们要的3D幻灯片来了
- 2024-10-10 css之3D效果——正方体 css正方体照片墙源码
- 2024-10-10 26.HTML 2D和3D变换 html2d旋转
- 05-14CSS基础知识(一) CSS入门
- 05-14CSS是什么? CSS和HTML有什么关系?
- 05-14什么是CSS3?
- 05-14CSS如何画一个三角形?
- 05-14初识CSS——CSS三角制作
- 05-14Wordpress建站教程:给图片添加CSS样式
- 05-14HTML和HTML5,css和css3的区别有哪些?
- 05-14Html中Css样式Ⅱ
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (86)
- location.href (69)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)