简单几步用纯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等相关属性制作分页导航实现代码
Dec 24 HTML / CSS
CSS3 @keyframes简单动画实现
Feb 24 HTML / CSS
css3媒体查询中device-width和width的区别详解
Mar 27 HTML / CSS
css3实现背景模糊的三种方式(小结)
May 15 HTML / CSS
css3实现二维码扫描特效的示例
Oct 29 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
Jan 31 HTML / CSS
HTML5和以前HTML4的区别整理
Oct 20 HTML / CSS
HTML5+CSS3绘制锯齿状的矩形
Mar 01 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
May 23 HTML / CSS
canvas如何绘制钟表的方法
Dec 13 HTML / CSS
简洁自适应404页面HTML好看的404源码
Dec 16 HTML / CSS
css filter和getUserMedia的联合使用
Feb 24 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
安装APACHE
2007/01/15 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
在Python中处理XML的教程
2015/04/29 Python
python自动翻译实现方法
2016/05/28 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python封装原理与实现方法详解
2018/08/28 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
政风行风评议个人心得体会
2014/10/29 职场文书
保安2014年终工作总结
2014/12/06 职场文书
2015年保管员工作总结
2015/04/30 职场文书
高考1977观后感
2015/06/04 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
python执行js代码的方法
2021/05/13 Python