Làm gì đó nếu chiều rộng màn hình nhỏ hơn 960 px


221

Làm cách nào để jQuery có thể làm gì đó nếu chiều rộng màn hình của tôi nhỏ hơn 960 pixel? Mã bên dưới luôn kích hoạt cảnh báo thứ 2, bất kể kích thước cửa sổ của tôi:

if (screen.width < 960) {
    alert('Less than 960');
}
else {

    alert('More than 960');
}

1
Bạn đang làm điều này khi tải trang hay là khi bạn thay đổi kích thước trình duyệt. Luôn luôn là một ý tưởng tốt để nói cảnh báo (screen. Thong) để xem những gì đã được sử dụng để quyết định.
Farrukh Subhani


3
Tại sao không truy vấn phương tiện truyền thông? Tôi có thể nghĩ về bất kỳ trường hợp nào mà các truy vấn phương tiện sẽ không có ích gì. Nếu jdln muốn sử dụng jQuery, hãy giả sử anh ta có lý do chính đáng để làm điều đó.
Luke

Có vô số cách sử dụng cho việc này khi các truy vấn phương tiện không hoạt động, ví dụ: để kích hoạt hiệu ứng nề chỉ khi chiều rộng màn hình lớn hơn 1000 pixel.
Pekka

Câu trả lời:


449

Sử dụng jQuery để có được chiều rộng của cửa sổ.

if ($(window).width() < 960) {
   alert('Less than 960');
}
else {
   alert('More than 960');
}

11
Lưu ý rằng $ (window). Thong () không nhất quán trên các trình duyệt nếu thanh cuộn hiển thị. Tôi đã thấy rằng sử dụng các truy vấn phương tiện javascript đáng tin cậy hơn nhiều.
forsvunnet

9
@forsvunnet Liên kết đó đã chết.
Shah Abaz Khan

2
Liên kết đến các truy vấn phương tiện javascript: w3schools.com/howto/howto_js_media_queries.asp
Timar Ivo Batis

137

Bạn có thể muốn kết hợp nó với một sự kiện thay đổi kích thước:

 $(window).resize(function() {
  if ($(window).width() < 960) {
     alert('Less than 960');
  }
 else {
    alert('More than 960');
 }
});

Đối với RJ:

var eventFired = 0;

if ($(window).width() < 960) {
    alert('Less than 960');

}
else {
    alert('More than 960');
    eventFired = 1;
}

$(window).on('resize', function() {
    if (!eventFired) {
        if ($(window).width() < 960) {
            alert('Less than 960 resize');
        } else {
            alert('More than 960 resize');
        }
    }
});

Tôi đã thử http://api.jquery.com/off/ nhưng không thành công vì vậy tôi đã đi với cờ eventFired.


Gói trong sự kiện thay đổi kích thước chỉ làm cho nó kích hoạt thay đổi kích thước, không tải.
Ted

5
@Ted Đó là lý do tại sao tôi nói combine it with.
jk.

1
@RJ xem các chỉnh sửa ở trên. Tôi không biết ý của bạn là 'xóa' một sự kiện vì vậy tôi đã ngăn chặn sự kiện này nổ súng trở lại.
jk.

1
Thật tuyệt vời, tôi đã cố gắng tìm ra nhiều ngày làm thế nào để liên kết một equalHeightschức năng thay đổi kích thước nhưng chỉ với chiều rộng lớn hơn 768. Điều này hoạt động như một sự quyến rũ. Cảm ơn
Daniel Englander

1
Thật hợp lý khi thêm một sự kiện thay đổi kích thước sau mã đó, để tải bất kỳ kích thước hiện tại nào của trình duyệt, nó sẽ chạy mã cần thiết
BennKingy

16

Tôi khuyên bạn không nên sử dụng jQuery cho việc đó và tiến hành window.innerWidth:

if (window.innerWidth < 960) {
    doSomething();
}

1
Tại sao không nên sử dụng jQuery?
raison

