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 相关文章推荐
ExtJS下grid的一些属性说明
Dec 13 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
js简单工厂模式用法实例
Jun 30 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
浅谈Webpack下多环境配置的思路
Jun 27 Javascript
Vue数据双向绑定的深入探究
Nov 27 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 jQuery
JS实现随机抽选获奖者
Nov 07 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从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
php格式化电话号码的方法
2015/04/24 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
微信支付开发维权通知实例
2016/07/12 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Javascript中的数学函数
2007/04/04 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
python采集博客中上传的QQ截图文件
2014/07/18 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
python访问抓取网页常用命令总结
2017/04/11 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
Python二元赋值实用技巧解析
2019/10/25 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
课堂教学改革实施方案
2014/03/17 职场文书
高三霸气励志标语
2014/06/24 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
应聘教师自荐信
2015/03/26 职场文书
环保主题班会教案
2015/08/13 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android