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

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

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

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

2回答

864閲覧

タブの切り替え時にふわっと表示させたい。

spn

総合スコア37

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2023/06/05 03:54

実現したいこと

タブの切り替え時にふわっと表示させたい。
jQueryでfadeIn(300)を使い切り替えたいが、ふわっと切り替えられない。

該当のソースコード

HTML

1 <nav class="news__tab" aria-label="お知らせメニュー"> 2 <ol> 3 <li class="active"><a>営業情報</a></li> 4 <li><a>その他</a></li> 5 6 </ol> 7 </nav><!-- /.news__tab --> 8 9 <div class="news__area"> 10 <ul class="grid grid-pd2col news-card__list show"> 11 <li class="news-card__item"> 12 <a href="#" class="news-card__link"> 13 <div class="news-card__body"> 14 <time>2020.12.24</time> 15 <p class="news-card__txt">年末最後の営業日は27日になります。</p><!-- /.news-card__txt --> 16 </div><!-- /.news-card__body --> 17 <figure class="news-card__thumb"><img src="img/news01.jpg" alt=""></figure> 18 <!-- /.news-card__thumb --> 19 </a><!-- /.news-card__link --> 20 </li><!-- /.news-card__item --> 21 22 </ul><!-- /.grid grid-pd3colnews-card-list --> 23 24 25 <ul class="grid grid-pd2col news-card__list"> 26 <li class="news-card__item"> 27 <a href="#" class="news-card__link"> 28 <div class="news-card__body"> 29 <time>2023.3.24</time> 30 <p class="news-card__txt">ホームページをリニューアルしました。</p><!-- /.news-card__txt --> 31 </div><!-- /.news-card__body --> 32 <figure class="news-card__thumb"><img src="img/news01.jpg" alt=""></figure> 33 <!-- /.news-card__thumb --> 34 </a><!-- /.news-card__link --> 35 </li><!-- /.news-card__item --> 36 37 </ul><!-- /.grid grid-pd3colnews-card-list --> 38 </div><!-- /.news__aria -->

SCSS

