用tab webview来做了一个资讯页面,在点击搜索框输入弹出键盘的时候,会在软键盘上面出现一个莫名其妙的白条,不知道是哪里出现了问题。如何能将底部tabbar固定在底部,且弹出键盘是不会有异常?代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<script src="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="css/iconfont.css"/>
</head>
<body>
<!--tab-webview-->
<nav class="mui-bar mui-bar-tab" id="bottomx" >
<a id="defaultTab" class="mui-tab-item mui-active" href="main.html">
<span class="mui-icon iconfont icon-home"></span>
<span class="mui-tab-label">首页</span>
</a>
<a class="mui-tab-item" href="shop.html">
<span class="mui-icon iconfont icon-shangcheng1"></span>
<span class="mui-tab-label">商城</span>
</a>
<a class="mui-tab-item" href="desire.html">
<span class="mui-icon iconfont icon-dingzhi"></span>
<span class="mui-tab-label">榜单</span>
</a>
<a class="mui-tab-item" href="msg.html">
<span class="mui-icon iconfont icon-message"><span class="mui-badge">9</span></span>
<span class="mui-tab-label">消息</span>
</a>
<a class="mui-tab-item" href="setting.html">
<span class="mui-icon iconfont icon-iconfontwohover"></span>
<span class="mui-tab-label">我</span>
</a>
</nav>
<script type="text/javascript" charset="utf-8">
mui.init();
var aniShow = {};
//只有ios支持的功能需要在Android平台隐藏;
if (mui.os.android) {
var list = document.querySelectorAll('.ios-only');
if (list) {
for (var i = 0; i < list.length; i++) {
list[i].style.display = 'none';
}
}
//Android平台暂时使用slide-in-right动画
if(parseFloat(mui.os.version)<4.4){
aniShow = "slide-in-right";
}
}
// 指定选项卡文件
var subpages = ['main.html', 'shop.html', 'desire.html', 'msg.html', 'setting.html'];
var subpage_style = {
top: '0px',
bottom: '51px'
};
mui.plusReady(function(){
// 首次启动时使用引导页
//读取本地存储,检查是否为首次启动
var showGuide = plus.storage.getItem("lauchFlag");
//有值,说明已经显示过了,无需显示;
if(showGuide){
//关闭splash页面;
plus.navigator.closeSplashscreen();
plus.navigator.setFullscreen(false);
}else{
//显示启动导航
mui.openWindow({
id:'guide',
url:'./guide.html',
show:{
aniShow:'none'
},
waiting:{
autoShow:true
}
});
}
/**********************************************/
// tabbar设置绝对位置:
document.getElementById('bottomx').style.top = (plus.display.resolutionHeight - 50) + "px";
// webview跳转代码
var self = plus.webview.currentWebview();
for (var i = 0; i < 5; i++) {
var temp = {};
var sub = plus.webview.create(subpages[i], subpages[i], subpage_style);
if (i > 0) {
sub.hide();
}else{
temp[subpages[i]] = "true";
mui.extend(aniShow,temp);
}
self.append(sub);
}
});
//当前激活选项
var activeTab = subpages[0];
var title = document.getElementById("title");
//选项卡点击事件
mui('.mui-bar-tab').on('tap', 'a', function(e) {
var targetTab = this.getAttribute('href');
if (targetTab == activeTab) {
return;
}
//更换标题
// title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;
//显示目标选项卡
//若为iOS平台或非首次显示,则直接显示
if(mui.os.ios||aniShow[targetTab]){
plus.webview.show(targetTab);
}else{
//否则,使用fade-in动画,且保存变量
var temp = {};
temp[targetTab] = "true";
mui.extend(aniShow,temp);
plus.webview.show(targetTab,"fade-in",300);
}
//隐藏当前;
plus.webview.hide(activeTab);
//更改当前活跃的选项卡
activeTab = targetTab;
});
//自定义事件,模拟点击“首页选项卡”
document.addEventListener('gohome', function() {
var defaultTab = document.getElementById("defaultTab");
//模拟首页点击
mui.trigger(defaultTab, 'tap');
//切换选项卡高亮
var current = document.querySelector(".mui-bar-tab>.mui-tab-item.mui-active");
if (defaultTab !== current) {
current.classList.remove('mui-active');
defaultTab.classList.add('mui-active');
}
});
</script>
</body>
</html>
1 个回复
西西里
你的意思是 点击文本框的时候 把“nav” 隐藏是吧,隐藏了你的底布bottom还在,当然有白条了,对于这种子父webview的你可以直接把你文本框所在的子级webview的bottom设成0,直接就盖住了,在你需要的时候在设回来。