web移动开发资源整理之常见bug的解决方案

模拟按钮hover效果

移动端触摸按钮的效果,可明示用户有些事情正要发生,是一个比较好体验,但是移动设备中并没有鼠标指针,使用css的hover并不能满足我们的需求,还好国外有个激活css的active效果,代码如下:




    
    
    
    
    
    
    


    
按钮

兼容性ios5+、部分android 4+、winphone 8
要做到全兼容的办法,可通过绑定ontouchstart和ontouchend来控制按钮的类名




    
    
    
    
    
    
    


按钮

屏幕旋转的事件和样式

window.orientation,取值:正负90表示横屏模式、0和180表现为竖屏模式;

window.onorientationchange = function(){
    switch(window.orientation){
        case -90:        
        case 90:            
            alert("横屏:" + window.orientation);            
            break;
        case 0:        
        case 180:             
            alert("竖屏:" + window.orientation);            
            break;    
}}
//竖屏时使用的样式
@media all and (orientation:portrait) {.css{}}
//横屏时使用的样式
@media all and (orientation:landscape) {.css{}}

audio元素和video元素在ios和andriod中无法自动播放

应对方案:触屏即播

$('html').one('touchstart',function(){ audio.play()})

可参考《无法自动播放的audio元素》

摇一摇功能

HTML5 deviceMotion:封装了运动传感器数据的事件,可以获取手机运动状态下的运动加速度等数据。

手机拍照和上传图片

的accept 属性





使用总结:

  • ios 有拍照、录像、选取本地图片功能
  • 部分android只有选取本地图片功能
  • input控件默认外观丑陋

消除transition闪屏

网络都是这么写的,但我并没有测试出来,应该只是兼容低版本的手机

.css{
/*设置内嵌的元素在 3D 空间如何呈现:保留 3D*/
 -webkit-transform-style: preserve-3d;
//设置进行转换的元素的背面在面对用户时是否可见:隐藏
-webkit-backface-visibility: hidden;
}

开启硬件加速

  • 解决页面闪白
  • 保证动画流畅
.css{
 -webkit-transform: translate3d(0, 0, 0);
 -moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}

设计高性能CSS3动画的几个要素

  • 尽可能地使用合成属性transform和opacity来设计CSS3动画,不使用position的left和top来定位
  • 利用translate3D开启GPU加速

fixed定位的bug

  • ios下fixed元素容易定位出错,软键盘弹出时,影响fixed元素定位
  • android下fixed表现要比iOS更好,软键盘弹出时,不会影响fixed元素定位
  • ios4下不支持position:fixed

播放视频不全屏


你可能感兴趣的:(web移动开发资源整理之常见bug的解决方案)