网站首页 > 教程分享 正文
欢迎来到我的CSS3专题系列文章,更多精彩内容持续更新中,欢迎关注 :)
CSS3 3D在大多的项目中应用还是挺广泛的,今天我将继续为大家分享一个新的3D交互效果。
本章目标
- css3 3D实战
- css3倒影
- css3 关键帧动画
先来看我们今天要实现的效果吧!看似好复杂,1招教你搞定它,没错,就是通过关键帧动画来搞,我们一步步的来分析看
css3 3D实战
老规矩,先布局,这个就比较简单了。一个容器里面放N个div,依次绝对定位,使其所有的图片叠在一起!
然后让它们的父级设置为3D空间,并设置景深。
值得注意的是,不要忘了设置旋转基点为底部。
绝对定位后,我们还要设置每一张图片的层级,倒序
css3倒影
从gif图中可以看出来。每张图片都会有一个倒影的效果。在CSS3中我们是采用的box-reflect来实现倒影效果
box-reflect:none | <direction> <offset>? <mask-box-image>
第一个参数为:我们要设置的倒影的方向,它的取值有:
- above:表示生成的倒影在对象(原图)的上方;
- below:表示生成的倒影在对象(原图)的下方;
- left:表示生成的倒影在对象(原图)的左侧;
- right:表示生成的倒影在对象(原图)的右侧;
第二个参数offset是用来设置生成倒影与对象(原图)之间的间距,其取值可以是固定的像素值,也可以是百分比值
第三个参数是用来设置倒影的遮罩效果,可以是背景图片,也可以是渐变生成的背景图像
来看一个示例:
注意:box-reflect属性并不是一个标准的css3属性,所以我们需要加上webkit内核前缀。不加的话,效果出不来。
css3 关键帧动画
图中的动画效果我是采用的CSS3的帧动画来完成的,我们先来看看帧动画的语法。
要想使用帧动画,首先我们得先定义一个动画帧,我们通过@keyframes关键字来定义它
语法:
@kyeframes 动画名称{ 0%{ ... } 10%{ } 100%{ //.. } }
我们在动画帧函数里面可以精准的定义动画的每一帧的变化情况。我们可以使用百分比的形式,也可以使用关键字,from to
定义完成后,我们可以在元素身上设置动画相关的属性
animation:动画名称 动画时间 延迟时间 动画运动形式 ...
我们先来实现一个简单的demo看看
运动一次,运动完成后,又回到了第一帧,一般来说,我们希望它停留在动画的最后一帧。我们一般在animation上再加一个forwards即可。
终极效果分析
当我们点击下一张的时候,当前的图片向前翻转消失,下一张出现,所以我们需要定义两个帧动画效果。
当下一张图片出现后,图片本身一个轻微的振动效果,这里我们也是通过多定义几个动画帧来实现的具体的代码如下:
最后我们来实现点击的逻辑。当我们点击下一张的时候,我们需要将当前的一张的动画设置成hide,下一张图片设置成show
这里我使用的是iNow变量来表示当前是第几张图片。
效果完成。
总结:
- css3的可以实现倒影的效果,但是记得要加上-webkit-前缀
- 帧动画的基础语法。
- css3帧动画可以实现比transition更为复杂的动画效果,如此这个示例拿transition来做,可能就比较麻烦了。
这里是【畅哥聊技术】CSS3专题的系列文章,更多精彩内容持续更新中……
未完待续。。。
猜你喜欢
- 2024-10-23 前端必学 40个精选案例实战 一课吃透HTML5+CSS3+JS(超清完结)
- 2024-10-23 【视频】CSS3渐变背景制作卡片光效边框的方法
- 2024-10-23 CSS3绘制一个小雨滴,见证它的成长之路
- 2024-10-23 如何使用CSS3画出懂你的3D魔方~(web用css做一个魔方)
- 2024-10-23 HTML绘制渐变图形(一)(html渐变背景色)
- 2024-10-23 我们来理一下css3的transition属性好不好
- 2024-10-23 10个顶级的CSS3代码生成器(css代码库)
- 2024-10-23 通过构建背景图学习CSS径向渐变(背景渐变 css)
- 2024-10-23 CSS3过渡属性详解,如何让简单代码轻松实现页面动画?
- 2024-10-23 几分钟用CSS3实现太极特效(html画太极)
你 发表评论:
欢迎- 最近发表
-
- 有了这份900多页的Android面试指南,你离大厂Offer还远吗?
- K2 Blackpearl 流程平台总体功能介绍:常规流程功能
- 零基础安卓开发起步(一)(安卓开发入门视频)
- 教程:让你的安卓像Windows一样实现程序窗口化运行
- Android事件总线还能怎么玩?(事件总线有什么好处)
- Android 面试被问“谈谈架构”,到底要怎样回答才好?
- Android开发工具Parcel和Serialize
- Android 中Notification的运用(notification widget安卓)
- Android退出所有Activity最优雅的方式
- MT管理器-简单实战-去除启动页(mt管理器怎么去除软件弹窗)
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)