javascript - 当浏览器宽度调整到特定大小以上时如何绕过功能
问题描述
我正在我的一个网站上工作,该网站在页面顶部有一个标题和一个过滤器部分。我要做的是在页面向下滚动时使过滤器部分粘在页面顶部,但前提是设备/浏览器低于特定宽度,在本例中为 1000px。
我的问题是我只能弄清楚如何在调整大小然后刷新后更新浏览器宽度。
document.body.onscroll = scroll;
var navbar = document.getElementById("navbar");
var bodyTop = navbar.offsetTop;
var browserWidth = window.innerWidth;
navbar.innerHTML = browserWidth + " (Current browser width)"
function scroll() {
if (browserWidth < 1000) {
if (document.documentElement.scrollTop > 65) {
navbar.style.position = "fixed";
navbar.style.top = "0";
}
if (document.documentElement.scrollTop < 65) {
navbar.style.position = "relative";
navbar.style.top = "0";
}
}
};
html,
body {
margin: 0;
height: 2000px;
}
#header {
width: 100%;
background-color: darkred;
height: 65px;
position: relative;
}
#navbar {
width: 100%;
height: 85px;
position: relative;
background-color: grey;
}
<div id="header"></div>
<div id="navbar"></div>
解决方案
您可以使用该onresize
事件来更新browserWidth
窗口大小调整时的值:
document.body.onscroll = scroll;
var navbar = document.getElementById("navbar");
var bodyTop = navbar.offsetTop;
var browserWidth = window.innerWidth;
navbar.innerHTML = browserWidth + " (Current browser width)"
window.onresize = function() {
browserWidth = window.innerWidth; //update value of browserWidth
}
function scroll() {
if (browserWidth < 1000) {
if (document.documentElement.scrollTop > 65) {
navbar.style.position = "fixed";
navbar.style.top = "0";
}
if (document.documentElement.scrollTop < 65) {
navbar.style.position = "relative";
navbar.style.top = "0";
}
}
};
推荐阅读
- docker-swarm - Docker Swarm - Prometheus cannot access Cadvisor: dial tcp 10.0.0.50:8090: connect: connection refused
- javascript - Overwriting document in firebase
- php - 数组堆叠在另一个数组上
- web-scraping - 使用 python-requests 抓取网页时如何获取丢失的 HTML 数据
- istio - 方法调用的 Micronaut 和 OpenTracing
- swift - initializing static variable in different ways with swift
- c - strcat 函数不适用于指针
- swift - How do I update UserDefaults after deleting an MKAnnotation?
- java - got 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示
- multithreading - 调用的 C# Thread 方法因工作线程和主 UI 线程而异