简单几步用纯CSS3实现3D翻转效果


Posted in HTML / CSS onJanuary 17, 2019

作为前端开发人员的必修课,CSS3能带我们完成许多基本动效,本期我们将用CSS3实现hover翻转效果~

第一步非常简单,我们简单画1个演示方块,为其 添加transition和transform属性

// 本示例均使用Sass语法
.block {
  width: 200px;
  height: 200px;
  background: brown;
  cursor: pointer;
  transition: 0.8s;
  &:hover {
    transform: rotateY(180deg);
  }
}

我们看一看这时候的效果:

简单几步用纯CSS3实现3D翻转效果

这里 需要注意 的是: transition属性要写在.block上而不是hover上 ,如果只在hover上写transition,则鼠标移出时并没有transition的过渡效果,如果我们只将transition写在hover上:

简单几步用纯CSS3实现3D翻转效果

第二步比较关键:我们不难发现始终在1个平面上翻转,不够有立体感,因此我们需要稍加改变思路—— 用2层div嵌套

// html部分
<div class="block">
    <div class="block-in"></div>
</div>
// CSS部分
.block {
  width: 200px;
  height: 200px;
  cursor: pointer;
 
  &-in {
    background: brown;
    height: 100%;
    transition: 0.8s;
  }
  
  &:hover .block-in {
    transform: rotateY(180deg);
  }
}

此时效果没变,如下:

简单几步用纯CSS3实现3D翻转效果

这个时候 关键的1步 来了:我们需要 给外层添加perspective和transform-style属性 ,为整个动画增添3D变形效果:

.block {
  width: 200px;
  height: 200px;
  cursor: pointer;
  /* 3D变形 */
  transform-style: preserve-3d;
  -webkit-perspective: 1000;
  -moz-perspective: 1000;
  -ms-perspective: 1000;
  perspective: 1000;
 
  &-in {
    background: brown;
    height: 100%;
    transition: 0.8s;
  }
 
  &:hover .block-in {
    transform: rotateY(180deg);
  }
}

最终实现效果如下:

简单几步用纯CSS3实现3D翻转效果

最终我们 总结一下思路

1.建立内外2层div,鼠标 hover 到外层时,内层div添加翻转 transform: rotateY(180deg)

2.注意将 transition 属性添加到需要翻转的div上,而不是 hover 时

3.外层div添加 perspective 和 transform-style 属性,最终实现3D翻转效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3 按钮样式简单可扩展创建
Mar 18 HTML / CSS
html5 乒乓球(碰撞检测)实例二
Jul 25 HTML / CSS
html5实现多文件的上传示例代码
Feb 13 HTML / CSS
html5菜单折纸效果
Apr 22 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
Jun 16 HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 HTML / CSS
HTML5不支持标签和新增标签详解
Jun 27 HTML / CSS
深入浅析HTML5中的article和section的区别
May 15 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
Jan 18 HTML / CSS
浅析HTML5中的download属性使用
Mar 13 HTML / CSS
如何给HTML标签中的文本设置修饰线
Nov 18 HTML / CSS
CSS实现九宫格布局(自适应)的示例代码
Feb 12 HTML / CSS
css3实现3D文本悬停改变效果的示例代码
Jan 16 #HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 #HTML / CSS
CSS3改变浏览器滚动条样式
Jan 04 #HTML / CSS
浅谈CSS3 动画卡顿解决方案
Jan 02 #HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
Dec 29 #HTML / CSS
10分钟入门CSS3 Animation
Dec 25 #HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 #HTML / CSS
You might like
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
php读取本地json文件的实例
2018/03/07 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
python实现12306火车票查询器
2017/04/20 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python多线程分块读取文件
2019/08/29 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
酒店led欢迎词
2014/01/09 职场文书
师生聚会感言
2014/01/26 职场文书
单位员工收入证明样本
2014/10/09 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
毕业实习证明范本
2015/06/16 职场文书
开学第一周总结
2015/07/16 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server