jquery 根据视口大小更改脚本
jquery change script based on viewport size
下面的代码旨在当用户位于页面顶部时将 class .active
添加到我的 div (#sidebar
)。此外,如果在页面的下方,手动展开 div(添加 .active
),则 .active
class 将保留,除非用户向上或向下移动 100px(.line
用作衡量这一点的标记)。
我正在尝试调整以下代码以保留所有这些功能,但在移动设备上完全禁用它,即小于 414px。
有什么建议吗?
/* Expand/Collapse sidebar based on position in page */
var relativeY = $("#sidebar").offset().top - $(".line").offset().top;
$(window).scroll(function(){
relativeY = $("#sidebar").offset().top - $(".line").offset().top;
console.log(relativeY);
if(relativeY > 100 || relativeY < -100 ) {
$("#sidebar").removeClass("active");
$("#sidebarToggle").removeClass("active");
$(".line").css("top","0")
}
else {
$("#sidebar").addClass("active");
$("#sidebarToggle").addClass("active");
}
});
编辑
我已经尝试执行下面的 ($window.width() > 414) 但它不起作用?
/* Expand/Collapse sidebar based on position in page */
var relativeY = $("#sidebar").offset().top - $(".line").offset().top;
$(window).scroll(function(){
relativeY = $("#sidebar").offset().top - $(".line").offset().top;
console.log(relativeY);
if ($window.width() > 414) {
if (relativeY > 100 || relativeY < -100) {
$("#sidebar").removeClass("active");
$("#sidebarToggle").removeClass("active");
$(".line").css("top", "0")
} else {
$("#sidebar").addClass("active");
$("#sidebarToggle").addClass("active");
}
}
});
您可以只使用 $(window).width()
之类的东西来获取 window 的宽度,并相应地 运行 脚本
检查 window.innerWidth - 使用 if 语句有条件地 运行 代码。
如果这不起作用,则不是您列出的问题。
由于 $(window).scroll() 是一个事件处理程序,函数的上下文可能在变量之外 'var relativeY' 导致意外行为。
/* Expand/Collapse sidebar based on position in page */
var relativeY = $("#sidebar").offset().top - $(".line").offset().top;
$(window).scroll(function(){
if(window.innerWidth > 414) {
relativeY = $("#sidebar").offset().top - $(".line").offset().top;
console.log(relativeY);
if(relativeY > 100 || relativeY < -100 ) {
$("#sidebar").removeClass("active");
$("#sidebarToggle").removeClass("active");
$(".line").css("top","0")
}
else {
$("#sidebar").addClass("active");
$("#sidebarToggle").addClass("active");
}
}
});
下面的代码旨在当用户位于页面顶部时将 class .active
添加到我的 div (#sidebar
)。此外,如果在页面的下方,手动展开 div(添加 .active
),则 .active
class 将保留,除非用户向上或向下移动 100px(.line
用作衡量这一点的标记)。
我正在尝试调整以下代码以保留所有这些功能,但在移动设备上完全禁用它,即小于 414px。
有什么建议吗?
/* Expand/Collapse sidebar based on position in page */
var relativeY = $("#sidebar").offset().top - $(".line").offset().top;
$(window).scroll(function(){
relativeY = $("#sidebar").offset().top - $(".line").offset().top;
console.log(relativeY);
if(relativeY > 100 || relativeY < -100 ) {
$("#sidebar").removeClass("active");
$("#sidebarToggle").removeClass("active");
$(".line").css("top","0")
}
else {
$("#sidebar").addClass("active");
$("#sidebarToggle").addClass("active");
}
});
编辑
我已经尝试执行下面的 ($window.width() > 414) 但它不起作用?
/* Expand/Collapse sidebar based on position in page */
var relativeY = $("#sidebar").offset().top - $(".line").offset().top;
$(window).scroll(function(){
relativeY = $("#sidebar").offset().top - $(".line").offset().top;
console.log(relativeY);
if ($window.width() > 414) {
if (relativeY > 100 || relativeY < -100) {
$("#sidebar").removeClass("active");
$("#sidebarToggle").removeClass("active");
$(".line").css("top", "0")
} else {
$("#sidebar").addClass("active");
$("#sidebarToggle").addClass("active");
}
}
});
您可以只使用 $(window).width()
之类的东西来获取 window 的宽度,并相应地 运行 脚本
检查 window.innerWidth - 使用 if 语句有条件地 运行 代码。 如果这不起作用,则不是您列出的问题。
由于 $(window).scroll() 是一个事件处理程序,函数的上下文可能在变量之外 'var relativeY' 导致意外行为。
/* Expand/Collapse sidebar based on position in page */
var relativeY = $("#sidebar").offset().top - $(".line").offset().top;
$(window).scroll(function(){
if(window.innerWidth > 414) {
relativeY = $("#sidebar").offset().top - $(".line").offset().top;
console.log(relativeY);
if(relativeY > 100 || relativeY < -100 ) {
$("#sidebar").removeClass("active");
$("#sidebarToggle").removeClass("active");
$(".line").css("top","0")
}
else {
$("#sidebar").addClass("active");
$("#sidebarToggle").addClass("active");
}
}
});