2012-12-20 23 views
5

Xin chào, tôi có muốn tạo một trang web đáp ứng bằng jQuery hay không (làm theo cách này vì đối tượng đích là trên IE7/8 và css3-mediaqueries .js dường như can thiệp vào giao diện người dùng jQuery mà tôi cũng đang sử dụng). Tôi đang sử dụng tập lệnh sau để phát hiện chiều rộng và chiều cao và áp dụng kiểu cho phù hợp, nó hoạt động tốt cho chiều rộng chứ không phải chiều cao, nó tải SMstyle.css rồi ghi đè theo kiểu style.css. Tôi đang cố gắng học JavaScript nhưng không phải siêu mạnh vào lúc này, tôi biết có một cách dễ dàng hơn! Bất kỳ trợ giúp sẽ được đánh giá cao ...Thay thế các bảng định kiểu với jQuery tùy thuộc vào kích thước màn hình

function adjustStyle(width) { 
     width = parseInt(width); 
     if ((width >= 701) && (width < 1200 
     )) { 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     } else { 
      $("#size-stylesheet").attr("href", "css/style.css"); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).width()); 
     $(window).resize(function() { 
      adjustStyle($(this).width()); 
     }); 
    }); 

    function adjustStyle(height) { 
     height = parseInt(height); 
     if (height < 800 
     ) { 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     } else { 
      $("#size-stylesheet").attr("href", "css/style.css"); 
     } 
    } 

    $(function() { 
     adjustStyle($(this).height()); 
     $(window).resize(function() { 
      adjustStyle($(this).height()); 
     }); 

    }); 
+0

được bạn xác định chiều cao trong PX hoặc phần trăm? Chiều cao sẽ không hoạt động theo phần trăm mà không có mọi thành phần gốc được xác định cụ thể. Bạn có thể cần phải tự động thiết lập chiều cao trong PX thay vì gọi một style sheet ... nếu linh cảm của tôi là chính xác. – Ben

+0

Cảm ơn, Ben Tôi đang gọi nó theo pixel – user1919582

Trả lời

1

Khi giao dịch với bố trí đáp ứng, bạn không thực sự quan tâm đến chiều cao. Khái niệm toàn bộ là nếu nội dung không thể phù hợp với chiều rộng, nó sụp đổ (và do đó làm tăng chiều cao).

EDIT:

Tôi tin rằng bạn cần phải sử dụng $ (document) thay vì $ (this), vì phạm vi $ (this) sẽ khác nhau khi bạn kích hoạt nó bằng tay và khi được kích hoạt bởi một sự kiện thay đổi kích thước.

function adjustStyle() { 
    var width = $(document).width(); 
    var height = $(document).height(); 
    if (((width >= 701) && (width < 1200)) || (height < 800)) { 
     $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
    } else { 
     $("#size-stylesheet").attr("href", "css/style.css"); 
    } 
} 

adjustStyle(); 
$(window).resize(function() { 
    adjustStyle(); 
}); 

Để xem các phạm vi khác nhau, hãy thử này:

$(function() { 
    console.log('Scope', $(this)); // Scope is DOM-element 
    $(window).resize(function() { 
     console.log('Scope', $(this)); // Scope is Window object. 
    }); 
}); 
+1

Tùy thuộc vào người bạn yêu cầu. Một số người cho rằng phản ứng theo chiều dọc cũng rất quan trọng. http://css-tricks.com/responsive-web-above-the-fold/ – Jrod

+0

trong trường hợp này chiều cao là quan trọng vì tôi đang sử dụng hiệu ứng paralax với localScroll và cuộn vật lý bị tắt. Một số người dùng cho trang web có kích thước màn hình máy tính xách tay của 1366x768 vì vậy chiều cao trở thành một yếu tố quan trọng – user1919582

+0

Rất cám ơn Antila! Nó hoạt động hoàn hảo, bạn đã ngăn tôi xé tóc ra! – user1919582

1

refactored (chưa được kiểm tra)

function adjustStyle(width, height) { 
    width = parseInt(width); 
    height = parseInt(height); 
     if (((width >= 701) && (width < 1200)) || (height < 800)) 
      $("#size-stylesheet").attr("href", "css/SMstyle.css"); 
     else 
      $("#size-stylesheet").attr("href", "css/style.css"); 
} 

$(function() { 
    adjustStyle($(this).width(), $(this).height()); 
    $(window).resize(function() { 
     adjustStyle($(this).width(), $(this).height()); 
    }); 
}); 
+0

Tuyệt vời, cảm ơn! Tôi sẽ cung cấp cho nó một đi bây giờ – user1919582

+0

không, có vẻ như nó tải đúng ** SMstyle.css ** cho chiều cao nhưng sau đó bị trả lại cho ** style.css ** và chỉ quay trở lại ** SMstyle.css ** trên cửa sổ thay đổi kích thước ... – user1919582

+0

Trong trường hợp đó, cần có một số tập lệnh khác làm điều đó, tôi cũng muốn xem xét mã HTML của bạn –

Các vấn đề liên quan