質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

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

CSS

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

Q&A

解決済

1回答

323閲覧

jquery スティッキーバーの実装について

SpaceRange

総合スコア24

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2019/01/08 05:43

編集2019/01/08 06:29

前提・実現したいこと

jqueryをつかってスティッキーメニューバーを実装したいのですが、うまくいきません。
上から順に
header
navbar
section
section
section
footer
という構成で、navbarより下に下がったときに画面上部にバーを固定したいです。
cssのposition: stickyもためしましたが、そもそも用途が違っていた為、jqueryでの実装を決めました。

スティッキーバーにしたい.navbarのhtml

<section id="navbar"> <ul class="globalnav"> <li><a href="#">TOP</a></li> <li><a href="#about">ABOUT</a></li> <li><a href="#">SKILLS</a></li> <li><a href="#">WORKS</a></li> <li><a href="#">CONTACT</a></li> </ul> </section>

.navbarに適用しているcss

#navbar { position: absolute; } .globalnav { display: table; table-layout: fixed; margin: 0 auto; background-color: #8b0000; padding: 0; width: 100%; text-align: center; } .globalnav li { display: table-cell; min-width: 50px; } .globalnav a { width: 100%; font-size: 2.0rem; display: block; padding: 20px; text-decoration: none; color: #228b22; border-right: 5px solid #aa0000; } a:visited { color: #228b22; } .globalnav li a:hover{ color: #adff2f; border-bottom: 3px solid #adff2f; transition: .4s; background-color: #aa0000 } .sticky { position: fixed; top: 0;

実現するためのjQuery

$(function () { var nav = $('.navbar'), offset = nav.offset(); $(window).scroll(function () { if($(window).scrollTop() > offset.top) { nav.addClass('sticky'); } else { nav.removeClass('sticky'); } }); });

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

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

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

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

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

yambejp

2019/01/08 05:45

どういった結果を想定しているかわかりません
SpaceRange

2019/01/08 06:30

ありがとうございます。修正いたしました。
guest

回答1

0

ベストアンサー

とりあえず問題と思われる部分を。。。

■ javascript

navbar はidですが、jsで取得しようとしているnavにはクラス指定のものを入れているため、正しく取得できていないと思うので、ID指定が良いと思います。

var nav = $('.navbar'),        ↓ var nav = $('#navbar'),

■ CSS

スクロールした時に

html

1<section id="navbar" class="sticky">中身は省略</section>

としたいのだと思いますが、.stickyのスタイル指定の方が優先度が低いので、クラスを追加しても見た目が変わらないと思います。

なので、.stickyのスタイルを「絶対優先」にしておくか、

css

1.sticky { 2 position: fixed !important; 3 top: 0 !important; 4} 5

あるいは、#navbarのクラスとして指定するか、

css

1#navbar.sticky { 2 position: fixed; 3 top: 0; 4}

のどちらかの対応が必要かと思います。

提示のHTMLとcssは一部分だけだと思いますので、
上記2点を直すだけでSpaceRangeさんの望む形になるかは分かりませんが、解決の糸口にでもなれば。。^^

投稿2019/01/10 02:38

mix-peach

総合スコア1910

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問