【Labs】親要素にCSSを適用させるこんな方法 - web design lab
にほんブログ村 デザインブログ Webデザインへ PVアクセスランキング にほんブログ村

【Labs】親要素にCSSを適用させるこんな方法


【Labs】親要素にCSSを適用させるこんな方法

こんにちは(・∀・)

親要素から特定する子要素にCSSを適用させる場合、「p > img」みたいな感じでセレクターを利用してCSSを適用させることができます。

その逆で子要素から親要素にCSSを適用させる場合、上記のようにセレクターを使ってCSSを適用させることはできません。

CSS4のセレクターで「:has()」というのがあり、上記のことが実現できますが、まだどのブラウザも対応しておりません。

CSSで完結したいところですが、こんな時はjQueryで解決できます。

Contents

  1. メソッド.parentで親要素にCSSを適用
  2. セレクター:has()で親要素にCSSを適用
  3. メソッド.has()で親要素にClassを追加
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

サンプルデモ1はこちら

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

サンプルデモ2はこちら

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

サンプルデモ3はこちら

関連リンク

CSSで親要素にstyleを適用する
【意外と便利!】特定の子要素を持つ親要素にcssを適用する方法


にほんブログ村 デザインブログ Webデザインへ PVアクセスランキング にほんブログ村