0

[あなたのコメントに従って編集]

スクロールの位置によって寸法が変化する固定 div (ヘッダー) の下にある div (.main) に margin-top を動的に割り当てようとしています。この margin-top は、上部の位置 (.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);

ここでの問題:

  • 特定の小さなウィンドウで最初にページを開くと、マージンを調整するためにまだ更新が必要です(同じ解像度でページを閉じてから再度開くと、正常に動作するようです)
  • その場で小さなウィンドウサイズにサイズ変更すると、マージンの調整に失敗し、更新が必要になります

私が間違っていることについての指針はありますか?

感謝!

4

0 に答える 0