css动画animation-keyframes
随着css3的流行,现在很多可以使用css3实现的动画效果,基本上就选择css3实现,尤其是在移动端的(移动端对css3的支持度相对比较高,PC端有很多IE8及以下的浏览器拖着后腿呢)。
最近做了一个app活动页面,避嫌就不上页面设计图了,其中有一块是这样的:
一个3月份日历,每天可以点击领取一种奖励(就直接称之为奖励吧),每到新的一天,都要有明显提示,今天是第一次进入当前页面,有奖励可以领取。
我们的设计方案:当天可点击的提示是通过边框不停的闪动实现。通过js获取当天的日期,匹配日历当中的日期,为其添加一个class,从而实现提示可点击状态。
.calendar-table td.onActive:before{
-webkit-animation: borderchg 1s infinite ease-in;
animation: borderchg 1s infinite ease-in;
}
下面就涉及到animation动画的编写了,事实上这个动画很简单,就是使用内阴影模拟的边框,从无到有,再逐渐消失的过程。
@keyframes borderchg {
100% {
-webkit-box-shadow: inset 0 0 1px 3px #ef4444;
box-shadow: inset 0 0 1px 3px #ef4444;
}
}
工作到这里算是完成了,效果也基本实现了,剩下的就是后面的流程,后台开发,测试,上线的工作了。
可是临到快上线的时候,后台开发人员拿着一款三星的手机,过来跟我说,这个三星手机上没有当天可点击的提示。
翻css,没有找到问题根源,想着就这一款三星的手机,就算了,直接无视他。
晚上上线之后,突然发现,凡是ios8的系统的iPhone手机,也没有这个当天可点击的提示。这就比较坑了,不可能无视这么多的iPhone手机啊。怎么办?
第一想法是换解决方案,可能是box-shadow的问题(然而我并不能确认),反正是html和css的问题,所以换解决方案并不算麻烦,然后我就重新设计了一下当天可点击的提示,通过径向渐变的背景色不断闪现的效果来提示。
@keyframes borderchg {
100% {
background-image: -webkit-radial-gradient(farthest-corner, rgba(239, 68, 68, 0.8), transparent);
background-image: radial-gradient(farthest-corner, rgba(239, 68, 68, 0.8), transparent);
}
}
浏览器测试没有问题,然后继续线上替换css,发现在ios8系统的iPhone上依然一样,没有提示。

这会真的是懵逼了,不知所措。
后来去网上搜索了一下别人写的css3的animation动画,发现我一直忽视了的一点:keyframes关键帧。
这个也是css3的新添加的,所以很多人在写keyframes的时候,也像其他属性一样添加了前缀-webkit-,此时才想到keyframes是不是应该也有兼容性问题。

ios8 Supported width prefix:-webkit-。就这么个东西,折腾了一个多小时,其实就是思维局限了。
最终还是采用原方案:
@-webkit-keyframes borderchg {
100% {
-webkit-box-shadow: inset 0 0 1px 3px #ef4444;
box-shadow: inset 0 0 1px 3px #ef4444;
}
}
总算是闹明白问题在哪了,还是兼容性问题,只不过是一直被我潜意识忽略了的keframes的兼容性问题。
css动画animation-keyframes的更多相关文章
- amazeui学习笔记--css(常用组件15)--CSS动画Animation
amazeui学习笔记--css(常用组件15)--CSS动画Animation 一.总结 1.css3动画封装:CSS3 动画封装,浏览器需支持 CSS3 动画. Class 描述 .am-anim ...
- css动画-animation各个属性详解(转)
CSS3的animation很容易就能实现各种酷炫的动画,虽然看到别人的成果图会觉得很难,但是如果掌握好各种动画属性,做好酷炫吊炸天的动画都不在话下,好,切入正题. 一.动画属性: 动画属性包括:①a ...
- CSS动画animation
transition: 过渡动画transition-property: 属性transition-duration: 间隔transition-timing-function: 曲线transiti ...
- 深入理解CSS动画animation
× 目录 [1]定义 [2]关键帧 [3]动画属性 [4]多值 [5]API 前面的话 transition过渡是通过初始和结束两个状态之间的平滑过渡实现简单动画的:而animation则是通过关键帧 ...
- CSS动画 animation与transition
一.区分容易混淆的几个属性和值 先区分一下css中的几个属性:animation(动画).transition(过渡).transform(变形).translate(移动). CSS3中的trans ...
- css动画 animation
今天用css做了一个简单的三角上下移动的一个小动画,说白了就是在改变该物体的height值.除了这个方法,还可以用js. 一.在用css写动画时,一定要记住兼容性问题.如何解决该兼容性?在前面加内核前 ...
- css动画 aniamtion & @keyframes
MDN-animation文档 animation: [name] [duration] [timing-function] [delay] [iteration-cont] [direction] ...
- css 动画animation基本属性(干货)
/* 动画名称 */ animation-name: cloud; /* 属性定义动画完成一个周期所需要的时间,以秒或毫秒计 */ animation-duration:1s; /* 属性定义动画何时 ...
- CSS动画-transition/animation
HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...
- CSS动画效果
CSS变形效果 Transform translate:平移 translate(x,y) translateX(x) translateY(y)相对于元素原始位置平移. scale:缩放 大于1放大 ...
随机推荐
- git 查看提交历史
查看提交历史 git log 查看每次提交的具体改动内容 git log -p 查看某个文件历次提交的具体改动内容 git log -p <file name> # git log -p ...
- Kafka使用log.retention.hours改变消息端的消息保存时间
数据存储的最大时间超过这个时间会根据log.cleanup.policy设置的策略处理数据,也就是消费端能够多久去消费数据log.retention.bytes和log.retention.hours ...
- 解决openwrt中文界面异常
openwrt的luci以中文字体显示时,出现以下异常情况: 是因为该固件编译了其他的luci application,我是编译了meshwizard. 可作如下修改: scp登陆打开/usr/lib ...
- 【java】break,continue和return区别
break:适用于switch和loop continue:只适用于loop 两者都可以通过给循环加标签来控制跳出,如下例所示 class BreakDemo { public static void ...
- innobackupex per table
#innobackupex export tableinnobackupex --defaults-file=/etc/my.cnf --sock=/data/3306/mysql_3306.sock ...
- 进程锁 Lock
进程锁其实是锁的输入终端,屏幕,太多的进程,为了防止打印错乱而锁,作用不大 from multiprocessing import Process, Lock def f(l, i): l.acqui ...
- [3] 注解(Annotation)-- 深入理解Java:注解(Annotation)--注解处理器
转载 http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html 深入理解Java:注解(Annotation)--注解处理器 如果没有用 ...
- C# 生成时间戳
编写网络程序中难免用到一些时间戳. 早前不知道哪里复制过一个代码,如下: public static string GetTimeStamp() { TimeSpan ts = DateTime.Ut ...
- STL进阶--成员函数 vs 算法
容器的成员函数 vs 算法 容器中同名的函数 List: void remove(const T); template<class Comp> void remove_if(Comp); ...
- 【Guava 】Collections – Join and Split
Convert Collections to String Using Joiner Convert List into String Using Joiner @Test public void w ...