うたたね

とあるフリーランスのねごと

【jQuery】アコーディオン機能

①答えの部分はCSSで非表示にします。②3つの質問部分には同一のclass名を付与し、③それらのclickイベントを作ります。質問をクリックした時に、対応する答えを隠すのか表示するのかを判断するため、下図のようにopenというclassを用います。答えの表示中はopenをつけ、非表示中は外します。

f:id:utataneclub:20190918193729p:plainf:id:utataneclub:20190918193733p:plain

hasClassメソッド

hasClassメソッドは、引数に指定したクラスを、オブジェクトが持っているか判定するときに使用します。オブジェクトがそのクラスを持っていればtrue、持っていなければfalseを返します。


f:id:utataneclub:20190918193855p:plain

f:id:utataneclub:20190918193947p:plainf:id:utataneclub:20190918193951p:plain

  // 「.faq-list-item」のclickイベントを作成してください
  $('.faq-list-item').click(function(){
    
    //変数の定義: var $変数名 = $('div');
    //変数 $answer = .answerがついたクラスを取得する
    var $answer = $(this).find('.answer');
    
    
    //もし〜なら
    if( $answer.hasClass('.open')) {
      
      //オープンさせる(openを取り除く)
      $answer.removeClass('open');
      
    } else { //ちがうなら〜
    
      //オープンさせない(openを追加する)
      $answer.addClass('open');      
    }
    
  });

間違えた箇所

  • 変数定義の仕方は「var $変数名 = $('div');」
  • 決まった変数はカッコで囲まない
  // FAQのアコーディオン
  $('.faq-list-item').click(function() {
    var $answer = $(this).find('.answer');
    if($answer.hasClass('open')) { 

      //Clickされたら非表示設定の.openを外して表示させる
      $answer.removeClass('open');
      
      // slideUpメソッドを用いて、$answerを隠す動きをつける
      $answer.slideUp();

      // 子要素のspanタグの中身をtextメソッドで書き換える
      $(this).find('span').text('+');

      
    } else {  // .openを持ってないなら〜
      $answer.addClass('open'); 
      // ClickされたらslideUpメソッドを用いて、$answerを表示させる
      $answer.slideDown();
      
      // 子要素のspanタグの中身をtextメソッドで書き換える
      $(this).find('span').text('-');      
      
    }
  });



www.lecabcom.fr

  • コラージュ
  • スプリットスクリーン
  • スクロールに合わせたアニメーション


rollie.co

  • GIFアニメによるゆるいイラストがかわいい


www.lavons.jp

  • 大人女性向けデザイン
  • エレガント
  • 雑誌のような雰囲気


www.hatch-888.jp

  • アニメーションがかわいい
  • 動画かわいい

nana-eyelash.com

  • スタイリッシュ
  • 大人女性向け
  • おしゃれで、かわいい


uminomukou.com

  • 世界観の表現がうまい
  • 遅れて重なるアニメーションが良い


www.tartaruga.co.jp

  • 遅れて表示されるアニメーションがきれい


wearetane.com

https://shibuya-qws.com/

spicato.com



webdesign-trends.net