javascript - $(window).width() 和滚动的问题
问题描述
我试图让此代码仅在设备窗口大于 960px 时才起作用,并且它应该仅在窗口向下滚动 700px 时触发。后一部分有效,但第一部分无效。
该代码在淡入然后淡出的位置上完美运行,但是我不希望它在移动设备上这样做,因为滚动点(700px)太低并且正在产生问题。
$(function () {
var header = $('.fadein');
$(window).scroll(function () {
var scroll = $(window).scrollTop();
if (($(window).width() < 960) && (scroll >= 700)) {
header.removeClass('.fadein').addClass('.fadeout').fadeIn();
} else {
header.removeClass('.fadeout').fadeOut().addClass('.fadein');
}
});
});
解决方案
我认为您的主要问题是不小心使用< 960
了而不是> 960
,但是您也可能会更改为检查,innerWidth
而不是width
您是否真的对window
' 宽度而不仅仅是screen
' 宽度感兴趣。
对于这个演示,我将目标值减少到500
并200
在 SO 片段中更好地工作。(调整浏览器窗口的大小并再次运行代码片段,以查看它在 500 像素阈值上下的工作情况。)
console.log("width: " + $(window).innerWidth() );
$(window).scroll(function () {
const
div = document.getElementById("div"),
scroll = $(window).scrollTop();
if ( ($(window).innerWidth() > 500) && (scroll >= 200) ) {
div.style.backgroundColor = "yellow";
}
else {
div.style.backgroundColor = "white";
}
});
#div{ height: 300vh; border: 1px solid grey; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="div"></div>
推荐阅读
- html - Webpack SVG 渐变问题
- python - Windows XP 上的 PyPy
- c# - 如何在C#中过滤字符
- javascript - 获取所有无序列表元素及其文本 - puppeteer
- spring-boot - Spring Boot Oauth2 资源服务器 UserDetailsService
- javascript - Vue 3 使用异步 json 设置响应式获取
- c++ - 如何使用 C++ 中的迭代器在集合内添加元素?
- javascript - 一键JS幻灯片序列
- wordpress - Weglot 与 WordPress 和 Woocommerce
- angular - 从组件内部发射到超级组件