🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1269閲覧

ページ内の一定の高さまでスクロールしたらヘッダー位置が固定されるナビゲーションを作っているが、jQueryで設定したセレクタを追加したらヘッダーの幅が変わってしまうため変わらないようにしたい

syougosty

総合スコア27

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2020/12/30 15:43

ページ内の一定の高さまでスクロールしたらヘッダー位置が固定されるナビゲーションを作っているのですが、jQueryで、設定したセレクタを追加したらヘッダーの幅が変わってしまいます。幅が変わらないようにするにはどうすればよいのでしょうか。

画面をスクロールしてclass="logo_area"のbottomにウィンドウ上部が到達したらjQueryを利用してclass="head_menu"に.fixedを追加してヘッダーが固定されるようにしました。
ヘッダー自体はちゃんと固定されるのですが、固定した際にheaderの幅があらかじめbody{}で設定してある1920pxから1866.670pxに縮んでしまいます。
ヘッダーを固定しても幅が1920pxのままにするようにしたいです。

HTML

1 <h1 class="logo_area"> 2 <a href="top.html"><img class="logo" src="img/logo.png" alt=""></a> 3 </h1> 4 <header class="site-header"> 5 <nav class="head_menu"> 6 <ul> 7 <li class="head_list"><a href="#">aaa</a></li> 8 <li class="head_list"><a href="#">bbb</a></li> 9 <li class="head_list"><a href="#">ccc</a></li> 10 <li class="head_list"><a href="#">ddd</a></li> 11 <li class="head_list"><a href="#">eee</a></li> 12 </ul> 13 </nav> 14 </header>

css

1.logo_area{ 2 height: 100px; 3 background-color: #fff; 4 display: flex; 5 justify-content:center; 6 align-items: center; 7} 8.logo{ 9 height: 60px; 10} 11 12.site-header{ 13 position: relative; 14} 15 16.head_menu{ 17 width: 100%; 18 position: absolute; 19} 20.head_menu.fixed{ 21 position:fixed; 22 width:100%; 23 box-sizing: border-box; 24 top:0; 25} 26.head_menu ul{ 27 display:flex; 28 background-color: #000; 29 height: 100px; 30 justify-content:center; 31 align-items: center; 32} 33 34.head_list{ 35 font-size:25px; 36 padding-right: 50px; 37} 38.head_list::before{ 39 content: ""; 40 border-left: #fff solid 2px; 41 padding-left: 50px; 42} 43.head_list:first-child::before{ 44 display: none; 45}

javascript

1//ヘッダーロゴ格納、メニュー固定 2$(function(){ 3var _window = $(window), 4 _header = $('.head_menu'), 5 logoBottom; 6_window.on('scroll',function(){ 7 logoBottom = $('.logo_area').height(); 8 if(_window.scrollTop() > logoBottom){ 9 _header.addClass('fixed'); 10 } 11 else{ 12 _header.removeClass('fixed'); 13 } 14}); 15_window.trigger('scroll'); 16}); 17

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2021/01/06 05:14

『固定した際にheaderの幅があらかじめbody{}で設定してある1920pxから1866.670pxに縮んでしまいます』とのことですが、問題が再現しませんでした。 当方でご提示のコードを試したところ、headerの幅は変わりませんでした。 ただ、.head_menu のサイズは変わっているようでしたので、そちらのことでしょうか?
guest

回答1

0

ベストアンサー

こんにちは。

headerの幅があらかじめbody{}で設定してある1920pxから1866.670pxに縮んでしまいます

「headerの幅」とは.head_menu の幅のことだと推測して回答します。
サイズを指定してはいかがでしょうか。

css

1.head_menu.fixed{ 2 position:fixed; 3 /* width:100%; */ 4 width:1920px; 5 box-sizing: border-box; 6 top:0; 7}

投稿2021/01/07 04:52

Lhankor_Mhy

総合スコア36928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syougosty

2021/01/08 14:34

ありがとうございます 解決しました! width:100%:だと横幅固定されないのですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問