Jquery媒体查询

时间:2015-01-26 18:20:22

标签: javascript jquery header media-queries

下面的代码用于根据滚动位置相应地扩展和缩小的标题。脚本本身很好,但在移动版本中,扩展功能是不必要的,所以我想根据屏幕大小禁用它,类似于如何通过媒体查询更改和禁用css。我想根据屏幕大小禁用此代码的执行:

$(document).ready(function() {

  var pageWidth = $(window).width();    
  var scroll = getCurrentScroll();
  var shrinkHeader = 300;

  $(window).scroll(function() {
    var scroll = getCurrentScroll();
      if ( pageWidth > 800 && scroll >= shrinkHeader ) {
           $('.nav_container').addClass('shrink');
      }
      else {
           $('.nav_container').removeClass('shrink');
    }
 });

function getCurrentScroll() {
  return window.pageYOffset || document.documentElement.scrollTop;
}
});

我更新了代码

*****添加了窗口宽度脚本,它可以工作,但它仍然非常错误。当它低于800窗口宽度时,代码不会执行(按预期),但扩展标头的css保持默认(我猜),当它应该是较小标头的css时(removeClass(&) #39;收缩&#39)

3 个答案:

答案 0 :(得分:1)

您需要检查滚动功能内部的窗口宽度,以便每次都是正确的宽度

$(window).scroll(function() {
    var scroll = getCurrentScroll();
    var pageWidth = $(window).width(); 

    if ( pageWidth > 800 ) {
        ( scroll >= shrinkHeader ) ? $('.nav_container').addClass('shrink') : $('.nav_container').removeClass('shrink');
    }
});

从doc ready中删除窗口宽度var。如果页面小于800px,则滚动中的任何内容都不会被执行。如果页面大于800px,您只需要检查缩水头。

如果您希望在调整大小时更改页面,则需要在$(window).resize(function () { }内执行相同的操作,此时应将代码放在函数中并调用它以进行滚动并调整大小

答案 1 :(得分:0)

你正在调整窗口大小吗?如果是这样,那么你需要一个事件处理程序,如:

$(window).resize(function () { 

// Your code here

});

另一点是,您应该检查设备的方向。

答案 2 :(得分:0)

您不应该依赖JavaScript来使您的网页响应不同的分辨率或屏幕尺寸,CSS可以使用media-queries为您处理。

但你可以做这样的事情并创建两个不同的CSS页面。然后,只要屏幕分辨率调整到一定大小,CSS也会改变。

function adjustStyle() {
        var width = 0;
        // get the width.. more cross-browser issues
        if (window.innerHeight) {
            width = window.innerWidth;
        } else if (document.documentElement && document.documentElement.clientHeight) {
            width = document.documentElement.clientWidth;
        } else if (document.body) {
            width = document.body.clientWidth;
        }
        // now we should have it
        if (width < 800) {
            document.getElementById("myCSS").setAttribute("href", "css/narrow.css");
        } else {
            document.getElementById("myCSS").setAttribute("href", "css/main.css");
        }
    }

    // now call it when the window is resized.
    window.onresize = function () {
        adjustStyle();
    };