弹出键盘时输入框被遮住

完美解决手机网页中输入框被输入法遮挡的问题 之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填。 前提 1.弹出的对话框用display:fixed定位的 2.对话框大小固定 解决办法 css部分 (dlg-top与dlg-bottom为对话框的类,用于确定对话框的定位方式) .dlg-top{ position: fixed; top:100px; left:10%; } .dlg-bottom{ position: fixed; bottom:0px; left:10%; } js部分 “deliver-dlg”为对话框的类 //弹出对话框时,绑定的事件 立即下载

在移动端弹出键盘时输入框被遮住,如果使用定位将输入框(input或者textarea)定位到顶部区域,当手机的输入法为自带输入法时可能问题不大,但是当使用类似搜狗等输入法时,由于会高出自带输入法大约30个像素,就会造成输入框被遮盖一部分的现象。

一、根据输入框的焦点来改变输入框的位置

css 当输入框获得焦点, 改变位置

input:focus{

      position:fixed;

      top:50px;

}

二、点击输入框时加长body元素高度到9999px(当然不一定非要这么高),页面滚动到空白区域,再生成输入框添加在当前一屏页面的最顶端。

<html>
 
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Examples</title>
        <meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no" name="viewport">
        <meta name="description" content="">
        <meta name="keywords" content="">
        <link href="" rel="stylesheet">
        <style type="text/css">
            * {
                margin: 0px;
                padding: 0px;
            }
 
            body,
            html {
                padding: 5px;
            }
 
            .scrollDiv {
                width: 100%;
                height: 900px;
                background: #ccc;
                font-size: 24px;
                padding-top: 40px;
                text-align: center;
            }
 
            input {
                -webkit-appearance: none;
                width: 100%;
                display: block;
                margin: 10px auto;
                border-radius: 0px;
                font-size: 16px;
                padding: 12px 10px;
                box-sizing: border-box;
                box-shadow: none;
                border: 1px solid #666;
 
                position: fixed;
                left: 0;
                bottom: 0;
 
            }
        </style>
    </head>
 
    <body style="">
        <div class="main">
            <div class="scrollDiv">滑到最下面</div>
            <input type="text" placeholder="点击我" id="inp">
        </div>
        <script type="text/javascript">
            var inp = document.querySelector('#inp');
            var bodyHeight = document.body.offsetHeight;
            inp.onclick = function(ev) {
                document.querySelector('body').style.height = '99999px';
                inp.style.position = 'static';
                setTimeout(function() {
                    document.body.scrollTop = document.documentElement.scrollTop = inp.getBoundingClientRect().top + pageYOffset - 5;
                }, 50);
                window.addEventListener('touchmove', fn, false);
            }
 
            inp.onblur = function() {
                    document.querySelector('body').style.height = "auto"
                    document.querySelector('body').removeAttribute('style')
                    window.removeEventListener('touchmove', fn, false)
                }
                //触摸取消blur
            function fn(ev) {
                var _target = ev.target || ev.srcElement;
                if(_target.nodeName != 'INPUT') {
                    inp.blur();
                }
                ev.preventDefault()
            };
        </script>
    </body>
 
</html>

三、scrollIntoViewIfNeeded() 方法

Element.scrollIntoViewIfNeeded()方法用来将不在浏览器窗口的可见区域内的元素滚动到浏览器窗口的可见区域。 如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动。 此方法是标准的Element.scrollIntoView()方法的专有变体。

语法节

element.scrollIntoViewIfNeeded(); // 等同于element.scrollIntoViewIfNeeded(true) 
element.scrollIntoViewIfNeeded(true); 
element.scrollIntoViewIfNeeded(false);

参数节

opt_center

一个 Boolean 类型的值,默认为true:

  • 如果为true,则元素将在其所在滚动区的可视区域中居中对齐。

  • 如果为false,则元素将与其所在滚动区的可视区域最近的边缘对齐。 根据可见区域最靠近元素的哪个边缘,元素的顶部将与可见区域的顶部边缘对准,或者元素的底部边缘将与可见区域的底部边缘对准。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title></title>
    <meta
      name="viewport"
      content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
    />
    <script type="text/javascript" src="js/jquery-1.11.0.js"></script>
    <style type="text/css">
      input {
        width: 100%;
        height: 50px;
        background-color: darkgreen;
        position: fixed;
        left: 0;
        bottom: 0;
      }
      .lo {
        width: 300px;
        height: 50px;
        background-color: darkcyan;
        text-align: center;
        line-height: 50px;
      }
      .xxx {
        width: 50px;
        height: 1000px;
        background-color: darkgrey;
      }
    </style>
  </head>

  <body>
    <div class="lo">点这里</div>
    <div class="xxx"></div>
    <input type="text" id="txt" />
    <div id="dv"></div>
    <script>
      $(".lo").click(function() {
        $("#txt").css({ position: "relative" });
        $("#txt").focus();
      });

      $('input[type="text"],textarea').on("focus", function() {
        var target = this;
        setTimeout(function() {
          target.scrollIntoViewIfNeeded();
          console.log("scrollIntoViewIfNeeded");
        }, 200);
      });
    </script>
  </body>
</html>

 

FSMC驱动LCD显示屏学习2 液晶显示器,简称 LCD(Liquid Crystal Display)相对于上一代 CRT 显示器 (阴极射线管显示器),LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态,但是它的分 子排列却和固体晶体一样非常规则,因此取名液晶。 阅读详情

相关推荐

R语言孟德尔随机化环境搭建:手把手教你搞定gwasvcf、gwasglue等包的安装报错(附本地安装包)

本文详细介绍了R语言中孟德尔随机化环境搭建的全流程,重点解决gwasvcf、gwasglue等包的安装报错问题。从依赖关系解析到GitHub访问配置,再到离线安装方案,手把手教你搭建完整的分析环境,特别适合生物信息学新手快速上手。

weixin_29093017的博客 215

css3软键盘不盖住输入框的方法

css3软键盘不盖住输入框的方法 .p1{ width:100%; height: auto; overflow: hidden; position: relative; } .width100{ width:100%; height: auto; o

newmiracle学习天地 834

Matlab使用GitHub的踩坑记录(持续更新)

Matlab使用git的踩坑记录前言Matlab设置Git的官方帮助文档系统配置新建Git两种代码管理方式典型源代码管理SVN分布式源代码管理 Git注意:SVN和Git都可以用GitHub创建新的库 前言 作为Git初学者,对Git的代码版本管理非常非常喜欢,给了我极大的安全感。特别是想到之前的几次Matlab、Latex和python的代码莫名其妙被折腾没了又没法找回的悲剧,决定慢慢的走入gi...

voluntry的博客 7296

移动端键盘顶起遮挡输入框

先上图 通常在开发中我们会遇到这样输入框被遮挡的问题,那么该怎么解决呢? 方案一(css): 首先,把置底元素设置成,在页面的底部而非屏幕的底部 .page .bottom { position: absolute; bottom: 0; width: 100%; ...

weixin_30466039的博客 847

Cadence PCB SI仿真实战:如何手动添加VIA过孔模型提升板级链路精度

本文详细介绍了在Cadence PCB SI仿真中如何手动添加VIA过孔模型以提升DDR4/5设计的精度。通过参数化建模和三维全波建模技术,工程师可以有效解决高速设计中的信号完整性问题,显著降低仿真误差。文章还提供了实战案例和常见问题解决方案,帮助优化板级链路性能。

weixin_28683391的博客 405

【数据集】MODIS 的 MOD07 大气廓线产品概述及下载

MODIS 的 MOD07 大气廓线产品概述及下载

WW、forever的博客 550

安卓键盘弹出遮挡解决 保证输入框在可视范围 (未完成测试)

安卓键盘弹出会把窗口顶起来,但收起时又不会自动滚动回来,从而导致页面错位等问题 借鉴思路即可,还需要针对项目具体需求进行改造。 思路: 利用安卓键盘弹出收起会触发resize事件来进行相关操作, 在无滚动条的单页面直接用 window.scrollTo 重置下页面位置即可,在有滚动条的页面始终保证输入框在可视区域 已知缺陷: 1. 由于上述所说的 ‘在有滚动条的页面始终保证输入框在可视区域’ ,导致输入框位置可能会变化,给人的感觉是输入框在跳位置一样(实际 scrollIntoView 是滚动到.

凌晨不睡觉 521

RK3568平台开发系列讲解:Linux wifi的调试

查询结果中state为ENABLE,表示hostapd程序启用成功。首先查看设备是否存在。

内核笔记 165

H5移动端弹出键盘时遮挡输入框

在写移动端时,如果使用绝对定位Fixed将输入框(input或者textarea),当手机的输入法为自带输入法时可能问题不大,但是当使用类似搜狗等输入法时,由于会高出自带输入法大约30个像素,就会造成输入框被遮盖一部分的现象,很尴尬。下边简单说说简单的解决思路,当然还有复杂的。 延时一定时间重新定位输入框。 点击输入框时加长body元素高度到9999px(当然不一定非要这么高),页面滚动到空白区域,

qq_37231097的博客 3万+

使用 Simulink/Simscape Electrical/Stateflow,构建一个并网逆变器短路故障动态响应与恢复策略仿真模型

本文基于Simulink平台,详细介绍了并网逆变器短路故障的动态响应与恢复策略仿真方法。主要内容包括:1)构建包含热模型的高精度逆变器模型;2)模拟IGBT击穿和桥臂直通两种短路故障;3)设计基于Stateflow的微秒级快速保护逻辑;4)实现放电、去磁、自检、重启的完整恢复流程。仿真结果表明,所提出的保护方案能在200μs内有效限制故障电流,避免器件永久损坏,并通过标准化恢复流程实现系统安全重启。文章还探讨了硬件保护协同、多级保护和预测保护等高级策略,为电力电子系统安全防护提供了实用解决方案。

