【发布时间】:2017-12-22 02:40:00
【问题描述】:
我正在尝试获取浏览器窗口的高度和宽度并将其显示在正文上以及更改高度以匹配。
这是我当前的代码:
window.onresize = window.onload = function() {
width = this.innerWidth;
height = this.innerHeight;
document.body.innerHTML = width + 'x' + height; // For demo purposes
}
上面的代码在body上显示宽度和高度ok,现在是时候将它添加到一个css变量中了:
var header = document.querySelector('.header')
window.onresize = window.onload = function() {
width = this.innerWidth;
height = this.innerHeight;
header.style.setProperty('--height', height);
header.style.setProperty('--width', width);
document.body.innerHTML = width + 'x' + height; // For demo purposes
}
我知道代码不正确但我找不到任何可比较的示例,这里有一个小提琴,以防代码不够。
【问题讨论】:
-
您在控制台中查看了吗...?
header是null。您已将代码放在<head>中,而无需等待文档加载,因此选择器将找不到它们的元素。您还在调整大小时重写了<body>,从而完全删除了您的header元素。 -
抱歉,我是 javascript 新手。不明白为什么那是空的,如果我使用 document.getElementById("header") 并将类更改为 id 上的 div 并替换行 header.style.setProperty('--height', height); with document.getElementById("header").style.setProperty('--height', height);我认为这很有效,尽管我的尺寸仍然没有改变
-
在 JSFiddle 中,您已将代码设置为嵌入 "No wrap in ",这意味着它将嵌入到您的页面头部
<script>标签。这部分代码在页面的其余部分之前加载,因此当您的代码行找到header时,它还没有加载,因此找不到。选项是将其包装在onLoad侦听器中(这样它会在页面加载完成时运行),或者将它扔到<body>的末尾(这样它只会在 之后被点击<body>已加载)。