JavaScript:根据媒体查询设置滚动位置变量

时间:2016-05-31 08:47:31

标签: javascript html css responsive-design media-queries

我正在研究Web项目上的淡入/淡出效果。 在我的js上,我必须为滚动位置设置一个值i。即使效果起作用的偏移量。

问题:

  • 由于偏移值不能应用于所有类型的设备 不同的高度。

问题(层次结构):

  1. 如何使静态值动态变化并可变为设备 身高/媒体查询?
  2. 您通常如何减少代码?
  3. 如何从右侧/左侧轻轻触发另一个滑块 效果
  4. 以下是代码:

        // ---### FOUNDATION FRAMEWORK ###---
    $(document).foundation() 
    
    // ---### FADE FX ###---  
    
    // ## SECTION-01: fade out on scroll ##  
    $(window).scroll(function(){  
        // fade out content a  
        $(".j-fadeOut").css("opacity", 1 - $(window).scrollTop() / 470);// 470 should be variable  
    
        // ## SECTION-02: fade in/out on scroll bottom ##  
        var offset = $('.j-fadeOut-2').offset().top;  
        console.log('offset: '+offset);  
        console.log('window: '+$(window).scrollTop())
        if($(window).scrollTop() > offset)  
        {  
          // fade out top part of content b  
            $(".j-fadeOut-2").css("opacity", 1-($(window).scrollTop() - offset)/520);// 520 should be variable
    
          // fade in bottom part of content c
          $(".j-fadeIn").css("opacity", 0 + ($(window).scrollTop() - offset)/ 1100);// 1100 should be variable
        }
      });
    

1 个答案:

答案 0 :(得分:0)

See here for JavaScript Media Queries

您可以使用window.matchMedia在JavaScript中执行媒体查询。例如:

var mediaQuery = window.matchMedia( "(min-width: 800px)" );

结果将作为布尔值存储在mediaQuery.matches中,即

if (mediaQuery.matches) {
  // window width is at least 800px
} else {
  // window width is less than 800px
}

您可以使用其中的多个来适应不同的设备宽度。使用标准的Bootstrap存储桶:

var sizes = ['1200px', '992px', '768px', '480px']; // standard Bootstrap breakpoints
var fadeOutAs = [470, 500, 530, 560]; // this corresponds to your content a fadeout variable. Modify as required per screen size
var fadeOutBs = [520, 530, 540, 550]; // content B fadeout
var fadeOutCs = [1100, 1200, 1300, 1400]; // content C fadeout

var fadeOutA = 0;
var fadeOutB = 0;
var fadeOutC = 0;

for (i = 0; i < sizes.length; i++) {
    var mediaQuery = window.matchMedia( "(min-width: " + sizes[i] + ")" );
    if (mediaQuery.matches) {
        fadeOutA = fadeOutAs[i];
        fadeOutB = fadeOutBs[i];
        fadeOutC = fadeOutCs[i];
    }
}

希望这有帮助