[根据您的评论编辑]
我正在寻求将一个边距顶部动态分配给一个位于固定 div(标题)下方的 div(.main),其尺寸因滚动位置而异。当处于顶部位置 (.smart) 时,此边距顶部应等于 (header) 的高度。
以下代码几乎可以顺利运行:
//first function to check the width of the page and assign a margin-top equal to
//header.outerHeight in its default position
function checkWidth(){
var winInnW = window.innerWidth;
var $headerHeight;
if(winInnW<=640){
$('header').addClass('smart');
var $headerHeight = $('header.smart').outerHeight(true);
$('.main').css({'marginTop': $headerHeight});
}
else
{
$('header').removeClass('smart');
}
if((winInnW>640) && (winInnW<1280)){
$('header').addClass('medium');
var $headerHeight = $('header.medium').outerHeight(true);
$('.main').css({'marginTop': $headerHeight});
}
else
{
$('header').removeClass('medium');
}
if(winInnW>=1280){
$('header').addClass('large');
var $headerHeight = $('header.large').outerHeight(true);
$('.main').css({'marginTop': $headerHeight});
}
else
{
$('header').removeClass('large');
}}
checkWidth();
$(window).on('resize load', checkWidth);
// second function that checks the scroll hiatus and applies styles accordingly called
//on scroll movement only
function checkScroll(){
var y_scroll_pos = window.pageYOffset;
var scroll_pos_test = 10;
if(y_scroll_pos > scroll_pos_test){
$('header').addClass('lower');
}
else{
$('header').removeClass('lower')
}}
$(window).on('scroll', checkScroll);
这里的问题:
- 在某些小窗口上第一次打开页面时,仍然需要刷新以调整边距(关闭和随后以相同分辨率重新打开页面似乎工作正常)
- 即时调整到更小的窗口大小,边距无法调整并需要刷新
关于我做错了什么的任何指示?
赞赏!