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

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

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

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

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回答

1269閲覧

JSで実装したタブ切り替えの動作がスムーズでは無いので、修正したい

Nerf.this

総合スコア14

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

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クリップ

投稿2017/12/28 08:51

編集2017/12/28 09:10

質問の閲覧ありがとうございます。
JavaScriptでタブ切り替えの機能を実装したのですが、各タブの初回クリック時のみ一瞬真っ白になり、見栄えが悪いので修正したいのですが、修正点の検討が付かないので、JSに詳しい方がいらっしゃいましたらご助力いただきたいです。

###実装内容

HTML

1<div id="tabs"> 2 <div class="tab active"> 3 <span> 4 タブ1 5 </span> 6 </div> 7 <div class="tab"> 8 <span> 9 タブ2 10 </span> 11 </div> 12 <div class="tab"> 13 <span> 14 タブ3 15 </span> 16 </div> 17</div> 18<div id="contents"> 19 <div class="content active"> 20 コンテンツ1 21 </div> 22 <div class="content"> 23 コンテンツ2 24 </div> 25 <div class="content"> 26 コンテンツ3 27 </div> 28</div>

SCSS

1#tabs { 2 .tab { 3 cursor: pointer; 4 display: inline-block; 5 } 6 7 .active { 8 color: red; 9 } 10} 11 12 13#contents { 14 .content { 15 display: none; 16 } 17 18 .active { 19 display: block; 20 } 21}

JavaScript

1$("#tabs .tab").click(function() { 2 if ($(this).not('active')) { 3 $(this).addClass('active').siblings('.tab').removeClass('active'); 4 var index = $('#tabs .tab').index(this); 5 6 $('#contents .content').eq(index).fadeIn().css('display','').addClass('active').siblings('.content').removeClass('active'); 7 $('#tabs .tab').eq(index).fadeIn().css('display','').addClass('active').siblings('.tab').removeClass('active'); 8 } 9})

###発生している問題・エラーメッセージ
各タブの初回クリック時に、コンテンツ部分一瞬真っ白になる(全てdisplay: none;状態)
2回目からは一瞬真っ白になることなくスムーズに表示される

###追記(上手くいった実装方法。しかし、こちらの場合フェードインの実装方法がわかりません。)

JavaScript

1//対象要素取得 2var tabs = document.getElementById('tabs').getElementsByTagName('div'); 3var pages = document.getElementById('contents').getElementsByTagName('div'); 4 5//タブ切り替え 6function changeTab() { 7 var targetid = this.href.substring(this.href.indexOf('#')+1,this.href.length); 8 9 //指定のタブページだけを表示する 10 for(var i=0; i<pages.length; i++) { 11 if( pages[i].id != targetid ) { 12 pages[i].style.display = "none"; 13 }else { 14 pages[i].style.display = "block"; 15 } 16 } 17 18 //クリックしたタブを前面に表示する 19 for(var i=0; i<tabs.length; i++) { 20 tabs[i].style.zIndex = "0"; 21 } 22 this.style.zIndex = "10"; 23 24 //ページ遷移しないようにfalseを返す 25 return false; 26} 27 28//すべてのタブに対して、クリック時にchangeTab関数が実行されるよう指定する 29for(var i=0; i<tabs.length; i++) { 30 tabs[i].onclick = changeTab; 31} 32 33//最初は先頭のタブを選択しておく 34tabs[0].onclick();

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

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

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

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

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

guest

回答1

0

ベストアンサー

遅れるのは画像でしょうか。それであればプリロードを試してみてください。

【画像の先読み | JavaScript capsule】
http://andante.in/j/画像の先読み/

【【JavaScript】画像をプリロードする】
http://javascript.step-learn.com/contents/J056-preload.html

投稿2017/12/28 08:59

kei344

総合スコア69407

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

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

Nerf.this

2017/12/28 09:10

回答ありがとうございます! 確かに、中身をテキストのみにした場合は初回でもスムーズな表示がされました。 今回表示しているのが、Chart.jsを使用したグラフなので、読み込みが遅いコンテンツであることは間違いないので、仕方ないのかもしれません… 今回質問した方法とは違うのですが、別の方法で実装した場合(追記しておきます)はスムーズに表示されました。 しかし、こちらの場合フェードインの実装に詰まってしまいました。 こちらのフェードインの実装方法についてもし知っていましたら、お暇なときに確認いただけると助かります!
Nerf.this

2017/12/29 08:12

返事が遅れてしまいまして申し訳ありません。 今回の質問の原因について把握出来ましたので、そちらの方の対応をしたいと思います。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問