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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

1回答

1391閲覧

同じクラス名をもつ複数のコンテンツの中である条件を満たしたものにだけstyleを追加するにはどうすれば良いでしょうか

banbbanb0814

総合スコア11

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2017/11/15 11:11

編集2017/11/15 11:15

【やりたい事】
画像とテキストが入ったボックスがそれぞれあり、画像ボックス(.img)の高さよりもテキストボックス(.txtBox)が大きかった際、画像とテキストの入った親のボックス(.cons)にpaddingトップで差分の高さを付与したい。
※画像ボックスの方が大きかった際は付与させない

【不明点】
同じクラス名をもってる際、条件をみたしたものに個別に指定していく記述方法がわからない。。

【試したソース】

html

<div class="contsBox"> <div class="conts"> <div class="img"><img src="http://placehold.jp/640x240.png" width="640" height="240"></div> <div class="txtBox"> <p>ダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミー</p> </div> </div> <div class="conts"> <div class="img"><img src="http://placehold.jp/640x540.png" width="640" height="540"></div> <div class="txtBox"> <p>ダミー</p> </div> </div> </div>

css

.contsBox { width: 960px; margin: auto; padding: 50px 0; } .contsBox .conts { position: relative; margin-bottom: 50px; } .contsBox .conts .img { width: 640px; } .contsBox .conts .txtBox { width: 420px; background: #FBBDBE; padding: 150px 10px; position: absolute; bottom: -10px; right: 0; }

script

$(function () { //高さを取得 var imgHeight = $(".conts .img").outerHeight(); var txtHeight = $(".conts .txtBox").outerHeight(); //txtBox の高さがimgより高かったらcontsに差分のpadding-topを付与 if (imgHeight < txtHeight) { var ptHeight = (txtHeight - imgHeight) -10 +"px"; $(".conts").css("padding-top", ptHeight); } });

勉強のため、出来ればjsでの解決方法を希望です。
どう説明すれば良いのかわからず、説明文がわかりづらいかと思いますが、
どなたかご教示のほど、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

例えばこんな感じで。

JavaScript

1$( function () { 2 $( '.conts' ).each( function () { 3 //高さを取得 4 var imgHeight = $( '.img', this ).outerHeight(); 5 var txtHeight = $( '.txtBox', this ).outerHeight(); 6 //txtBox の高さがimgより高かったらcontsに差分のpadding-topを付与 7 if ( imgHeight < txtHeight ) { 8 var ptHeight = ( txtHeight - imgHeight) -10 + 'px'; 9 $( this ).css( 'padding-top', ptHeight ); 10 } 11 } ); 12} );

【[jQuery].each()とthisを使って要素ごとに繰り返し処理を行う。 – Stella Design】
https://stella-design.biz/2014/10/19/214125.html

【jQueryのeachの仕組みを徹底的にわかりやすく解説してみた。 · DQNEO起業日記】
http://dqn.sakusakutto.jp/2012/05/jquery_each_call.html

投稿2017/11/15 12:03

kei344

総合スコア69407

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

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

banbbanb0814

2017/11/16 05:42

ありがとうございます!! 実装できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問