2017-03-14 3 views
0

位置を固定に変更したときに、Navの浮動が表示されるのはなぜですか?どうすればその問題を解決し、それを中心に保つことができますか?

$(function(){ 
 
    $(window).on('scroll', function(){ 
 
    if($(window).scrollTop() >= $('.sunContainer').height()) { 
 
     $('.nav').addClass('stick'); 
 
    } else { 
 
     $('.nav').removeClass('stick'); 
 
    } 
 
    }); 
 
});
html, body { 
 
    background-size: cover; 
 
    background-attachment: fixed; 
 
    text-align: center; 
 
} 
 

 
.stick { 
 
    position: fixed; 
 
} 
 

 
#wrapper { 
 
    height:3000px; 
 
    width: 100%; 
 
    text-align: center; 
 
} 
 

 

 
.nav { 
 
    width: 90%; 
 
    height:50px; 
 
    background-color:#FFB00F; 
 
    text-align: center; 
 
    margin: 0 auto; 
 

 
} 
 

 
.tab_holder { 
 
    width:1000px; 
 
    text-align: center; 
 

 
} 
 

 
li { 
 
    width:120px; 
 
    height:50px; 
 
    display: inline-block; 
 
    text-align: center; 
 

 
} 
 

 
li:hover { 
 
    background-color:#2F4F4F; 
 
} 
 

 

 
a { 
 
    text-decoration: none; 
 
    color:black; 
 
} 
 

 
.imge { 
 
    margin-top: 50px; 
 
} 
 

 
.sunContainer { 
 
    background-color:#187249; 
 
    width:100%; 
 
    height:700px; 
 
    text-align: center; 
 
} 
 

 
.content { 
 
    background-color: lightsalmon; 
 
    width:100%; 
 
    height:700px; 
 
} 
 

 
.third { 
 
    background-color: khaki; 
 
    width:100%; 
 
    height:700px; 
 
}
<!DOCTYPE> 
 
<html> 
 
    <head> 
 
    <link href='sunset.css' rel='stylesheet'> 
 
    </head> 
 
    <body id='body'> 
 
    <div id='wrapper'> 
 

 
     <div class='sunContainer'> 
 
     
 
     <div class='nav'> 
 
      <ul class='tab_holder'> 
 
      <li><a href='#'>About</a></li> 
 
      <li><a href='#'>The Kidd Frankie</a></li> 
 
      <li><a href='#'>Contact</a></li> 
 
      </ul> 
 
     </div> 
 
     <!-- Find a picture of the rising sun --> 
 
     <img class='imge' src='one.jpg'> 
 
     <img class='imge' src='two.jpg'> 
 
     <img class='imge' src='three.jpg'> 
 
     <img class='imge' src='four.jpg'> 
 
     </div> 
 

 
     <div class='content'> 
 
      Stuff will be here 
 
    </div> 
 

 
    <div class='third'></div> 
 

 

 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
 
    <script src='sunset.js'></script> 
 
    </body> 
 
</html>

ちょうど実験と遊んでいる間、私はこの問題に遭遇しました。問題は、ナビゲーションがクラスを追加するたびに、それがちょうど左に浮かぶということです。最初は私が.stickクラスで何も追加していなかったのでそれがだと思っていましたが、それはその問題ではありません。誰でもこの問題に遭遇しましたか?そのCSSの問題のようであり、jsではないようです。前もって感謝します!

+0

:固定;'は、 '、'、あなたのウィンドウでそれを配置するright'または 'bottom'をleft'を' top'を与える必要があります。 –

答えて

1

margin: 0 autoを使用してナビのセンタリングを行っています。しかし、その.stickクラスによってposition: fixedが割り当てられると、このセンタリング方法はもう働きません。それはposition: relative要素に対してのみ機能します。それは単にそれにleft: 50%;transform: translateX(-50%);を割り当てることによって、デフォルトの位置left: 0

あなたはそれを避けることができるに置かれています固定要素として

あなたのCSSには、他のパラメータが存在しないので、。 `位置と

$(function(){ 
 
    $(window).on('scroll', function(){ 
 
    if($(window).scrollTop() >= $('.sunContainer').height()) { 
 
     $('.nav').addClass('stick'); 
 
    } else { 
 
     $('.nav').removeClass('stick'); 
 
    } 
 
    }); 
 
});
html, body { 
 
    background-size: cover; 
 
    background-attachment: fixed; 
 
    text-align: center; 
 
} 
 

 
.stick { 
 
    position: fixed; 
 
    left: 50%; 
 
    transform: translatex(-50%); 
 
} 
 

 
#wrapper { 
 
    height:3000px; 
 
    width: 100%; 
 
    text-align: center; 
 
} 
 

 

 
.nav { 
 
    width: 90%; 
 
    height:50px; 
 
    background-color:#FFB00F; 
 
    text-align: center; 
 
    margin: 0 auto; 
 

 
} 
 

 
.tab_holder { 
 
    width:1000px; 
 
    text-align: center; 
 

 
} 
 

 
li { 
 
    width:120px; 
 
    height:50px; 
 
    display: inline-block; 
 
    text-align: center; 
 

 
} 
 

 
li:hover { 
 
    background-color:#2F4F4F; 
 
} 
 

 

 
a { 
 
    text-decoration: none; 
 
    color:black; 
 
} 
 

 
.imge { 
 
    margin-top: 50px; 
 
} 
 

 
.sunContainer { 
 
    background-color:#187249; 
 
    width:100%; 
 
    height:700px; 
 
    text-align: center; 
 
} 
 

 
.content { 
 
    background-color: lightsalmon; 
 
    width:100%; 
 
    height:700px; 
 
} 
 

 
.third { 
 
    background-color: khaki; 
 
    width:100%; 
 
    height:700px; 
 
}
<!DOCTYPE> 
 
<html> 
 
    <head> 
 
    <link href='sunset.css' rel='stylesheet'> 
 
    </head> 
 
    <body id='body'> 
 
    <div id='wrapper'> 
 

 
     <div class='sunContainer'> 
 
     
 
     <div class='nav'> 
 
      <ul class='tab_holder'> 
 
      <li><a href='#'>About</a></li> 
 
      <li><a href='#'>The Kidd Frankie</a></li> 
 
      <li><a href='#'>Contact</a></li> 
 
      </ul> 
 
     </div> 
 
     <!-- Find a picture of the rising sun --> 
 
     <img class='imge' src='one.jpg'> 
 
     <img class='imge' src='two.jpg'> 
 
     <img class='imge' src='three.jpg'> 
 
     <img class='imge' src='four.jpg'> 
 
     </div> 
 

 
     <div class='content'> 
 
      Stuff will be here 
 
    </div> 
 

 
    <div class='third'></div> 
 

 

 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
 
    <script src='sunset.js'></script> 
 
    </body> 
 
</html>

+0

左の位置を設定するのが理想的でしょうか:50?それともちょうどナイーブですか? –

+0

50pxまたは50%を意味しますか? 50pxは固定距離を作成しますが、これは大丈夫ですが中央に配置されません(または、ウィンドウがナビよりも100px広い場合のみ)。単に 'left:50% 'と指定すると、ナビゲーションの左端をウィンドウの中央に移動します。それは 'transform:translateX(-50%)'のためのものです:それはNavを自分の幅の半分左に戻します。 – Johannes

+0

ああ、ありがとう、ありがとう! –

関連する問題

 関連する問題