1.news__nav { 2 margin-top: 46px; 3 text-align: center; 4 5 ol { 6 display: flex; 7 justify-content: center; 8 9 li { 10 font-size: 16px; 11 12 13 &:first-child { 14 margin-right: 53px; 15 } 16 17 a:hover, 18 a:focus { 19 color: #978F10; 20 } 21 22 23 24 } 25 } 26 27} 28 29.grid { 30 display: grid; 31 gap: 20px 46px; 32} 33 34//カード 35.news-card__item { 36 background: #F6F6F6; 37 padding: 15px 30px 10px 15px; 38 transition: 0.3s; 39} 40 41.news-card__link { 42 display: flex; 43 flex-direction: row-reverse; 44 justify-content: start; 45 align-items: flex-start; 46} 47 48.news-card__body { 49 margin-left: 30px; 50 51 time { 52 font-size: 14px; 53 line-height: 2.2; 54 } 55} 56 57.news-card__txt { 58 59 font-size: 16px; 60 line-height: 2; 61 62 .blank { 63 display: none; 64 } 65} 66 67.news-card__thumb { 68 69 img { 70 width: 103px; 71 height: 100px; 72 aspect-ratio: 1 / 1; 73 } 74} 75 76@include medium { 77 .news__inner { 78 padding: 60px 25px; 79 } 80 81 .grid-pd2col { 82 display: grid; 83 gap: 20px; 84 grid-template-columns: repeat(2, 1fr); 85 max-width: 1186px; 86 margin: 50px auto 0; 87 } 88 89 90 91} 92 93@include large { 94 .grid-pd2col { 95 gap: 20px 46px; 96 } 97 98 99} 100 101@include x-large { 102 .news-card__txt { 103 .blank { 104 display: block; 105 } 106 } 107} 108 109//ニュースタブ 110.active { 111 text-decoration: underline; 112} 113 114.news__area .show { 115 display: grid; 116} 117 118.news__area ul:not(.show) { 119 display: none; 120}

jQuery

1//ニュース タブ 2//-------------------------------------------- 3$(function () { 4 5 // ①タブをクリックしたら発動 6 $('.news__tab li').click(function () { 7 8 // ②クリックされたタブの順番を変数に格納 9 var index = $('.news__tab li').index(this); 10 11 // ③クリック済みタブのデザインを設定したcssのクラスを一旦削除 12 $('.news__tab li').removeClass('active'); 13 14 // ④クリックされたタブにクリック済みデザインを適用する 15 $(this).addClass('active'); 16 17 // ⑤コンテンツを一旦非表示にし、クリックされた順番のコンテンツのみを表示 18 $('.news__area ul').removeClass('show').fadeOut(300).eq(index).addClass('show').fadeIn(300); 19 20 }); 21}); 22

試したこと

ネットで調べて、fadeIn,fadeOutなど指定しましたがうまく行きません。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2023/06/05 04:30

「うまくいかない」という表現は他者に何も伝えない表現で逆質問を引き出すだけなので避けたほうが良いです。 何を調べて、何を考えて、何を試して、何が起きてるのか を具体的に記載してください
guest

回答2

0

クラスのつけ外しはいるのでしょうか?

javascript

1$('.news__area ul').fadeOut(300).eq(index).fadeIn(300);

参考

javascript

1<style> 2.hoge.active{ 3color:red; 4} 5.fuga{ 6position:absolute; 7} 8</style> 9<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> 10<script> 11$(function(){ 12 $('.hoge:eq(0)').addClass('active'); 13 $('.fuga:gt(0)').hide(); 14 $('.hoge').on('click',function(){ 15 var index=$('.hoge').index(this); 16 $('.hoge').removeClass('active'); 17 $(this).addClass('active'); 18 $('.fuga').fadeOut(300).eq(index).fadeIn(300); 19 }); 20}); 21</script> 22<div class="hoge">hoge1</div> 23<div class="hoge">hoge2</div> 24<div class="hoge">hoge3</div> 25<div class="fuga">fuga1</div> 26<div class="fuga">fuga2</div> 27<div class="fuga">fuga3</div>

投稿2023/06/05 04:12

編集2023/06/05 04:17
yambejp

総合スコア114843

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

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

spn

2023/06/06 07:30 編集

わかりやすいコメントありがとうございます! .news__area .show { display: grid; } .news__area ul:not(.show) { display: none; } で指定しているので、showクラスをつけたり消したり、かつfadeIn,Outを指定したいです。
yambejp

2023/06/06 07:33

fadeInするなら.showしてからフェード処理、fadeOutするならフェード処理してから.showを外す
spn

2023/06/07 21:18

ありがとうございました!解決しました。
guest

0

ベストアンサー

$('.news__area ul').removeClass('show')の時点で、

css

1.news__area ul:not(.show) { 2 display: none; 3}

が有効になって非表示になります。
fadeOut()が最終的にdisplay: none;を付加しますの上記のCSSは不要です。

removeClass と addClass が不要ですね。

$('.news__area ul').fadeOut(300).eq(index).fadeIn(300);

これでふわっと消えて、ふわっと表示されます。ただし、表示位置がずれるので、position:absolute;で位置を固定する必要があります。

css

1.news__area ul { 2 position: absolute; 3}

コメントの内容を考慮したサンプルをCodePenで作成しましたので参考にしてください。

CSS jQuery TabPage FadOut/FadeIn Sample

修正内容
html
news-card__list__wrapperというdivタグでulを囲む
表示したいnews-card__list__wrapperにshowを追加

CSS
下記のコードを追加

css

1.news__area .news-card__list { 2 display: grid; 3} 4.news__area .news-card__list__wrapper:not(.show) { 5 display: none; 6} 7.news__area .news-card__list__wrapper { 8 position: absolute; 9}

投稿2023/06/05 04:10

編集2023/06/05 15:19
hatena19

総合スコア33715

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

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

spn

2023/06/05 08:35

コメントありがとうございます。ふわっと表示されるようになりました。しかしタブの切り替え時、営業情報はレイアウト崩れがないのに、その他のみdisplay blockとなり、表示位置がずれます。display gridで指定しているんですがこれはfadeIn,Outの特徴なのでしょうか。absoluteを使わずに表示できませんか。
spn

2023/06/05 08:40

.news__area .show { display: grid; } .news__area ul:not(.show) { display: none; } で指定しているので、showクラスをつけたり消したり、かつfadeIn,Outを指定したいです。
hatena19

2023/06/05 10:22

fadeIn は要素にインラインで display: block を追加しますので、それでgridが無効になるのが原因でしょう。 HTMLでul要素を囲むタグを追加して、それに対してfadeIn, fadeOutするようにすればどうでしょう。
spn

2023/06/05 13:55

showクラスを消しnews-card__list__wrapperというdivタグでulを囲みました。$('.news-card__list__wrapper').fadeOut(300).eq(index).fadeIn(300);で指定して切り替えはうまくいったのですが、 最初の画面で、どちらも表示されてしまいます。
spn

2023/06/07 21:18

ありがとうございました。解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問