简单几步用纯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 10 HTML / CSS
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
Apr 26 HTML / CSS
css3media响应式布局实例
Jul 08 HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
Sep 18 HTML / CSS
css3实现冲击波效果的示例代码
Jan 11 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
Nov 16 HTML / CSS
canvas烟花特效锦集
Jan 17 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
Sep 02 HTML / CSS
HTML5上传文件显示进度的实现代码
Aug 30 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
Apr 26 HTML / CSS
iframe与window.onload如何使用详解
May 07 HTML / CSS
Html5嵌入钉钉的实现示例
Jun 04 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简单截取字符串代码示例
2016/10/19 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python获取央视节目单的实现代码
2015/07/25 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
python读取mysql数据绘制条形图
2020/03/25 Python
Python如何实现邮件功能
2020/05/27 Python
python中count函数知识点浅析
2020/12/17 Python
德国电子商城:ComputerUniverse
2017/04/21 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
公司聚餐通知
2015/04/22 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技