简单几步用纯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打造HTML5的Logo(实现代码)
Jun 16 HTML / CSS
浅谈css3中的渐进增强和优雅降级
Dec 01 HTML / CSS
html5 css3网站菜单实现代码
Dec 23 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
Jan 01 HTML / CSS
canvas与html5实现视频截图功能示例
Dec 15 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
H5混合开发app如何升级的方法
Jan 10 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
Jan 10 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
Html5+CSS3+EL表达式问题小结
Dec 19 HTML / CSS
Html5移动端网页端适配(js+rem)
Feb 03 HTML / CSS
使用CSS实现一个搜索引擎的原理解析
Sep 25 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
Express的路由详解
2015/12/10 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
js中的闭包学习心得
2018/02/06 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Python常见数据结构详解
2014/07/24 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
django 环境变量配置过程详解
2019/08/06 Python
Python count函数使用方法实例解析
2020/03/23 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
中科软测试工程师面试题
2012/06/16 面试题
电子商务专业个人的自我评价
2013/11/19 职场文书
个人简历自我评价范文
2014/02/04 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA