纯css实现正方体图片旋转效果

  • 目标效果
  • 基本思路
  • 代码实现
  • 主要困难

注意:(该代码暂未解决兼容性问题,在google浏览器中可顺利运行)

目标效果

鼠标移入之后,图片开始依次旋转平移,旋转平移完成后六面体开始旋转

基本思路

  1. 首先要为html添加上视距以保证z轴的平移
  2. 其次使用hover效果,利用transform实现翻转,利用transition过渡效果实现图片旋转平移,采用animutation实现动画的一直播放。
  3. 然后要体现“依次”,需在transition中加入延时效果
  4. 最后,需添加上transform-style为立方体添加上立体效果

代码实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/*添加视距*/html {perspective: 800px;}.cube {width: 200px;height: 200px;margin: 100px auto;/* 设置3d变形效果 */transform-style: preserve-3d;animation: rotate 20s 12s infinite linear;}.cube > div {width: 200px;height: 200px;/* 为元素设置透明效果 */opacity: 0.7;position: absolute;}img {/* 去除图片的基线 */vertical-align: text-top;}.box1 {transition: all 2S ;}.box2 {transition: all 2S 2s;}.box3 {transition: all 2S 4s;}.box4 {transition: all 2S 6s;}.box5 {transition: all 2S 8s;}.box6 {transition: all 2S 10s;}.cube:hover .box1 {transform: rotateY(90deg) translateZ(100px);}.cube:hover .box2 {transform: rotateY(-90deg) translateZ(100px);}.cube:hover .box3 {transform: rotateX(90deg) translateZ(100px);}.cube:hover .box4 {transform: rotateX(-90deg) translateZ(100px);}.cube:hover .box5 {transform: rotateY(180deg) translateZ(100px);}.cube:hover .box6 {transform: rotateY(0deg) translateZ(100px);}@keyframes rotate {from {transform: rotateX(0) rotateZ(0);}to {transform: rotateX(1turn) rotateZ(1turn);}}</style>
</head>
<body><!-- 创建1一个容器 --><div class="cube"><!-- 引入图片 --><div class="box1"><img src="./image/1.jpg" alt=""></div><div class="box2"><img src="./image/2.jpg" alt=""></div><div class="box3"><img src="./image/3.jpg" alt=""></div><div class="box4"><img src="./image/4.jpg" alt=""></div><div class="box5"><img src="./image/5.jpg" alt=""></div><div class="box6"><img src="./image/6.jpg" alt=""></div></div>
</body>
</html>

图片请网上自行下载,放在相应目录下即可

主要困难

博主作为初学者,这里提出自己制作时出现的一些困难,高手可直接略过。

  1. 最初博主采用的:hover效果后添加animutation放映动画的效果,运行起来可行,但当鼠标移开后,失去了过渡效果,直接停止播放,没有后来的图片一张张回到原始位置的效果。
  2. 第二点也是很多初学者会出现问题的点,transform属性的rotate进行旋转后,它原本多对应的坐标轴也会随之发生变化,例如transform: rotateY(90deg)后,他的x轴变为到原来的z轴的反向延长线,z轴变为原来的x轴,y轴不变,因此后来的平移translate都是围绕z轴平移,如果不理解可画图自己尝试。
  3. 第三点就是旋转的角度问题,这里博主用一个方法记忆,就是顺时针,不管是绕x,y,z轴旋转,只要是正值,都是顺时针,可自己手画圆圈尝试。
  4. 第四点就是借鉴了一位博主的延时效果,之前的动画效果(旋转平移)是所有图片同时进行,没有依次的感觉,需加上transition-delay来实现“依次”效果,也就是上一张图片翻转完后,下一张开始翻转,注意:这里不能同时旋转下面所有div同时设置,会失去延时效果。那位博主的文章链接地址:CSS3轻松实现彩色旋转六面体动画 作者:夜色芜染

最后,推荐大家去看b站李立超老师的前端css教程b站李立超老师,这篇文章也是在老师的基础上稍微修改了一点。

纯css实现正方体图片旋转效果相关推荐

  1. 纯css实现给图片加标签

    纯css实现给图片加标签 原理:通过border.before.after.content.position定位,等等属性实现给图片添加标签样式. 效果截图如下: 代码实例: <!DOCTYPE ...

  2. html图片显示详情,纯CSS鼠标经过图片视差弹出层显示详情链接按钮特效代码.html...

    纯CSS鼠标经过图片视差弹出层显示详情链接按钮特效代码 * { box-sizing: border-box; } html, body { height: 100%; background:#ddd ...

  3. html如何实现图片轮流播放,纯css如何实现图片轮播

    纯css如何实现图片轮播 发布时间:2020-07-29 10:23:33 来源:亿速云 阅读:119 作者:Leah 纯css如何实现图片轮播?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希 ...

  4. html 实现格子效果图,纯CSS实现动态图片的九宫格布局

    起因 最近碰到这样一个需求,要实现一个"九宫格图片"展示,设计师给过来的稿子是酱的 是的,九宫格对应的是九种样式. 天不怕,地不怕,就怕设计有想法. 当一看到这样的需求,很多人的第 ...

  5. html页面校园美景相框,纯CSS+HTML打造图片相框背景

    通过纯html+css打造相框效果: 这是在页面上的效果 传统的做法是使用背景图片的方式进行,下面是另类方法,亲测,兼容性还是很不错的: HTML代码: CSS部分: *{margin:0px;pad ...

  6. html hover图片效果,CSS第9款:Imagehover.css 纯CSS打造的图片悬停效果

    用过很多图片县停效果,说实在话,很多都不好用.我大致说一下原因: 1.对基础CSS影响比较大: 2.附加的插件太多: 3.还要引用有一些JS. 而CSS3的诞生,对我们前端开发来说,有了质的飞跃!下边 ...

  7. 纯css hover放大图片

    记录自己在工作中遇到的一些比较有意义的,值得去记一记的知识. 这次主要做的是css的hover效果,在所有的效果里,选择了放大,这个也是设计的要求,就做了这个 其实这个要求来说,很简单,主要使用的是c ...

  8. 纯css实现背景图片半透明,内容不透明

    前言 最近做一个登陆界面的,突然想使用这种背景图片透明,而内容不透明的效果,这里我就说一说我的两个思路吧. 效果展示 半透明 不透明 常见的失败做法 最常见的做法事设置元素的opacity,这种设置出 ...

  9. 纯css svg 改变图片颜色 ios android 小程序

    本文出自: http://blog.csdn.net/wyk304443164 使用的是 filter drop-shadow 如果你只想兼容 Chrome 那么请看: http://www.zhan ...

最新文章

  1. 2.算法-程序的灵魂
  2. K - 老鼠走迷宫(DFS)
  3. c语言程序设计输入c,C语言程序设计(计算输入字符)
  4. 上传更新的代码到gitlab
  5. 如何获取系统的临时目录路径?
  6. outlook2016投票_投票:2016年读者选择奖和最佳采访奖
  7. python爬虫代码-学Python=写爬虫?不用代码也能爬下95%网站的数据!
  8. JSP+Servet转发技术
  9. 模板字符串竟然还有这种用法
  10. 代码的检查走查与评审
  11. leetcode_Remove Duplicates from Sorted Array
  12. 在地址栏直接使用Google“手气不错”功能
  13. 51单片机生成C语言矩形波,单片机产生方波、锯齿波、三角波程序
  14. 一份应聘者所写的外链推广规划
  15. 如何使用TF卡和阿里云盘给surface pro扩容
  16. android DAY1--搭建开发环境与Helloworld
  17. phpstorm快速编辑模板技巧
  18. hgetall php,HGETALL命令_视频讲解_用法示例-redis编程词典-php中文网
  19. 10-135 5-1 查询销售便携式电脑但不销售PC的厂商
  20. 关于不能用莱布尼兹准则判别级数敛散性时的其中一种方法示例

热门文章

  1. vue 中provide的用法_vue 中的 provide 和 inject 用法
  2. 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)
  3. dat文件导入cad画图步骤_准确又高效的读入CAD几何——详解Fluent Meshing导入文件的几种方法...
  4. Net分布式系统之七:日志采集系统(1)
  5. 如何在基于vue-cli的项目中,使用精灵图 css sprite
  6. 穿戴式设备应该新机遇--可以测心率的光感小米手环
  7. win10禁用触摸键盘_如何在Windows 8和10中永久禁用触摸键盘
  8. 【Python数据挖掘】用朴素贝叶斯预测人类活动识别
  9. ArcEngine连接地理数据库(20190702)
  10. 【项目实训】七牛云测试域名过期后所能采用的方法