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

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

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

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

CSS

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

Q&A

解決済

2回答

1831閲覧

[css]divタグをjqueryで動的にclass属性を変更した時の動作について

ebsffzal

総合スコア107

jQuery

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

CSS

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

0グッド

0クリップ

投稿2016/04/03 11:07

編集2016/04/03 11:27

こんばんは

件名について質問です。

とあるサイト表示で、divタグのclass属性を、画面スクロールの量によって、変更するような画面を作っています。

divタグを例えば

id="nav" class=""

というように記述し、画面スクロール量が上部から20pxいったところでclass属性を固定(class="fixed")にするjqueryを書きました。
fixedはcssを別途記述し、「position: fixed;」という位置固定の指定をしています。

その時の動作として、意図したとおりにdivタグが画面上に固定され、問題なく動作はするのですが、初回表示にdivタグ内の内容物がまったく表示されません。

このような問題はcss側に問題があるのか、js側に問題があるのかかと思いますが、解決のヒントなど、お教えいただけるでしょうか。

よろしくお願い致します。
(回答をいただいた時点でもう少し具体的なコードをお伝えできると思います)

■追記
以下、コードを抜粋しました。
html、css、jsはそれぞれ以下のように書いています。
現象としては、初期表示時に「ここにナビの内容」の文字が見えず、スクロールして初めて内容が見えてくる。という動きになります。

■HTML <div id="container"> <div id="main"> メインの内容 </div> <div id="sidebar"> <div id="nav"> ここにナビの内容 </div> </div> </div> ■css #container:after { display: block; clear: both; content: ""; } #sidebar { position: relative; margin-left: auto; width: 237px; } #nav { width: 237px; height: 265px; background: #fff; } .fixed { position: fixed; top: 20px; } ■jquery側のコード <script type="text/javascript"> jQuery(function($) { var nav = $('#nav'), offset = nav.offset(); $(window).scroll(function () { if($(window).scrollTop() > offset.top - 20) { nav.addClass('fixed'); } else { nav.removeClass('fixed'); } }); }); </script> コード

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

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

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

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

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

kei344

2016/04/03 11:19

具体的なコードがあれば回答できる方もおられるかもしれません。
ebsffzal

2016/04/03 11:27

コードの抜粋を追記いたしました。よろしくお願い致します。
guest

回答2

0

ベストアンサー

どうやら#sidebarに設定しているmargin-left:autoが意図しない形で効いているためのようです。
CSS設定を再考してください。

投稿2016/04/03 15:41

yamato_hikawa

総合スコア2092

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

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

ebsffzal

2016/04/04 00:02

yamato_hikawaさま aKusanoさま 回答ありがとうございました。 その後、ちょこっといじってみたところ、positionとmargin-leftを 調整することで期待どおりの動きになりました。 調整した点は上記の2点で、以下のように記述しました。 ```css #sidebar { position: fixed; margin-left: 930px; width: 237px; } ``` 以上になります。 またの機会がありましたらどうぞよろしくお願い致します。
guest

0

このような問題はcss側に問題があるのか、js側に問題があるのか

①CSSのみオフにした場合 ②JSのみオフにした場合で#navの内容物がどのように表示されるか
試してみましたか?
①・②どちらか一方だけ#navの内容物が初期状態から表示されるようであれば、
原因がどちらにありそうかの判別はできるかと思います。

投稿2016/04/03 12:31

aKusano

総合スコア3763

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問