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 各种浏览器下获得日期区别
Dec 22 Javascript
Jquery Ajax.ashx 高效分页实现代码
Oct 20 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
Aug 03 Javascript
基于jquery的表头固定的若干方法
Jan 27 Javascript
推荐20家国外的脚本下载网站
Apr 28 Javascript
bootstrap IE8 兼容性处理
Mar 22 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
微信小程序实现发微博功能的示例代码
Jun 24 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
Nov 10 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
MySQL授权问题总结
2007/05/06 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
JavaScript手机振动API
2016/06/11 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
python Scrapy框架原理解析
2021/01/04 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
C语言开发工程师测试题
2016/12/20 面试题
会计电算化专业自荐信
2014/03/15 职场文书
三八活动策划方案
2014/08/17 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
法人代表资格证明书
2015/06/18 职场文书
送给客户微信问候语!
2019/07/04 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
Oracle 触发器trigger使用案例
2022/02/24 Oracle