zoukankan      html  css  js  c++  java
  • 移动端iPhone系列适配问题的一些坑

    完成移动端的开发项目之后,发现谷歌自带的调试器似乎没有什么太大的作用,整天借同事的苹果手机测bug,尽管同事不厌其烦,但还是觉得这iPhone系列适配问题适配到想逃逃逃,好在项目已经顺利完成,测试通过,下面就是开发过程中遇到的一些坑。


    5640239-3bab35b8a0d1f922.png
    图片.png
    5640239-a48e25a5e7feeb5b.png
    图片.png
    问题一:苹果手机上的input按钮自带渐变效果

    一样的代码,为啥在苹果手机上的input按钮就自带渐变效果,搞特殊吗?怎么让它显示正常?只需要加上outline:0px; -webkit-appearance:none; 清除原有样式,同时苹果手机上的input按钮自带圆角需要按需要去掉

    outline:0px; -webkit-appearance:none;
    
    5640239-45eed31bd1cbe14a.png
    图片.png
    问题二:表单input元素获取焦点时页面被放大的解决办法

    原因:在iPhone上点击input框会有一个动画效果,这是苹果公司默认设置的,每次input获取焦点都会使页面放大,效果非常不好看,经过多方百度寻求到了一个完美的解决方案

    <!--加入meta标记-->
    <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0, user-scalable=no, width=device-width">
    user-scalable改为no即可。
    
    问题三:iPhone6 Plus大屏幕的适配问题

    有时候,明明已经用了简单粗暴的媒体查询viewport的方式:

    <meta name="viewport" content="width=device-width, initial-scale=0.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
    

    但是,还是会出现不适配的问题哦,那就在原有页面的基础上,再针对相应的屏幕大小单独写样式做适配。

    @media(min-device-375px)and(max-device-667px)and(-webkit-min-device-pixel-ratio:2){
    
    /*iphone6*/
    
    }
    
    @media(min-device-414px)and(max-device-736px)and(-webkit-min-device-pixel-ratio:3){
    
    /*iphone6plus*/
    
    }
    
    5640239-e0779a3e27905188.png
    1.png

    PS:其实也可以直接使用实际的

    device-width:如device-375px 
    
    问题四:移动端input 无法获取焦点的问题

    测试的时候发现了一个bug,移动端的input都不能输入了,后来发现原来是这个梗

      -webkit-user-select :none ;
    

    原因:在移动端开发中,我们有时有针对性的写一些特殊的重置,在整个项目之中有一个需求,禁止用户进行复制.选择.,于是写了这样的代码 -webkit-user-select: none;影响到了input获取焦点。

    办法:把-webkit-user-select:none改成-webkit-user-select:auto;覆盖掉或者直接注释掉就行,我的项目是需要的,就不用注释了。

    问题五:手机端 click 事件会有大约 300ms 的延迟

    原因:手机端事件如下

    touchstart –> touchmove –> touchend or touchcancel –> click
    

    因为在touch事件触发之后,浏览器要判断用户是否会做出双击屏幕的操作,所以会等待300ms来判断,再做出是否触发click事件的处理,所以就会有300ms的延迟

    解决方法:使用touch事件来代替click事件,如 zepto.js 的tap事件和fastClick,注:每次我都使用fastclick解决,这个插件最良心了,都有相应的事件可以代替click事件解决这个问题,大力推荐。

    文末福利:

    福利一:前端,Java,产品经理,微信小程序,Python等资源合集大放送:https://www.jianshu.com/p/e8197d4d9880
    福利二:微信小程序入门与实战全套详细视频教程

    5640239-72f8df7f410780cf
    image

    原文作者:祈澈姑娘
    技术博客:https://www.jianshu.com/u/05f416aefbe1

    90后前端妹子,爱编程,爱运营,爱折腾。
    坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,欢迎大家一起探讨交流。

    文末福利:关注「编程微刊」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。公众号回复“1”,拉你进程序员技术讨论群

  • 相关阅读:
    android 使用广播监听网络状态
    Android获取文件目录路径
    android实现布局重叠
    文件存储到getfilesdir和getcache中的解析问题,原来是权限问题
    CodeForces 1047C Enlarge GCD(数论)题解
    html 空白汉字占位符&#12288;
    js 将json字符串转换为json兑现
    为什么jQuery要返回jQuery.fn.init对象
    transform和transition
    自适应网页设计/响应式Web设计
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701864.html
Copyright © 2011-2022 走看看