2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

26日目。jQueryでめっちゃ動くホームページができました!

Posted at

26日目は、ProgateのjQuery上級編をやっつけました。
めっちゃぬるぬる動くホームページが完成して、面白くってあちこち動かしております。
なるほどこうやって作っていたんですね。いろいろ作れそうで楽しみです。

26日目。にんじゃわんこの部屋
http://appdays.herokuapp.com/Day26/

(所要時間4時間!)

メニューの上にマウスをのっけて表示、外して隠す。

lessonの上にマウスを載せたらaddClass、外れたらremoveClass
元のコードを確認して・・・若干ちがう。やっぱり!ほぼカンニング(汗)

 $('.lesson').hover(
    function() {
      $(this).find('.text-contents').addClass('text-active');
    },
    function() {
      $(this).find('.text-contents').removeClass('text-active');
    }
  );

FAQをアコーディオンで開くー閉じる。

OPENとSlideUPだけで実装できるのだっけ。
いっしょうけんめいOPENというクラスをつくっては詰まっていました。

  // アコーディオン

  $('.faq-list-item').click(function() {
    var $answer = $(this).find('.answer');
    if($answer.hasClass('open')) {
      $answer.removeClass('open');
      $answer.slideUp();

      $(this).find('span').text('+');

    } else {
      $answer.addClass('open');
      $answer.slideDown();

      $(this).find('span').text('-');
    }
  });
});

jQuery上級

にんじゃわんこの紙芝居を作りました!

jQueryオブジェクトの構想

配列の「ような」構造をしており、セレクタに合致した要素が配列のように入っています(実際には配列とは異なるものです)。

インデックス番号

配列と同じように0から順にインデックス番号というものが割り振られています。

eqメソッド

jQueryオブジェクトの中から、eqの引数の数字と同じインデックス番号の要素を取得できます。

  $('#hide-btn').click(function() {
    $('.slide').eq(1).fadeOut();
  }); 

indexメソッド

いま見ている要素が配列の何番目から取得したり、配列の番号を指定したりします。

  $('.index-btn').click(function() {
    $('.active').removeClass('active');
    var clickedIndex = $('.index-btn').index($(this));
    $('.slide').eq(clickedIndex).addClass('active');
  });

prevとnext

いま見ている要素の1つ前、1つ後の要素を取得する。

 if ($(this).hasClass('next-btn')) {
        $displaySlide.next().addClass('active');
        
    } else {
      $displaySlide.prev().addClass('active');
    }

最初と最後のスライドの時、ボタンを隠す。

indexでスライドの番号をとってきて、ifで分岐して消す。

    var slideIndex = $('.slide').index($('.active'));
    $('.change-btn').show();
    
    if(slideIndex==0) {
       $('.prev-btn').hide();
    } else if(slideIndex==3) {
       $('.next-btn').hide();
    }

共通部分の関数化

Javascriptとおなじようにまとめられる。

length

要素の数を取得する

if (slideIndex == $('.slide').length -1) {
      $('.next-btn').hide();
      }

フォームを操作しよう

textメソッド

HTMLやCSSの内容を取得したり書き換えたりできる。すごい!

  var title = $('#title').text();
  $('#title-text').text(title);

attrメソッド

HTMLの属性はattrメソッドを用いて「ゲット」と「セット」ができます。

attrってなんて読むんだろう
アトリ?アトレ?あたたぁ?
http://yomikata.org/word/attr

inputの要素取得

.val()で持ってくる。
var text = $('.input').val();

セレクトボックス

<option value = "xxx"> → SELECT値をvalでとってくる。

フォームの入力チェック

option valueが空だったらエラーを返すようにする。
・空だったら・・・「''」シングルクォート2つ

入力欄への自動入力

val()で入力欄にデフォルト値を書き込んでおく。


  // 「.option-btn」要素のclickイベントをつくってください。
  $('.option-btn').click(function(){
    var optionText = $(this).text();
    $('#text-form').val( optionText +'が好きな理由は、');
  })
``

valとtextの違いがいまいちわからない。。。

### セレクトボックスの自動入力
おなじようにできる

### カスタムデータ属性
`data-`で始まる属性を任意につける事ができる

### animateメソッド
アニメーションをつけるにはanimateメソッドを用います$('セレクタ').animate({'プロパティ':''})のように引数は連想配列で指定します

```javascript
  // SNSボタン
  $('.social-icon').hover(
    function(){
      $(this).children('span').animate({
        'font-size':'30px'
      }, 300);
    },
    function(){
      $(this).children('span').animate({
        'font-size':'24px'
      }, 300);
    }
  );

クリックするとアイコンの文字がぷりっと大小します。

scrollTop

ページ内の指定の場所にスクロールする。

  $('#top-btn').click(function(){
    $('html, body').scrollTop(0);
                           //上からゼロ、つまり最上部までスクロール。
  });

ぬるっとスクロール

animateメソッドをはさむと、指定の速度で移動します。

'''javascript
$('#top-btn').click(function(){
$('html, body').animate({
'scrollTop':0
//変更するプロパティ
},500);
//アニメーションのはやさ
});
'''

ナビゲーションをつくる

目次をクリックして記事の位置までスクロールします。

offset

要素の表示位置を取得します。

  $('header a').click(function(){
   var id = $(this).attr('href');
   var position = $(id).offset().top;
    $('html,body').animate({ 
      'scrollTop': position
    }, 500);
  })

完成!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?