• 移动端爬坑总结


    一、ios系统下input框获取焦点后点击空白处不失去焦点

      今天写完项目测试时突然发现ios系统input框获取焦点激活软键盘弹起后点击空白处软键盘怎么都不下去,最后发现原来是点击空白处input框根本就没有失去焦点的问题;然后放在android系统下测试并不存在此问题。

      解决方案:手动添加程序监听input的获取与失去焦点事件,获取焦点时绑定touchend事件,当touchend事件触点在空白处让其input框失去焦点即可

    objBlurFun("input");
    //如果不是当前触摸点不在input上,那么都失去焦点
    function objBlurFun(sDom,time){
        var time = time||300;
        //判断是否为苹果
        var isIPHONE = navigator.userAgent.toUpperCase().indexOf("IPHONE")!= -1;
        if(isIPHONE){
            var obj = document.querySelectorAll(sDom);
            for(var i=0;i<obj.length;i++){
                objBlur(obj[i],time);
            }
    
    
        }
    }
    
    // 元素失去焦点隐藏iphone的软键盘
    function objBlur(sdom,time){
        if(sdom){
            sdom.addEventListener("focus", function(){
                document.addEventListener("touchend", docTouchend,false);
            },false);
    
        }else{
            throw new Error("objBlur()没有找到元素");
        }
        var docTouchend = function(event){
            if(event.target!= sdom){
                setTimeout(function(){
                    sdom.blur();
                    document.removeEventListener('touchend', docTouchend,false);
                },time);
            }
        };
    }

    二、input框获取焦点后软键盘弹起压缩可视界面使其布局错乱

      1)移动端本来自信满满,正得意自己完美的布局时,往往却被弹起的软键盘而打乱。这次项目中遇见fixed定位的返回主页按钮在软键盘升起时因可视界面被压缩导致fixed定位的元素布局错乱

      解决方案:因软键盘从下方弹起,所以我们可以把fixed定位的元素相对顶部定位就可以避免此问题了

      2)常见情况:底部footer采用fixed定位在最底处,安卓机软键盘弹起时将底部footer也随之顶起

      解决方案:

      1.设定body的高度始终为软键盘弹起前的可视界面高度

    $('body').height($('body')[0].clientHeight);

      2.将footer布局由fixed定位改为absolute定位,而且是相对body定位的

    body{
      position:relative    
    }
    
    footer{
      position:absolute;
      left:0;
      right:0;
      bottom:0;
    }
    

      

      

    三、fixed定位的元素在父元素transform属性值不为none时失效

      规范中规定如果元素的transform值不为none,则该元素会生成包含块和层叠上下文,使其fixed定位、absolute定位元素和层叠上下文(index)受到影响

      transform规范

      解决方案:不要将fixed定位的元素放在拥有transform属性的元素内部

    四、滚动条样式不统一

      移动端当内容超出固定高度容器出滚动条时,在安卓手机下滚动条样式较粗,非常难看,在苹果手机下没有滚动条,同时滚动时有阻塞感,滑动不顺畅;

      解决方案:使用第三方组件如:iscroll、mui等

    五、chrome浏览器下显示的最小字体为12px

      因为chrome浏览器使用的为webkit内核,添加以下代码即可:

    html { -webkit-text-size-adjust:none }  

    六、img标签在块元素中底部有3px的空白

    img{
      display:block;  
    }

    七、inline-block元素横排时元素之间有间隙

      原由:间隙由于换行或者回车产生空白符所致

      方法一:

      1)给父元素设置font-size:0;

      2) 给inline-block元素设置实际需要的字体大小

      方法二:

      将元素写在一排显示

    <ul>
           <li>111</li>
           <li>222</li>
           <li>333</li>
           <li>444</li>
           <li>555</li>
           <li>666</li>         
    </ul>
    ul{
      font-size:0  
    }
    
    li{
      font-size:12px;  
    }

     

      

      

    对内贵有志气,对外贵得人心
  • 相关阅读:
    java异常处理
    java基础知识和面试
    mysql 坐标查询计算距离
    TypeScript设计模式之工厂
    TypeScript设计模式之单例、建造者、原型
    从C#到TypeScript
    从C#到TypeScript
    【译】Nodejs最好的ORM
    【开源】NodeJS仿WebApi路由
    从C#到TypeScript
  • 原文地址:https://www.cnblogs.com/worldly1013/p/6188957.html
Copyright © 2020-2023  润新知