input获取焦点时底部菜单被顶上来问题的解决办法
发布时间 - 2026-01-10 22:46:52 点击率:次代码如下所示:
<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获取焦点时底部菜单被顶上来问题的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# input
# 获取焦点
# 火狐下input焦点无法重复获取问题的解决方法
# 文本框(input)获取焦点(onfocus)时样式改变的示例代码
# 表单
# 弹出
# 小编
# 值为
# 默认值
# 在此
# 出现在
# 又有
# 而在
# 很久
# 我们可以
# 可以通过
# 迎刃而解
# 给大家
# 请输入
# 可以使用
# 所示
# 再把
# 解决办法
# 所述
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理表单验证?(Requests代码示例)
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
教你用AI将一段旋律扩展成一首完整的曲子
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何挑选优质建站一级代理提升网站排名?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何快速搭建高效服务器建站系统?
如何在IIS管理器中快速创建并配置网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
深圳网站制作培训,深圳哪些招聘网站比较好?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
WordPress 子目录安装中正确处理脚本路径的完整指南
linux写shell需要注意的问题(必看)
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Python结构化数据采集_字段抽取解析【教程】
,南京靠谱的征婚网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Android利用动画实现背景逐渐变暗
北京网站制作公司哪家好一点,北京租房网站有哪些?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
网站页面设计需要考虑到这些问题
Laravel Session怎么存储_Laravel Session驱动配置详解
韩国服务器如何优化跨境访问实现高效连接?
如何在IIS中配置站点IP、端口及主机头?
百度浏览器如何管理插件 百度浏览器插件管理方法
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何自定义建站之星模板颜色并下载新样式?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
JavaScript数据类型有哪些_如何准确判断一个变量的类型
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
深入理解Android中的xmlns:tools属性
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
HTML 中动态设置元素 name 属性的正确语法详解
北京专业网站制作设计师招聘,北京白云观官方网站?

