zoukankan      html  css  js  c++  java
  • 移动端爬坑总结

    一、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;  
    }

     

      

      

    对内贵有志气,对外贵得人心
  • 相关阅读:
    POJ 2723 Get Luffy Out(2-SAT)
    ZOJ 3613 Wormhole Transport
    HDU 4085 Peach Blossom Spring
    NBUT 1221 Intermediary
    NBUT 1223 Friends number
    NBUT 1220 SPY
    NBUT 1218 You are my brother
    PAT 1131. Subway Map (30)
    ZSTU OJ 4273 玩具
    ZSTU OJ 4272 最佳淘汰算法
  • 原文地址:https://www.cnblogs.com/worldly1013/p/6188957.html
Copyright © 2011-2022 走看看