我希望将一个div适应用户屏幕的初始高度和宽度。
我认为下面这个简陋的示意图更好地解释了这一点:
#div
{
width: 100%;
height: 100%;
}
似乎不起作用
如果我理解正确的话(这里可能有一些困惑):
#screenFiller {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
border: 15px solid orange
}
你可能需要 position: fixed
版本:http://jsfiddle.net/zRpNp/1/
个人而言,我喜欢纯 CSS 解决方案。只需使用 vh
单位。
#filldiv
{
height: 100vh;
}
这将使div填充浏览器窗口的高度。
此外,您还可以使用vw
单位使其填充浏览器窗口的宽度。
#filldiv
{
width: 100vw;
}
这两个组件都在此代码片段中展示。
我个人喜欢这两个组件,因为它们可以用于动态调整字体大小等内容的大小。
为了澄清...
我会使用vh
和vw
(视口高度和视口宽度)
<html>
<body>
<div style="height:100vh;width:100vw">First screen section, fills a whole screen</div>
<div style="height:100vh;width:100vw;">Hmm... this too</div>
</body>
</html>
100% 不起作用是因为它只填充容器(body)的100%,而不是整个屏幕。
编辑: 一些浏览器不支持它,但我发现大多数现代浏览器都支持。
在 div 中将高度设置为 100% 只意味着您的 div 将填充其容器的 100%,而不是页面的 100%。
我建议您要么在 div 或其容器上使用 min-height 声明,要么使用 JavaScript 查找用户屏幕的初始高度(因为每个人都会略有不同),并将其作为内联样式设置在您的 div 上。
编写类似以下代码的内容将返回屏幕尺寸:
var x,y;
if (self.innerHeight) // all except Explorer
{
x = self.innerWidth;
y = self.innerHeight;
}
else if (document.documentElement && document.documentElement.clientHeight)
// Explorer 6 Strict Mode
{
x = document.documentElement.clientWidth;
y = document.documentElement.clientHeight;
}
else if (document.body) // other Explorers
{
x = document.body.clientWidth;
y = document.body.clientHeight;
}
html, body {
margin: 0;
padding: 0;
min-height: 100%;
width: 100%;
}
div {
height: 100%;
width: 100%;
}
还有一种只使用CSS来完成这个的方法...
http://jsfiddle.net/pxfunc/qQ45K/
html, body {height:100%;} /* explicitly set html & body height */
#fillScreen {
position:relative;
top:0;
left:0;
height:100%;
width:100%;
}
`
<html>
<head>
<title>viewport</title>
<style type="text/css">
* { padding:0; margin:0; }
#test { background:#aaa; height:100%; width:100%; }
</style>
<script type="text/javascript">
window.onload = function() {
var height = getViewportHeight();
alert("This is what it looks like before the Javascript. Click OK to set the height.");
if(height > 0)
document.getElementById("test").style.height = height + "px";
}
function getViewportHeight() {
var h = 0;
if(self.innerHeight)
h = window.innerHeight;
else if(document.documentElement && document.documentElement.clientHeight)
h = document.documentElement.clientHeight;
else if(document.body)
h = document.body.clientHeight;
return h;
}
</script>
</head>
<body>
<div id="test">
<h1>Test</h1>
</div>
</body>
</html>`
<html><body style="margin: 0;">
<div style="height: 100%; width: 100%; background: #ccc;">a</div>
<div style="background: #777;height: 100%; width: 100%">b</div>
</body>
</html>
对我有用
你的 CSS 样式正在寻找一个 id="div"
而不是一个 div 标签。假设你的 div 是由 <body>
或另一个 100%,100% 的 HTML 元素作为父元素,那么这应该可以工作:
<div id="fullViewPort">
My Content
</div>
#fullViewPort {
width: 100%;
height: 100%;
}
<style>
body {
margin:0;
padding:0;
}
#try {
height:100%;
width:100%;
margin:0;
padding:0;
clear:both;
}
#next {
height:10%;
}
</style>
<body>
<div id="try">hello1</div>
<div id="next">hello2</div>
</body>
对我来说可行。