简单几步用纯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 相关文章推荐
利用HTML5+CSS3实现3D转换效果实例详解
May 02 HTML / CSS
使用css3做0.5px的细线的示例代码
Jan 18 HTML / CSS
css3实现小箭头各种图形效果
Jul 08 HTML / CSS
HTML5 canvas基本绘图之绘制阴影效果
Jun 27 HTML / CSS
浅谈HTML5新增及移除的元素
Jun 27 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
Apr 24 HTML / CSS
会走动的图形html5时钟示例
Apr 27 HTML / CSS
HTML5中drawImage用法分析
Dec 01 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
Apr 24 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
May 23 HTML / CSS
奇妙的 CSS shapes(CSS图形)
Apr 05 HTML / CSS
HTML基本元素标签介绍
Feb 28 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 变量未定义等错误的解决方法
2011/01/12 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php url路由入门实例
2014/04/23 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
jQuery 1.0.2
2006/10/11 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
用python制作游戏外挂
2018/01/04 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
资源工程专业毕业生求职信
2014/02/27 职场文书
后备干部培训方案
2014/05/22 职场文书
考察邀请函范文
2015/01/31 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python