3

CSS を使用して特定の ID を持つ div がある場合にのみ、特定の方法でラッパーのスタイルを設定する方法があるかどうか疑問に思っていました。私が持っているとしましょう

<div class="intro_wrapper"></div>

サイト全体のいくつかの場所でパディングを変更したい場合にのみパディングを変更したい

<div class="intro_wrapper">
    <div id="slider"></div>
</div>

中にあり#sliderます。問題は、入れ子になっているときにパディングを少なくしたいので、コンテンツをすべて奇妙に切り捨てず#sliderにマージンを台無しにすることはできません。#slider負のマージンを使用してみましたが、奇妙な方法で画像が切り取られてしまいます。

段落が続く段落のようなものを使用できることを知っているp + pので、私がしようとしているようなことをする方法があるかもしれないと思います。前もって感謝します。

4

2 に答える 2

1

PSLの答えはすでにかなり良いと思いますが(クロスブラウザー、シンプルなど)、実際に親セレクターを使用する必要がある場合は役に立ちません。現時点では、できる限りこれを避けるのが最善ですが、親セレクター (またはそのような代替手段) が必要になる状況がいくつかあります。

親セレクターを絶対に使用する必要がある場合の解決策の 1 つは jquery です。そのセレクター エンジンは:parentセレクターを認識します。たとえば、次のようにします。

$("#slider:parent").addClass('padded_intro_wrapper');

次に、CSS で:

.padded_intro_wrapper
{
  padding: 20px;
}

同様に、#sliderdiv が常に.intro_wrapperdiv 内にあるとは限らない場合は、次のようにすることができます。

$('#slider').closest('.intro_wrapper').addClass('padded_intro_wrapper');

しかし、それは少し面倒になり始めるところです。

編集: 怠惰な場合はフィドル

于 2013-06-05T22:21:13.367 に答える