zoukankan      html  css  js  c++  java
  • MUI 当input聚焦之后,弹出自带的键盘之后,内容往上移动

    1)有时候为了用户更好的体验,当input聚焦之后,手机自带的键盘弹出的时候,页面的内容也要跟着滚动,好让键盘不遮住input

      只要把input标签放到mui-content这个类里面就可以了

    <div class="mui-content">
        <input />
    </div>

    2) 但是把input标签放入mui-scroll就不行了。

    <div class="mui-content">
        <div class="mui-scroll-wrapper">
          <div class="mui-scroll">
            <input />
          </div>
        </div>
    </div>

    更新解决办法:

     scroll区域滚动是用div来模拟的,自己也有滚动的方法与监听滚动距离的办法。那么当input被遮挡住之后,我可以强行让scroll滚动键盘高度的距离。这样就能解决遮挡了。

    $("#focus").focus(function(){
        mui('.mui-scroll-wrapper').scroll().scrollTo(0,y,100);
    })

    在我写的例子中,input滚动到屏幕底部,就是刚好不遮住input的位置的值为-1545,假设键盘高度为400,那么上面的y值就是 -(1545+400)即-1945。

    最终结果:

    如果input后面最多只有几十px的距离会不会影响失去焦点后整个页面的位置?经过测试是不会的。

    如果想input失去焦点之后回到原来获取焦点的位置,那么可以保存最开始聚焦位置的值,blur的时候再让页面滚动到原来的位置就行了。

    监听滚动距离的方法:

    jq:

    var scroll = mui('.mui-scroll-wrapper').scroll();
    $('.mui-scroll-wrapper' ).on('scroll', function (e ) {
          console.log(scroll.y);
    })

    js:

    var scroll = mui('.mui-scroll-wrapper').scroll();
    document.querySelector('.mui-scroll-wrapper' ).addEventListener('scroll', function (e ) {
          console.log(scroll.y);
    })

    或者是这一种方法:

    window.onresize=function(){
        document.activeElement.scrollIntoView(false);    
    }

    activeElement表示获得焦点的元素,scrollIntoView(),里面的参数是true或者省略的时候就是让该元素顶端对齐,false的时候是底端对齐,。scrollIntoView()也可以换成scrollIntoViewIfNeeded()。

    上面这两种方式不知道在ios的效果如何,没测试过。

  • 相关阅读:
    shell 脚本模板
    运动拉伸
    nature作图要求
    R语言画图曼哈顿图来源网络
    选择合适的统计图形和统计方法|图片来自松哥统计
    GO富集图
    batch gene expression plot
    植物生理生化研究进展
    手机图片
    jquery练习之超链接提示效果
  • 原文地址:https://www.cnblogs.com/zjjDaily/p/6109161.html
Copyright © 2011-2022 走看看