我有以下 JQuery 代码:
$(document).ready(function () { var $containerHeight = $(window).height(); if ($containerHeight <= 818) { $('.footer').css({ position: 'static', bottom: 'auto', left: 'auto' }); } if ($containerHeight > 819) { $('.footer').css({ position: 'absolute', bottom: '3px', left: '0px' }); } });
唯一的问题是这仅在浏览器首次加载时才有效,我还想containerHeight在他们调整窗口大小时进行检查?
containerHeight
有任何想法吗?
这是一个使用 jQuery、javascript 和 css 处理调整大小事件的示例。 (如果您只是在调整大小(媒体查询)时对事物进行样式化,那么您最好的选择是 css) http://jsfiddle.net/CoryDanielson/LAF4G/
.footer { /* default styles applied first */ } @media screen and (min-height: 820px) /* height >= 820 px */ { .footer { position: absolute; bottom: 3px; left: 0px; /* more styles */ } }
window.onresize = function() { if (window.innerHeight >= 820) { /* ... */ } if (window.innerWidth <= 1280) { /* ... */ } }
$(window).on('resize', function(){ var win = $(this); //this = window if (win.height() >= 820) { /* ... */ } if (win.width() >= 1280) { /* ... */ } });
这是绑定到调整大小时您会注意到的第一个问题。当用户手动调整浏览器的大小时,调整大小的代码会被调用很多,并且感觉很笨拙。
要限制调用调整大小代码的频率,您可以使用下划线和lodash库中的debounce或throttle方法。
debounce
throttle
如果您没有下划线或lodash,您可以自己实现类似的解决方案: JavaScript/JQuery: $(window).resize 如何在调整大小完成后触发?