伪元素上就不要做动画了,页面果然应该做一个测试一个啊
 
拿到设计稿一开始就先看看这个设计稿的布局,有一些是从页面顶部到底部都有效果的,这个时候就要考虑在 iPhone4 这样屏幕不够高的设备上如何保证页面完整呈现;或者在不影响交互的情况下,隐藏哪些元素。有的时候页面上元素比较集中,这个时候就要考虑在 iPhone6+ 这样的大屏幕设备上,要不要调整间距使得页面不会太空旷
 
zoom和transform:scale:
zoom 缩放的是被 zoom 的容器的视口,可以把它想象成放大镜的效果,这个属性是可被继承的,所以我们做设备屏幕兼容的时候,可以在 body 标签下加一个 div 包裹住页面上的其他元素,然后在这个 div 上加 zoom,达到的视觉效果就是页面上其他元素也被缩放了。但是有些元素并不支持 zoom。
 
transform 属性应用到元素的过程其实是矩阵变换的过程,在渲染的时候,元素的坐标就会被确定下来,然后和 transform 的属性值进行矩阵运算得到最终的坐标,不过你会发现,一个绝对定位的元素通过 transform 改变显示位置后,这个元素的 tbrl 值并不会被更新,且 transform 属性不可继承的。
 
要想 transfrom: scale(x) 达到和 zoom 相似的效果,要记得把 transfrom-origin 设置成 0 0。这么设置的原因是,在文档流中的元素,是以它的左上角为中心进行 zoom 的,而当元素脱离文档流时,要使 transform: scale(x) 和 zoom 达到相同的效果,还要具体分析 transform-origin 要如何设置。
 
为什么 scale 会留下右部和底部的迷の白色呢?回到 transform 的定义中,“applied to the coordinate system an element renders in through the ‘transform’ property”。当元素都进行渲染了,坐标已经确定了,再进行缩放,也就是在原来元素基础上改变大小。所以 .sf-index 虽然在渲染时四个角的位置分别是(0,0)、(100%,0)、(0,100%)、(100%, 100%),经过以 (0,0) 为变换中心的 scale,就变成了(0,0)、(85%,0)、(0,85%)、(85%,85%)。我们就会看到页面右边出现宽度为15%的一条白边,以及页面下方高度为15%的白边。
 
寻找动画灵感:
 
其他兼容方法:
像需要大量图片的页面,做兼容的时候我们常常担心的是什么?当然是图片比例出问题咯,所以也会使用通过伪元素设置 padding-top 的方法,保证图片比例正常地显示出来。只是这样的写法通常要结合 background-size:cover; 而我们常用的工具 CssGaga 在生成雪碧图了之后会覆盖 background-size。目前的这个方案的话……就不合成雪碧图了。
 
还有一个方案是使用 media query 结合 rem (或百分比)完成这样的布局,不过目前 gaga 不支持 background-size 的 rem,所以要采用什么方式合成雪碧图以及如何生成新的样式,还需要寻找新的方向。在不需要合成雪碧图的时候,可以用这两种方法。
 
伪元素真的是神一样的存在,一个标签自带两个儿子,不知道为什么就有种金闪闪的感觉。但是伪元素上的动画真的很坑
Android 上坑多,不要一次应用太多新技术。比如在魅族上用 flexbox 布局,就要加上 display: -webkit-box。还有一个教训就是,页面果然应该做一个测试一个
 

有个细节,安卓2.3.*不能良好支持-webkit-animation-fill-mode,也就是渐变动画不能停止在最后一帧。有这样一个解决方案:

1.用Modernizr去检测是否支持这个属性,加上识别类.no-animation-fill-mode;

2.根据识别类采取以下措施:
(1)用js模拟同样效果;
(2)用css屏蔽掉动画;
(3)或者直接全部都用transition来做(不要keyframes)。

Android手机的屏幕碎片化非常严重,各种各样的分辨率非常之多,那么如何让游戏可以适配这些机型就显得尤为重要。这里也是前前后实验了多种方案。先想到用JS来动态的根据分辨率来设置相关元素的大小,但要么在某些机型中获取失败,要么用赋值缩放相关元素时造成游戏崩溃……用 absolute 来解决:


关键代码:

1
2
3
4
5
6
7
8
.game {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: hidden;
}

以上代码使游戏容器绝对定位之后,上下左右四边都与手机屏幕贴紧,从而做到了适配各种屏幕。
然后使用 background-size:cover; 让背景覆盖全屏,此代码可以使背景 自动缩放 至 覆盖 容器大小。

为了适应各种屏幕,应该使用动态居中的布局,而不是传统页面的左上角为基准:

.welcome { position: absolute; top: 50%; left: 50%; margin: -100px 0 0 -111px; background-image: url("img/wel.png"); width: 222px; height: 200px; }

希望每次浏览这一屏内容的时候,动画都走一遍,可以使用reflow重新触发一下animation:

container.classList.remove("active"); container.offsetWidth = container.offsetWidth; container.classList.add("active");

animation-timing-function:steps(4, start);

第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。

每一帧变化会自动计算取平均值。

原理还是在不断的移动背景图片,但每种背景会保留一段时间,通过他我们可以方便的制作帧动画

最新文章

  1. centos查找未挂载磁盘格式化并挂载
  2. 两个viewport的故事(第一部分)
  3. 关于SVN版本分支合并的知识
  4. 【同行说技术】iOS程序员从小白到大神必读资料汇总
  5. Cloud Test 单页面即时监测功能上线!
  6. Sencha Touch 的基础知识
  7. 等待事件--db file sequential read
  8. 各国iPhone5系列最新裸机价格
  9. 毕业后的第二份工作:进入国外 在新加坡工作 每月一次18K
  10. 敏捷开发冲刺--day3
  11. 【Netty源码解析】NioEventLoop
  12. 什么是 Message Queue
  13. SimpleDateFormat 出现错误 Call requires API level 24 (current min is 15)
  14. 剑指offer题目解答合集(C++版)
  15. boost 线程安全队列
  16. 用canvas画三角形的方法
  17. [原]windows sdk版本不对
  18. Eclipse编辑jsp不显示预览效果页面
  19. Codeforces Round #106 (Div. 2) D. Coloring Brackets 区间dp
  20. Luogu1309 瑞士轮(分治,归并排序)

热门文章

  1. UNREFERENCED_PARAMETER
  2. 调试 ASP.NET Core 2.0 源代码
  3. Python多线程练习(threading)
  4. SpringMVC框架(一)
  5. 屏蔽掉Google Chrome 浏览器 textarea 单词拼写检测
  6. git fsck -- 一致性检查
  7. 干了这杯Java之LinkedList
  8. pseudocode of zigzag conversion
  9. typescript 的 polyfill 学习
  10. 阿凡题UWP的源码公开