简单几步用纯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实现3D旋转书本效果
Mar 21 HTML / CSS
CSS3 选择器 基本选择器介绍
Jan 21 HTML / CSS
布局和排版教程 纯css3实现图片三角形排列
Oct 17 HTML / CSS
HTML5 File接口在web页面上使用文件下载
Feb 27 HTML / CSS
基于Html5实现的react拖拽排序组件示例
Aug 13 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
Jan 30 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
Oct 22 HTML / CSS
canvas拼图功能实现代码示例
Nov 21 HTML / CSS
HTML中的表单Form实现居中效果
May 25 HTML / CSS
html css3不拉伸图片显示效果
Jun 07 HTML / CSS
html网页引入svg图片的4种方式
Aug 05 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
咖啡与牛奶
2021/03/03 冲泡冲煮
php google或baidu分页代码
2009/11/26 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
可输入的下拉框
2006/06/19 Javascript
删除重复数据的算法
2006/11/23 Javascript
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
python引用DLL文件的方法
2015/05/11 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python开头的coding设置方法
2019/08/08 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
python 通过文件夹导入包的操作
2020/06/01 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
企业宗旨标语
2014/06/10 职场文书
学校宣传标语
2014/06/18 职场文书
外国人来华邀请函
2015/01/31 职场文书
单位政审意见范文
2015/06/04 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
计算机实训心得体会
2016/01/14 职场文书
react 路由Link配置详解
2021/11/11 Javascript
python接口测试返回数据为字典取值方式
2022/02/12 Python