1
@raison Tôi thấy rằng $ (window). thong () sẽ không bao gồm các thanh cuộn - vì vậy nếu bạn có secreen là 960px, nó sẽ trả về 944px và js của bạn sẽ không kích hoạt như dự định. giải pháp này sẽ trả về 960px
Sean T

14

Bạn cũng có thể sử dụng truy vấn phương tiện với javascript.

const mq = window.matchMedia( "(min-width: 960px)" );

if (mq.matches) {
       alert("window width >= 960px");
} else {
     alert("window width < 960px");
}

11

Tôi muốn đề xuất (cần jQuery):

/*
 * windowSize
 * call this function to get windowSize any time
 */
function windowSize() {
  windowHeight = window.innerHeight ? window.innerHeight : $(window).height();
  windowWidth = window.innerWidth ? window.innerWidth : $(window).width();

}

//Init Function of init it wherever you like...
windowSize();

// For example, get window size on window resize
$(window).resize(function() {
  windowSize();
  console.log('width is :', windowWidth, 'Height is :', windowHeight);
  if (windowWidth < 768) {
    console.log('width is under 768px !');
  }
});

Đã thêm vào CodePen: http://codepen.io/moabi/pen/QNRqpY?editors=0011

Sau đó, bạn có thể dễ dàng lấy chiều rộng của cửa sổ với var: windowWidth và height với: windowHeight

nếu không, hãy lấy thư viện js: http://wicky.nillia.ms/enquire.js/


11
// Adds and removes body class depending on screen width.
function screenClass() {
    if($(window).innerWidth() > 960) {
        $('body').addClass('big-screen').removeClass('small-screen');
    } else {
        $('body').addClass('small-screen').removeClass('big-screen');
    }
}

// Fire.
screenClass();

// And recheck when window gets resized.
$(window).bind('resize',function(){
    screenClass();
});

9

sử dụng

$(window).width()

hoặc là

$(document).width()

hoặc là

$('body').width()

8

Tôi biết tôi đến trễ để trả lời điều này, nhưng tôi hy vọng nó có ích cho bất kỳ ai gặp vấn đề tương tự. Nó cũng hoạt động khi làm mới trang vì bất kỳ lý do.

$(document).ready(function(){

if ($(window).width() < 960 && $(window).load()) {
        $("#up").hide();
    }

    if($(window).load()){
        if ($(window).width() < 960) {
        $("#up").hide();
        }
    }

$(window).resize(function() {
    if ($(window).width() < 960 && $(window).load()) {
        $("#up").hide();
    }
    else{
        $("#up").show();
    }

    if($(window).load()){
        if ($(window).width() < 960) {
        $("#up").hide();
        }
    }
    else{
        $("#up").show();
    }

});});

1

Hãy thử mã này

if ($(window).width() < 960) {
 alert('width is less than 960px');
}
else {
 alert('More than 960');
}

   if ($(window).width() < 960) {
     alert('width is less than 960px');
    }
    else {
     alert('More than 960');
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


-8

Không, không ai trong số này sẽ làm việc. Cái bạn cần là cái này !!!

Thử cái này:

if (screen.width <= 960) {
  alert('Less than 960');
} else if (screen.width >960) {
  alert('More than 960');
}

3
Đăng một liên kết không phải là một câu trả lời.
nedaRM

xin lỗi về điều đó tôi đã hơi vội vàng Đợi một chút, tôi đang làm điều đó ngay bây giờ ...
Saurav Chaudhary

xin lưu ý nếu screen.creen (được chụp tốt nhất document.body.clientWidthnếu sử dụng vanilla JS) là <= 960 (có nghĩa là câu lệnh if ở đây) thì chỉ có tùy chọn khác (ELSE là screen. thong> 960) do đó sử dụng khác nếu ở đây là dự phòng. sử dụng document.body.clientWidth <=960 ? handleSmallerThan960() : handleLargerThan960()hoặc một số biến thể. KHÔNG cần người khác nếu (mã dự phòng)
Zargold
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.