我有一个非常简单的基于flexbox的布局,带有div和footer。页脚中有一个输入框。每当键盘出现在移动游猎或镀铬中时,在机身和键盘之间会显示一个小间隙。有谁知道如何消除这个可怕的差距?
请在您的设备上查看以下JS Bin:http://jsbin.com/rujexadodu/edit?html,css,js,output
完整代码
<html>
<head>
<title>Test</title>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=0"/>
<style type="text/css">
html {
margin: 0;
padding: 0;
}
body {
height: 100%;
margin: 0;
padding: 0;
border: 1px solid pink;
}
.container {
height: 100%;
display:flex;
flex-direction: column;
margin: 0;
padding: 0;
}
.footer {
height: 30px;
background-color: lightgray;
padding: 10px;
display: flex;
align-items: center;
}
.content {
flex: 1;
height: 100%;
width: 100%;
padding: 10px;
}
input {
width: 100%;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
This is the body content.
</div>
<div class="footer">
<input type="text" />
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
我无法在我的iPad上重现这一点,并且没有任何内容在您的代码中跳出错误。所以它可能只是你所拥有的Safari版本中的一个错误。
我写了一个库调用iFrame-resizer,它保持iFrame高度与内容大小相匹配,并且在不同浏览器中计算内容高度是如此不可靠,以至于我必须提供10种不同的方法来解决它。
它不是一个完整的修复程序,但是,设置body
和html
元素的背景颜色以匹配页脚将使其更不明显。
答案 1 :(得分:0)
我无法重现这一点,因此它必须是浏览器问题。 以下是一些可能会有所帮助的事情:
根据您的safari版本,您可能需要为flexbox添加前缀:
display: -webkit-box; /* Really old */
display: -moz-box; /* Firefox */
display: -ms-flexbox; /* IE */
display: -webkit-flex; /* Chrome & Safari */
display: flex;
和弹性值:
-webkit-box-flex: 1 0 auto;
-moz-box-flex: 1 0 auto;
-webkit-flex: 1 0 auto;
-ms-flex: 1 0 auto;
flex: 1 0 auto;
您需要提供flex
三个值才能正常工作,它们依次为grow
,shrink
和basis
。默认设置是允许增长,禁止收缩,尺寸从“自动”1 0 auto
开始。
我认为如果你没有给孩子们设置flex值,flexbox仍然有用,但是不同的浏览器可以有怪癖......所以我会确保页脚有
flex: 1 0 auto;
而不是
display: flex;
我认为有用的一些链接: