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 相关文章推荐
JQery jstree 大数据量问题解决方法
Mar 09 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
Jul 17 Javascript
jQuery插件jPaginate实现无刷新分页
May 04 Javascript
JavaScript禁止复制与粘贴的实现代码
May 16 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
微信小程序 登录实例详解
Jan 16 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
Vue.js中使用Vuex实现组件数据共享案例
Jul 31 Javascript
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
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
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP实现简易计算器功能
2020/08/28 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
python机器学习之KNN分类算法
2018/08/29 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
在django中,关于session的通用设置方法
2019/08/06 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
写演讲稿要注意的六件事
2014/01/14 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
经典而简洁的婚礼主持词
2014/03/13 职场文书
主题教育活动总结
2014/05/05 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
信访工作个人总结
2015/03/03 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
基于Python实现西西成语接龙小助手
2022/08/05 Golang