• ios下input获取焦点以及在软键盘的上面


    <!----/此方法基于zepto.min.js-->

    <!--/div元素没有blur和focus事件,blur focus 只适用于input 这类的表格元素-->

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    <title>解决IOS safari在input focus弹出输入法时不支持position fixed的问题</title>
    <style type="text/css" rel="stylesheet">

    .speak-discuss{ position:fixed; bottom:0rem; font-size:0px; padding-top:0.15rem; padding-bottom:0.15rem; background-color:#fff; border-top:0.01rem solid #b3b3b3; z-index:188; 100%; max-750px; left:auto; height:0.85rem; display:none; }
    .speak-discuss form{ padding-left:0.22rem; padding-right:0.2rem; }
    .speak-discuss i{ display:inline-block; vertical-align:middle; 0.47rem; height:0.47rem; background:url(../images/icon29.png) center center no-repeat; background-size:0.47rem 0.47rem; position:absolute; left:0.22rem; top:50%; margin-top:-0.3rem;}
    .speak-discuss input[type=text]{ padding:0px; outline:none; margin-left:0.72rem; border:0.01rem solid #ababab; line-height:0.66rem; padding-left:0.11rem; padding-right:0.11rem; border-radius:0.18rem; max-80%; 80%;}


    </style>
    </head>

    <body>

    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>

    <div class="speak-discuss">
    <form>
    <i></i><input type="text" placeholder="评论" onfocus="javascript:if(this.value=='评论')this.value='';" />
    </form>
    </div>

    <script type="text/javascript" src="zepto.min.js"></script>
    <script type="text/javascript">
    //只作用于输入框获得焦点时
    $('.speak-discuss').focus(function(){
    var _this = this;

    //无键盘时输入框到浏览器窗口顶部距离
    var noInputViewHeight = $(window).height() - $(_this).height();

    //网页正文内容高度
    var contentHeight = $(document).height() - $(_this).height();

    //控制正文内容高度大于一屏,保证输入框固定底部
    contentHeight = contentHeight > noInputViewHeight ? contentHeight : noInputViewHeight;

    //因为弹出输入法需要时间,需延时处理
    setTimeout(function(){

    //弹出输入法时滚动条的起始滚动距离
    var startScrollY = $(window).scrollTop();

    //弹出输入法时输入框到窗口顶部的距离,即到软键盘顶部的起始距离
    var inputTopHeight = $(_this).offset().top - startScrollY;

    //弹出输入法时输入框预期位置,即紧贴软键盘时的位置。因输入框此时处于居中状态,所以其到窗口顶部距离即为需往下移动的距离。
    var inputTopPos = $(_this).offset().top + inputTopHeight;

    //控制div不超出正文范围
    inputTopPos = inputTopPos > contentHeight ? contentHeight : inputTopPos;

    //设置输入框位置使其紧贴输入框
    $(_this).css({'position':'absolute', 'top':inputTopPos });

    //给窗口对象绑定滚动事件,保证页面滚动时div能吸附软键盘
    $(window).bind('scroll', function(){

    //表示此时有软键盘存在,输入框浮在页面上了
    if (inputTopHeight != noInputViewHeight) {

    //页面滑动后,输入框需跟随移动的距离
    var offset = $(this).scrollTop() - startScrollY;

    //输入框移动后位置
    afterScrollTopPos = inputTopPos + offset;

    //设置输入框位置使其紧贴输入框
    $(_this).css({'position':'absolute', 'top':afterScrollTopPos });
    }
    });
    }, 100);
    })

    $(".speak-discuss input").blur(function(){//输入框失焦后还原初始状态
    $(".div-input").removeAttr('style');
    $(window).unbind('scroll');
    });
    </script>

    </body>
    </html>

  • 相关阅读:
    HDMI介绍与流程
    HDMI热插拔检测原理
    在AES标准规范中,分组长度、密钥长度的关系
    WORD-每5行添加一个行号
    FreeRTOS 调试方法(printf---打印任务执行情况)
    SELinux深入理解
    一文彻底明白linux中的selinux到底是什么
    云锵投资 2020 年 06 月简报
    ubuntu16.04 安装opencv-2.4.9
    Windows高DPI系列控件(二)
  • 原文地址:https://www.cnblogs.com/ch-zaizai/p/6110425.html
Copyright © 2020-2023  润新知