Javascript jQuery语法滚动淡入和媒体查询
如果两个条件都满足,我想让这个语句淡入一个按钮,屏幕大小超过767px,滚动条超过600,当你向上滚动到顶部时淡出 如果屏幕大小低于767px,我希望这个jQuery为null,不做任何事情 现在它在767以下为空。但是当它在上面时,按钮会淡入,但不再淡入,现在我添加了if语句的第二部分 我的语法有什么错误Javascript jQuery语法滚动淡入和媒体查询,javascript,jquery,html,css,Javascript,Jquery,Html,Css,如果两个条件都满足,我想让这个语句淡入一个按钮,屏幕大小超过767px,滚动条超过600,当你向上滚动到顶部时淡出 如果屏幕大小低于767px,我希望这个jQuery为null,不做任何事情 现在它在767以下为空。但是当它在上面时,按钮会淡入,但不再淡入,现在我添加了if语句的第二部分 我的语法有什么错误 $(window).scroll(function(){ if ($(this).scrollTop() > 600, $(window).width() >= 767)
$(window).scroll(function(){
if ($(this).scrollTop() > 600, $(window).width() >= 767) {
$(".fixed-btn").fadeIn();
}
else {
$(".fixed-btn").fadeOut();
}
});
它是两种情况之间的AND运算符,因此:
$(window).scroll(function(){
if ($(this).scrollTop() > 600 && $(window).width() >= 767) {
$(".fixed-btn").fadeIn();
}
else {
$(".fixed-btn").fadeOut();
}
});
考虑使用
matchMedia()
以获得更好的性能:
// array so You can easily define more media queries in future
var media_queries = [
window.matchMedia('screen and (max-width: 767px)')
];
function mq_0(mq){
if(mq.matches){
// .scroll_600 namespace so You can detach later only this event, in case of using scroll event in other scripts
$(window).on('scroll.scroll_600', function(){
// execute only once when .fixed-btn is not visible yet
if($(this).scrollTop() > 600 && ! $(".fixed-btn").is(':visible')){
$(".fixed-btn").fadeIn();
}
});
}else{
// detach event
$(window).off('.scroll_600');
$(".fixed-btn").fadeOut();
}
}
// call on page load
mq_0(media_queries[0]);
media_queries[0].addListener(function(mq){
mq_0(mq);
});
按钮样式:位置:固定
$(文档).ready(函数(){
$(窗口)。滚动(函数(){
如果($(this).scrollTop()>50&&$(window).width()>=200){
console.log($(this.scrollTop()+''++$(window.width());
$('#mbtn').fadeIn();
}
否则{
$('#mbtn').fadeOut();
}
});
});代码>
点击我
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
我的文字
这非常有效,感谢您在学习语法的同时帮助我解决了这样一个基本问题。&&不仅在js中非常有用。。其他运算符为:| |-->或!=-->另一方面,我将阅读并查看matchMedia()。为什么这是一个更好的性能提升?这是因为您将屏幕大小设置为一个可以重用的变量吗?使用matchMedia()
的主要优点是只调用一次if语句。如果媒体查询匹配,则执行If语句。否则,使用else语句。在我的示例中,当用户访问屏幕大小大于767的网站时,滚动事件从不被触发,并且fadeOut()
只被调用一次。不是每次他改变屏幕大小或滚动。若他将屏幕尺寸缩小到767px,那个么滚动事件只会附加到主体上一次,当然会在页面滚动上触发。