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 style 中visibility和display之间的区别
Jan 22 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
Jul 18 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
Nov 17 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
jqPlot jQuery绘图插件的使用
Jun 18 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
json字符串传到前台input的方法
Aug 06 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
axios实现文件上传并获取进度
Mar 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中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
php调用shell的方法
2014/11/05 PHP
php中define用法实例
2015/07/30 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
document.compatMode介绍
2009/05/21 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
在Django中使用Sitemap的方法讲解
2015/07/22 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
Python中作用域的深入讲解
2018/12/10 Python
python3安装crypto出错及解决方法
2019/07/30 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
PHP如何设置和取得Cookie值
2015/06/30 面试题
求职信范文怎么写
2014/01/29 职场文书
大学军训感言400字
2014/03/11 职场文书
求职意向书范文
2014/04/01 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
实施意见格式范本
2015/06/05 职场文书
整脏治乱工作简报
2015/07/21 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python