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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

jQuery

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

Q&A

解決済

1回答

2952閲覧

クリックで画像の高さをアニメーションで変更させたい

jyoze

総合スコア48

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

jQuery

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

0グッド

0クリップ

投稿2017/06/18 03:46

#クリックで画像の高さをアニメーションで変更させたい
初歩的な質問かもしれませんが、上手くいかないのでご教示ください。

画像を50pxだけ表示し、画像をクリックすると残りの高さ分の画像をアニメーションで表示させたいのですが、アニメーション(下にゆっくりスライド)だけが上手くいきません。
いろいろ試してはいるのですが、ダメでした・・・。
jQueryを利用しています。

ul li { overflow: hidden; height: 50px; cursor: pointer; } ul li.active { height: auto; } $(function(){ $('ul li').on('click', function(){ $(this).toggleClass('active'); }); });

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

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

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

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

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

kei344

2017/06/18 09:43

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
guest

回答1

0

ベストアンサー

autoに向けてのアニメーションは出来ないので、高さを事前に取得して指定するか、もし高さが固定ならCSSで処理できます。

CSS

1ul li { 2 overflow: hidden; 3 /*height: 50px;*/ 4 cursor: pointer; 5 padding: 1em 0; 6} 7ul li img {/*ADD*/ 8 transition: all 1s ease 0s; 9 margin-bottom: -100px; 10} 11 12ul li.active img/*ADD*/ { 13 /*height: auto;*/ 14 margin-bottom: 0; 15} 16```**動くサンプル:**[https://jsfiddle.net/3kx22v27/](https://jsfiddle.net/3kx22v27/) 17 18--- 19 20高さを取得する↓サンプル。 21 22```CSS 23ul li { 24 overflow: hidden; 25 height: 50px; 26 cursor: pointer; 27 margin: 1em 0; 28 position: relative; 29 transition: all 1s ease 0s; 30} 31ul li img { 32 position: absolute; 33 top:0; 34 left:0; 35} 36 37ul li.active { 38 /*height: auto;*/ 39}

JavaScript

1$( function() { 2 $( 'ul li' ).each( function() { 3 var height = $( this ).find( 'img' ).height(); 4 $( this ).on( 'click', function() { 5 if ( $( this ).hasClass( 'active' ) ) { 6 $( this ).stop().animate( { 'height': '50px' }, 'slow' ); 7 } else { 8 $( this ).stop().animate( { 'height': height + 'px' }, 'slow' ); 9 } 10 $( this ).toggleClass( 'active' ); 11 } ); 12 } ); 13} ); 14```**動くサンプル:**[https://jsfiddle.net/3kx22v27/1/](https://jsfiddle.net/3kx22v27/1/)

投稿2017/06/18 07:28

kei344

総合スコア69407

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

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

jyoze

2017/06/18 09:38

kei344さん ご回答ありがとうございます。 高さを取得する方法で無事解決できました! デザイン上、最初に表示する画像の高さがバラバラなので、cssのnth-of-typeを使い、 一つ一つにheightを指定しました。 書き方が合っているかわかりませんが、無事に動きました。 本当にありがとうございます。 $( function() { $( 'ul li' ).each( function() { var height = $( this ).find( 'img' ).height(); $( this ).on( 'click', function() { if ( $( this ).hasClass( 'active' ) ) { $( 'ul li:nth-of-type(1)' ).stop().animate( { 'height': '50px' }, 'slow' ); $( 'ul li:nth-of-type(2)' ).stop().animate( { 'height': '30px' }, 'slow' ); $( 'ul li:nth-of-type(3)' ).stop().animate( { 'height': '10px' }, 'slow' ); $( 'ul li:nth-of-type(4)' ).stop().animate( { 'height': '18px' }, 'slow' ); $( 'ul li:nth-of-type(5)' ).stop().animate( { 'height': '50px' }, 'slow' ); } else { $( this ).stop().animate( { 'height': height + 'px' }, 'slow' ); } $( this ).toggleClass( 'active' ); } ); } ); } );
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問