Vấn đề là thanh cuộn.
1008px-992px=16px //the scrollbar dimension
Trong thực tế, nếu bạn thêm overflow: hidden
thuộc tính vào thẻ HTML
, mọi thứ sẽ hoạt động chính xác.
Truy vấn phương tiện và javascript của bạn không tính cùng chiều rộng (một và thẻ còn lại không có thanh cuộn).
Here a JSFiddle example sự cố.
Gỡ rối các trang web, JS (minified) và chức năng (một phần của nó) là:
/prestashop/PRS01/PRS0100014/themes/cenzo/assets/js/theme.js
//.........FOLLOW THIS LINE............................................................................_____HERE______
u.default.responsive = u.default.responsive || {}, u.default.responsive.current_width = (0, s.default)(window).width(), u.default.responsive.min_width = 992, u.default.responsive.mobile = u.default.responsive.current_width < u.default.responsive.min_width, (0, s.default)(window).on("resize", function() {
var e = u.default.responsive.current_width,
t = u.default.responsive.min_width,
n = (0, s.default)(window).width(),
i = e >= t && n < t || e < t && n >= t;
u.default.responsive.current_width = n, u.default.responsive.mobile = u.default.responsive.current_width < u.default.responsive.min_width, i && o()
}), (0, s.default)(document).ready(function() {
u.default.responsive.mobile && o()
})
Khi viewport là 1007 trong u.default.responsive.current_width
bạn có thể thấy 991
u.default.responsive.min_width
là 992
Điều kiện u.default.responsive.current_width < u.default.responsive.min_width
là đúng và chức năng remove node
được kích hoạt.
Để gỡ lỗi này, trên tab "Phần tử" chrome tìm ID phần tử top-menu
và đặt break on... node removal
, kiểm tra ngăn xếp bạn có thể tìm thấy hàm ở trên và tất cả các giá trị. Plugin "Window Resizer" cho chrome giúp bạn kiểm tra kích thước Viewport và Window với nhau.
Giải pháp trong trường hợp của bạn hơi phức tạp vì CMS và/hoặc Khung phức tạp. Bạn có thể thay thế (window).width()
bằng window.innerWidth
có thể bạn giải quyết nó, nhưng tôi không thể biết điều gì sẽ xảy ra với phần còn lại của chủ đề.
Nhưng bạn có thể tìm thấy một số giải pháp ở đây trên stackoverflow:
CSS Media Queries and Firefox's Scrollbar Width
hay đây
$(window).width() not the same as media query
Hope điều này giúp bạn :)
Tôi rất biết ơn mà bạn' đã lục lọi thông qua mã và tìm thấy điều này. Tôi chắc chắn sẽ sửa đổi điều này. Tuy nhiên vấn đề ban đầu vẫn còn tồn tại. Điểm ngắt phản hồi ảo vẫn còn tồn tại giữa 992px và 1008px làm vỡ nhiều thứ hơn chỉ logo. – Howie