input获取焦点时底部菜单被顶上来问题的解决办法


Posted in Javascript onJanuary 24, 2017

代码如下所示:

<div class="search-box">
  <input class="search-input" type="text" placeholder="请输入名称">
</div>
<!--底部-->
<div id="mini_nav" class="nav bt-nav">
  <div>
    <ul>
      <li><a href="#"><span class="ico-home"></span>
          主页
        </a>
      </li>
      <li><a class="selected-menu" href="#"><span class="ico-shop"></span>
          商城
        </a>
      </li>
      <li><a href="#"><span class="ico-service"></span>
          服务
        </a>
      </li>
      <li><a href="#"><span class="ico-me"></span>
          我的
        </a>
      </li>
    </ul>
  </div>
</div>

当input获取焦点时底部菜单被顶上来问题解决方案:

1.如果是短页面,比如登录页,上部的登录表单div与底部的菜单div不会重合(两个div是同级的),可以通过设置登录表单div的z-index比底部菜单div的z-index大,这样在页面加载完成后,两个div不会重叠,其层级设置也不会受影响。而在input获取焦点之后,软键盘弹出,两个div发生重叠,因为设置了上部登录表单div的z-index比底部菜单div的z-index大,所以底部菜单div会被挡住,也就是看不到被顶上来的底部菜单,问题自然就迎刃而解了。

注意:z-index在position属性值为默认值static时不生效。

2.如果是长页面,比如商品展示页,上部的商品展示div肯定会与底部菜单div发生重叠,那么设置层级(z-index)肯定是行不通的,于是,可以使用js来控制底部菜单div的position的值来解决:

$('.search-input').bind('focus',function(){
   $('#mini_nav').css('position','static');
 }).bind('blur',function(){
$('#mini_nav').css({'position':'fixed','bottom':'0'});
});

说明:在input获取焦点时,改变底部菜单div的position值为static(默认值,不会脱离文档流),会被放置到document的最后,不会出现在软键盘上面,而当input失去焦点时,再把底部菜单div的position改回fixed,底部菜单div再次回到视口底部,这样问题就解决了。

到这里,我们又有一个疑问了,若软键盘是点击收起键收起的,input不会失去焦点,所以blur事件不会触发,底部菜单div的position也不会改回fixed,于是,我们可以通过捕捉键盘收起事件去改变底部菜单div的position。

那么如何捕捉到软键盘收起事件呢?在网上搜索了很久,终于找到了一个解决方案:根据视口的大小变化判断。

js代码如下:

var wHeight = window.innerHeight; //获取初始可视窗口高度 
window.addEventListener('resize', function(){ //监测窗口大小的变化事件 
  var hh = window.innerHeight; //当前可视窗口高度 
  var viewTop = $(window).scrollTop(); //可视窗口高度顶部距离网页顶部的距离 
  if(wHeight > hh){ //可以作为虚拟键盘弹出事件 
    $(".content").animate({scrollTop:viewTop+100}); //调整可视页面的位置 
    //do something... 
  }else{ //可以作为虚拟键盘关闭事件 
    //$("content").animate({scrollTop:viewTop-100}); 
    $('#mini_nav').css({'position':'fixed','bottom':'0'});//软键盘关闭时改变底部菜单div的position
  } 
  wHeight = hh; 
});

OK,完成。

其实在用户滚动页面时会使input失去焦点触发blur事件,如果要求不是特别严格,这个小问题可以忽略。

以上所述是小编给大家介绍的input获取焦点时底部菜单被顶上来问题的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用JavaScript事件串连执行多个处理过程的方法
Mar 09 Javascript
syntaxhighlighter 使用方法
Jul 02 Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
JS实现文字掉落效果的方法
May 06 Javascript
简单的分页代码js实现
May 17 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
Jan 19 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
Aug 24 Javascript
koa上传excel文件并解析的实现方法
Aug 09 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 #Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 #Javascript
Jquery树插件zTree实现菜单树
Jan 24 #Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 #Javascript
树结构之JavaScript
Jan 24 #Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 #Javascript
javascript 正则表达式去空行方法
Jan 24 #Javascript
You might like
php基础学习之变量的使用
2011/06/09 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python处理文本文件并生成指定格式的文件
2014/07/31 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
python生成器用法实例详解
2019/11/22 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
模具设计与制造专业推荐信
2014/02/16 职场文书
元旦活动感言
2014/03/08 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
合作协议书模板2014
2014/09/26 职场文书
资料员岗位职责
2015/02/10 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
科技馆观后感
2015/06/08 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