9月更新・前月(8月)の人気記事トップ10 09/02/2024
- ( 01 – ) 【Labs】position:absoluteとwidth:100%を指定すると横幅の設定がうまくいかない場合の対処方法について
- ( 07 ↑) 【Mac】macOSをHigh SierraからMontereyにアップグレード
- ( 03 – ) 【Mac】横画面で撮影した動画をYouTubeショート用にMacのiMovieで縦画面に編集する方法
- ( 10 ↑) 【iPhone / iPad】iPhoneのツイッターアプリでユーザー名をコピーする方法
- (圏外↑) 【Labs】CSSだけでドロップダウンメニュー
- ( 02 ↓) 【jQuery】入門2. jQueryをHTMLに組み込む
- ( 09 ↑) 【Mac】Safariでソースコードを見る方法
- ( 04 ↓) 【jQuery】入門7. jQueryで新しいWindowを開く
- ( 06 ↓) 【2024年5月】iPad画面解像度まとめ
- (圏外↑) 【GIMP】レイヤーをロック
【Labs】親要素にCSSを適用させるこんな方法
こんにちは(・∀・)
親要素から特定する子要素にCSSを適用させる場合、「p > img」みたいな感じでセレクターを利用してCSSを適用させることができます。
その逆で子要素から親要素にCSSを適用させる場合、上記のようにセレクターを使ってCSSを適用させることはできません。
CSS4のセレクターで「:has()」というのがあり、上記のことが実現できますが、まだどのブラウザも対応しておりません。
CSSで完結したいところですが、こんな時はjQueryで解決できます。
Contents
1. メソッド.parentで親要素にCSSを適用
メソッド.parentで親要素にCSSを設定する。
サンプル
Google Hosted LibrariesからjQuery 1.x snippetを<head>
内に読み込みます。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
HTML
<p><img src="bg6.jpg" alt="横浜赤レンガ倉庫の画像" class="c-img-2"></p>
CSS
img.c-img-2 {
width: 100%;
}
JavaScript
$(function() {
$('img.c-img-2').parent('p').css({background:'lightgray','max-width':'600px',margin:'0 auto',padding:'10px'});
});
Result
2. セレクター:has()で親要素にCSSを適用
CSSでは未だ使えませんがjQueryではセレクター:has()は以前から使えます。
セレクター:has()で親要素にCSSを適用させます。
サンプル
HTML
<p><img src="bg6.jpg" alt="横浜赤レンガ倉庫の画像" class="c-img-2"></p>
CSS
.c-img-2 {
width: 100%;
}
JavaScript
$(function() {
$('p:has(img.c-img-2)').css({background:'lightgray','max-width':'600px',margin:'0 auto',padding:'10px'});
});
Result
3. メソッド.has()で親要素にClassを追加
セレクターの:has()よりもメソッド.has()の方が推奨されているようです。
直接メソッド.css()で指定しないで.addClass()メソッドで親要素にclassを追加してみました。
サンプル
HTML
<p><img src="bg1.jpg" alt="HOTEL NEW GRANDの画像" class="c-img-2"></p>
CSS
.c-img-2 {
width: 100%;
}
p.hoge {
border: 5px solid pink;
background: lightgray;
max-width: 600px;
margin: 0 auto;
padding: 10px;
}
JavaScript
$(function() {
$('p').has('img.c-img-2').addClass('hoge');
});
Result
関連リンク
CSSで親要素にstyleを適用する
【意外と便利!】特定の子要素を持つ親要素にcssを適用する方法