移动端Web开发笔记

时间:2023-02-13 08:53:08

最近写的一个移动端项目:上海 地铁指路通,之间遇到的一些问题,记录下来(以后会不断补充的):

1. 丰富的页面Meta:

1.1: 控制显示区域各种属性:

<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
  • width                - viewport的宽度
  • height               - viewport的高度
  • initial-scale         - 初始的缩放比例
  • minimum-scale    - 允许用户缩放到的最小比例
  • maximum-scale   - 允许用户缩放到的最大比例
  • user-scalable       - 用户是否可以手动缩放

1.2:IOS中Safari允许全屏浏览:

<meta content="yes" name="apple-mobile-web-app-capable">

1.3:IOS中Safari顶端状态条样式:

<meta content="black" name="apple-mobile-web-app-status-bar-style">

1.4:忽略将数字变为电话号码:

<meta content="telephone=no" name="format-detection">

2. CSS相关:

2.1:  img自适应:

img {max-width: 100%;height: auto;width: auto9; /* ie8 */ -ms-interpolation-mode:bicubic; /* 这个在做实时缩放图片、缩略图的时候用处挺大。可以解决缩放失真问题。 IE7 Only */}

2.2:隐藏被旋转的 div 元素的背面,如果在旋转元素不希望看到其背面时,该属性很有用。 for 转场闪屏问题:

div {
backface-visibility:hidden;
-webkit-backface-visibility:hidden; /* Chrome 和 Safari */
-moz-backface-visibility:hidden; /* Firefox */
-ms-backface-visibility:hidden; /* Internet Explorer */
}

 2.3: @-webkit-keyframes可以预定义很多你所想到的动画,然后通过-webkit-transition来调用。比如:

@-webkit-keyframes fadein{
from{opacity:; }
to{opacity:; }
}
@-moz-keyframes fadein{
from{opacity:; }
to{opacity:; }
}
@-o-keyframes fadein{
from{opacity:; }
to{opacity:; }
}
@keyframes fadein{
from{opacity:; }
to{opacity:; }
} img {-moz-animation: fadein 350ms ease-out;-webkit-animation: fadein 350ms ease-out;-o-animation: fadein 350ms ease-out;animation: fadein 350ms ease-out;} /*以上css可以实现加载页面时,图片透明度变化的动画效果*/

2.4: -webkit-tap-highlight-color:rgba(255,255,255,0) 可以同时屏蔽ios和Android下点击元素时出现的阴影。
备注:transparent的属性值在android下无效。

a,button,input{-webkit-tap-highlight-color: rgba(255,0,0,0);}

2.5:-webkit-appearance:none 可以同时屏蔽输入框怪异的内阴影,解决iOS下无法修改按钮样式,测试还发现一个小问题就是,加了上面的属性后,iOS下默认还是带有圆角的,不过可以使用 border-radius属性修改。

input{-webkit-appearance: none;} /*去除iphone自带样式*/

2.6:IOS禁止横竖屏时字体变大,-webkit-text-size-adjust: none;

2.7:除了BODYHTML的滚动条,在触屏下几乎所有浏览器都不支持DIV的滚动条(说几乎是因为新版的IOS已经支持):解决方法我知道的有2种,一种是iscroll.js。另一种是安卓4和IOS5+都可以使用 CSS3的新属性 -Webkit-overflow-scrolling: touch; 来解决.

div {-Webkit-overflow-scrolling: touch;}

2.8:移动端click事件有300ms延迟。建议使用tap事件代替。还有建议使用zepto.js代替jquery.js。

2.9:media query 条件:

iPhone < 5:
@media screen and (device-aspect-ratio: 2/3) {} iPhone 5:
@media screen and (device-aspect-ratio: 40/71) {} iPad:
@media screen and (device-aspect-ratio: 3/4) {}

暂时想起来这么多,以后再不断补充。。

以上只是我个人的总结,如果你有更好的建议,请留言,一起共勉进步!!- -!