Javascript 如何将div调整为客户端视口高度?
好的,我想要一系列div,它们是用户浏览器窗口的精确宽度和高度,而不管屏幕大小。我可以用“宽度:100%;”轻松地使div水平拉伸,但我无法计算如何使高度本身拉伸。我猜我需要使用一些javascript来判断高度,然后再使用另一块来调整单独div的大小。不幸的是,我是一个完整的javascript n00b,经过两个小时看似毫无结果的搜索,找到了大约100个“解决方案”,这是我所能得到的(我确信,在某个时候,我可能已经接近了答案):Javascript 如何将div调整为客户端视口高度?,javascript,html,height,Javascript,Html,Height,好的,我想要一系列div,它们是用户浏览器窗口的精确宽度和高度,而不管屏幕大小。我可以用“宽度:100%;”轻松地使div水平拉伸,但我无法计算如何使高度本身拉伸。我猜我需要使用一些javascript来判断高度,然后再使用另一块来调整单独div的大小。不幸的是,我是一个完整的javascript n00b,经过两个小时看似毫无结果的搜索,找到了大约100个“解决方案”,这是我所能得到的(我确信,在某个时候,我可能已经接近了答案): var viewportHeight=“height:+doc
var viewportHeight=“height:+document.documentElement.clientHeight;
getElementById('section-1')。setAttribute('style',viewportHeight);
编辑:
啊,我应该更清楚,我试图让所有三个div占据整个屏幕,所以你必须向下滚动才能看到每个div-几乎就像单独的幻灯片一样。其思想是,每个div占据整个屏幕,因此只有向下滚动才能看到下一部分,而不是三个div占据屏幕的三分之一。这是一个无脚本的解决方案,只是CSS。这假设div直接位于body元素中,或者父元素具有position absolute,并且父元素没有填充
#section-1 {
position: absolute;
height: 100%;
width: 100%;
background: #ff0000;
}
#section-2 {
position: absolute;
width: 100%;
top: 100%;
height: 100%;
background: #00ff00;
}
#section-3 {
position: absolute;
width: 100%;
top: 200%;
height: 100%;
background: #0000ff;
}
请参阅fiddle:如果您还没有尝试过,您将希望通过使用CSS查看DOM中元素的父级:子级继承 我想强调的是,每个人都给你JS黑客来完成这项工作,这不仅是给你提供了过度的杀伤力(你确实要求一个JavaScript解决方案,所以他们给了你!),而且是对标准的背离。HTML用于结构,CSS用于表示,JavaScript用于行为方面。。。将div设置为加载时视口的宽度是一个演示方面,应该在CSS中完成。。。不是JavaScript。如果您试图根据事件或用户交互更改宽度,那么是的JavaScript是您的朋友。。。但是现在只使用HTML和CSS 诀窍在于大多数元素都有一个未定义的高度,而高度后来由元素所包含的内容来定义 如果您想“欺骗”一个元素,使其具有一个不同于默认值的高度,那么您必须显式地定义它。由于您希望从
视口继承高度,因此必须在顶部定义高度并将其降低
您可能很幸运,可以完全避免使用JavaScript(不必要)。只需使用CSS
尝试以下方法:
html, body {
height: 100%;
width: 100%;
}
现在,当您稍后尝试设置div
时,请指定width:100%
,高度将从html-->body-->div继承
尝试一下,看看这是否解决了您的问题-如果没有,请将我们指向一个网站、一个pastebin或一个包含代码的东西,我们可以告诉您如何做(而您发布的代码只是一个JavaScript尝试,它只是代码的一部分-将完整内容发布到服务器或pastebin之类的临时站点)
下面是我编写的一些示例代码(在Chromium中测试):
HTML:
<html>
<head>
<title>Test Divs at 100%</title>
<link rel="stylesheet" type="text/css" href="divtest.css"
</head>
<body>
<div class="test1">aef</div>
<div class="test2">aef</div>
<div class="test3">aef</div>
</body>
</html>
一点jQuery就可以做到这一点:
$(document).ready(function() {
var window_height = $(window).height();
$('#section-1").height(window_height);
});
如果要在调整窗口大小时保持100%的高度:
$(document).ready(function() {
function viewport_height() {
var window_height = $(window).height();
$('#section-1").height(window_height);
}
viewport_height();
$(window).resize(function() {
viewport_height();
});
});
试试这个
window.onload = init;
function init()
{
var viewportHeight = "height:" + document.documentElement.clientHeight+"px;";
document.getElementById('section-1').setAttribute('style', viewportHeight);
}
试试这个
window.onload = init;
function init()
{
var viewportHeight = "height:" + document.documentElement.clientHeight+"px;";
document.getElementById('section-1').setAttribute('style', viewportHeight);
}
欢迎光临{
高度:100vh;
背景:黑色;
颜色:白色;
}
部门项目{
高度:100vh;
背景:黄色;
}
您在屏幕1上的内容
屏幕2上的内容
啊,我应该说得更清楚些,我正试图让所有三个div占据整个屏幕,所以你必须向下滚动才能看到每个div,就像是单独的幻灯片一样。其思想是,每一个div都占据整个屏幕,因此只有向下滚动才能看到下一部分,而不是三个div占据屏幕的三分之一。@tompson啊。。。这几乎是一样的。请看编辑后的css和fiddle。这似乎也不起作用,这里是我得到的。很抱歉,我忘了在第一个示例中添加分号(您在JSFIDLE中使用了分号)。现在一切都好了,伙计,别觉得自己很蠢。很高兴你在问问题。这是一个简单的解决办法:P。只要等到它到达硬sh!实际上,您需要JavaScript(这很简单,但有自己独特的“gotchas”)。别忘了在解决问题的答案上加上“绿色复选标记”。啊哈,选中了!我觉得这很傻,因为名誉的缘故我不能和你在一起。再次欢呼贾斯汀尼仍然对窗口
、文档
、html
、主体
和视口的高度感到困惑。我不知道哪一个是多少。是否有一个很好的教程,我无法通过搜索找到?嗨,谢谢你的建议,但它似乎不适合我,我一定是实施错误?我只是把它放在头部的一些标记之间,还是应该放在其他地方?这是正确的,但是您必须确保首先包含jQuery库。在代码之前添加这个,这正是我在代码中需要的。缩放时地图闪烁停止
window.onload = init;
function init()
{
var viewportHeight = "height:" + document.documentElement.clientHeight+"px;";
document.getElementById('section-1').setAttribute('style', viewportHeight);
}