xiaoheshang_123的博客 107

柑橘病虫害识别方案总结

1. 方案一 1.1 赛题背景 1.2 数据分析 1.3 模型设计 1.3.1 模型具体方案 1.3.2 模型设计 1.4 实验结果 1.5 总结与展望 2. 方案二 2.1 赛题介绍 2.2 数据分析 2.3 算法方案解析 2.3.1 检测模型 2.3.2 提升策略 2.4 优化思路 3. 方案三 3.1 数据分析 3.1.1 数据说明 3.2 技术展示 3.2.1 数据输入端 3.2.2 模型结构端 3.2.3 上下文信息 3.2.4 训练优化端 3.2.5 创新性分析 3.3 算法及系统思考.....

herosunly的博客 2万+

.h5底部输入框被键盘遮挡问题,或者底部导航栏被弹起问题的解决办法

在h5页面中,当输入框在最底部,点击软键盘会出现输入框会被遮挡问题,或者是底部有一个固定定位的导航,然而每次一点击输入框,弹出输入法的时候,这个底部的导航会随着输入法被顶上去问题。 解决办法:由于弹起输入法,会执行onresize 事件,根据窗口变化,将原先是固定定位的元素改为position:static;。当关闭输入法时再切换回position:absolute;。 var getHeight = $(document).height(); $(window).resize(function(){

qq_38751315的博客 2632

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

UITextField控件处理键盘弹出时遮住输入框的问题。

实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。- (void)keyboa

Luis 1214

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IOS开发键盘弹出时遮住输入框的问题

增加UITextFieldDelegate委托 - (BOOL)textFieldShouldReturn:(UITextField *)textField  {             // When the user presses return, take focus away from the text field so that the keyboard is

iphone开发收集盒子 866

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

UITextField控件处理键盘弹出时遮住输入框的问题

实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。- (void)keyboardWillShow:(NSNotification *)noti{//键盘输入的界面调整...

anziji4025的博客 135

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IOS中弹出键盘时避免键盘遮住输入框

当需要输入文字时,弹出的键盘通常会将需要输入文字的UITextField遮盖住。这段代码利用scrollview来解决这个问题。 - (void)viewDidLoad {     [super viewDidLoad];       // register for keyboard notifications   

COOL_BEAR_XX的专栏 1114

iOS开发键盘弹出时遮住输入框的问题

在UITextFieldDelegate委托中,修改view的frame -(BOOL)textFieldShouldReturn:(UITextField*)textField  {            // When the user pressesreturn, take focus away from the text field so that the keyboard

yhawaii的专栏 1493

[UI控件问题] UITextField控件处理键盘弹出时遮住输入框的问题

实现以下三个方法,如果弹出的键盘会遮住输入框 ,整体的界面会向上移动,这样就不会遮住输入框了。自己增加UITextFieldDelegate委托。只适合iPhone,如果想要支持iPad,只要把216改成iPad上面键盘的高度即可。- (void)keyboardWillShow

蓝海社区 1432

UITextField控件处理键盘弹出时遮住输入框的问题(Andy)

因为种种原因,会导致在软键盘出来的时候,挡住正在输入的文本框,所以这个时候需要一个效果,就是在输入的时候,让后面的View上升: -(IBAction) slideFrameUp; { [self slideFrame:YES]; } -(IBAc

pengruikeji的专栏 1011
上一篇: vue中Class 与 Style 绑定
下一篇: vue中的万能通信机制
春风欲雨
博客等级 码龄7年 68粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值