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 相关文章推荐
jquery简单体验
Jan 10 Javascript
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
Js 去掉字符串中的空格(实现代码)
Nov 19 Javascript
jquery validate demo 基础
Oct 29 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
Vue 幸运大转盘实现思路详解
May 06 Javascript
微信小程序返回上一页传参并刷新过程解析
Dec 13 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中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
PHP多进程简单实例小结
2019/11/09 PHP
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
node.js超时timeout详解
2014/11/26 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
js闭包用法实例详解
2016/12/13 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
numpy.where() 用法详解
2019/05/27 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
干部行政关系介绍信
2014/01/17 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
怀念母亲教学反思
2014/04/28 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
公司建议书怎么写
2014/05/15 职场文书
外贸业务员求职信
2014/06/16 职场文书
企业委托书范本
2014/09/13 职场文书
人民币使用说明书
2019/04/17 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
关于MySQL中explain工具的使用
2023/05/08 MySQL