简单几步用纯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实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
CSS3中currentColor关键字的妙用
Feb 27 HTML / CSS
一篇文章带你学习CSS3图片边框
Nov 04 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
用HTML5.0制作网页的教程
May 30 HTML / CSS
浅谈three.js中的needsUpdate的应用
Nov 12 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
May 03 HTML / CSS
用HTML5制作视频拼图的教程
May 13 HTML / CSS
canvas实现烟花的示例代码
Jan 16 HTML / CSS
详解CSS不受控制的position fixed
May 25 HTML / CSS
CSS基础详解
Oct 16 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 mysql Errcode: 28 终极解决方法
2009/07/01 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
基于php权限分配的实现代码
2013/04/28 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
javascript之Partial Application学习
2013/01/10 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
理解Javascript闭包
2013/11/01 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
深入探讨前端框架react
2015/12/09 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
先进个人获奖感言
2014/01/24 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
担保书范本
2015/01/20 职场文书
二胎满月酒致辞
2015/07/29 职场文书
Python 键盘事件详解
2021/11/11 Python
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis