A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李盼盼老师 于 2017-12-28 11:42 编辑

移动端开发需要注意的一些问题整合
【前言】
       在移动端开发中,页面在浏览器的移动端模拟器中正常显示还是远远不够的,
真正在移动端开发中,我们还需进行真机测试,下面对一些测试中常见的bug与需要注意的问题进行一个整理!

【本贴整理的章节】
  •   meta基础知识
  •   默认样式的清除
  •   常见的真机测试会出现的bug

meta基础知识】
1、防止手机中网页放大和缩小,这点是最基本的,最为手机网站开发者来说应该都知道的,就是设置meta中的viewport。
[Erlang] 纯文本查看 复制代码
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
用viewport使页面禁止缩放。 通常把user-scalable设置为0来关闭用户对页面视图缩放的行为。完整的viewport设置,当然,user-scalable=0,有的人也写成user-scalable=no,都可以的。

2、忽略将页面中的数字识别为电话号码
[HTML] 纯文本查看 复制代码
<meta name="format-detection" content="telephone=no" />

3、忽略Android平台中对邮箱地址的识别
[HTML] 纯文本查看 复制代码
<meta name="format-detection" content="email=no" />
4、苹果手机的一些设置
   
[Groovy] 纯文本查看 复制代码
<meta name="apple-mobile-web-app-capable" content="yes">
如果content设置为yes,Web应用会以全屏模式运行,反之,则不会。content的默认值是no,表示正常显示。你可以通过只读属性window.navigator.standalone来确定网页是否以全屏模式显示。
5、去掉winphone系统a、input标签被点击时产生的半透明灰色背景
[HTML] 纯文本查看 复制代码
<meta name="msapplication-tap-highlight" content="no">

6、 设置缓存
[Groovy] 纯文本查看 复制代码
<meta http-equiv="Cache-Control" content="no-cache"/>
手机页面通常在第一次加载后会进行缓存,然后每次刷新会使用缓存而不是去重新向服务器发送请求。如果不希望使用缓存可以设置no-cache。

【默认样式的清除】
1、ios系统中元素被触摸时产生的半透明灰色遮罩怎么去掉
现象:
ios用户点击一个链接,会出现一个半透明灰色遮罩, 如果想要禁用,可设置-webkit-tap-highlight-color的alpha值为0,也就是属性值的最后一位设置为0就可以去除半透明灰色遮罩
解决:
[CSS] 纯文本查看 复制代码
a,button,input,textarea{-webkit-tap-highlight-color: rgba(0,0,0,0;)}
2、部分android系统中元素被点击时产生的边框怎么去掉
现象:
android用户点击一个链接,会出现一个边框或者半透明灰色遮罩, 不同生产商定义出来额效果不一样,可设置-webkit-tap-highlight-color的alpha值为0去除部分机器自带的效果
解决:
[CSS] 纯文本查看 复制代码
a,button,input,textarea{

-webkit-tap-highlight-color: rgba(0,0,0,0;)

-webkit-user-modify:read-write-plaintext-only;

}
-webkit-user-modify有个副作用,就是输入法不再能够输入多个字符
另外,有些机型去除不了,如小米2
对于按钮类还有个办法,不使用a或者input标签,直接用div标签
3、webkit表单元素的默认外观怎么重置
[CSS] 纯文本查看 复制代码
element {-webkit-appearance:none;}

4、改变webkit表单输入框placeholder的颜色值
[CSS] 纯文本查看 复制代码
input::-webkit-input-placeholder{color:#AAAAAA;}

input:focus::-webkit-input-placeholder{color:#EEEEEE;}
5、 禁用 select 默认下拉箭头
[CSS] 纯文本查看 复制代码
select::-ms-expand {

display: none;

}
6、禁用 radio 和 checkbox 默认样式
[CSS] 纯文本查看 复制代码
input[type=radio]::-ms-check,input[type=checkbox]::-ms-check{

display: none;

}

【常见的真机测试会出现的bug
1、 有时候,一些需求要求:某个内容不允许复制,但是手机系统默认长按是可复制的
,所以我们需要禁止ios和android用户选中文字
[CSS] 纯文本查看 复制代码
Element {

    -webkit-user-select: none;

    -moz-user-select: none;

    -khtml-user-select: none;

     user-select: none;

}
2、禁止ios 长按时不触发系统的菜单,禁止ios&android长按时下载图片,长时间按住页面出现闪退
[CSS] 纯文本查看 复制代码
element{-webkit-touch-callout: none}
      
3、上下拉动滚动条时卡顿、慢
[CSS] 纯文本查看 复制代码
body ,html{

  -webkit-overflow-scrolling: touch;

  overflow-scrolling: touch;

}

4、开启硬件加速,解决页面闪白,保证动画流畅
[CSS] 纯文本查看 复制代码
element {

   -webkit-transform: translate3d(0, 0, 0);

   -moz-transform: translate3d(0, 0, 0);

   -ms-transform: translate3d(0, 0, 0);

   transform: translate3d(0, 0, 0);

}

5、播放视频不全屏
[CSS] 纯文本查看 复制代码
<video x-webkit-airplay="true" webkit-playsinline="true" preload="auto" autoplay src="http://"></video>

/*x-webkit-airplay="true":支持Airplay的设备(如:音箱、Apple TV)播放*/

/*webkit-playsinline="true":播放视频不全屏*/

6、什么是Retina 显示屏,带来了什么问题
retina:
     一种具备超高像素密度的液晶屏,同样大小的屏幕上显示的像素点由1个变为多个,如在同样带下的屏幕上,苹果设备的retina显示屏中,像素点1个变为4个。
在高清显示屏中的位图被放大,图片会变得模糊,因此移动端的视觉稿通常会设计为传统PC的2倍
解决方式:
        设计稿切出来的图片长宽保证为偶数,并使用backgroud-size把图片缩小为原来的1/2
        例如图片宽高为:200px*200px,那么写法如下
                  
[CSS] 纯文本查看 复制代码
  element{width:100px;height:100px;background-size:100px 100px;}
                     其它元素的取值为原来的1/2,例如视觉稿40px的字体,使用样式的写法为20px
                    
[CSS] 纯文本查看 复制代码
 element{font-size:20px}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马