2017-03-17 11 views
0

中間要素を使って両方の隣接要素を対象にすることが可能かどうかを知りたいですか?例えばdivの隣り合った要素を両方とも対象にすることは可能ですか?

<div> 
    <span class="icon">icon</span> 
    <input id="input" class="input error" type="text" /> 
    <label for="input"></label> 
<div> 

入力は、私がラベルと色の赤を持っているスパンをターゲットにしたいエラークラスがあります。私はスパンとは運がなかったしましたが

input.error ~ label { 
    color: red; 
} 

は、私は次のと ラベル赤を作ることに成功しました。可能であれば誰か教えてもらえますか?もしそうなら、助けてください。

+2

ない可能性がありますが、入力なぜjにそのクラスを追加する場合代わりにそれを親divに追加しますか? – DaniP

+0

いいえ、CSS内のDOMの要素に影響を与えることはできません。下にあるのは –

+0

です。私はまだ非常に非常にjavascriptに新しいです。私はjquery validateを使用してクラスを入力用に追加しています。 DaniPが提案したように、クラスにラベルを追加できるかどうかを確認します。 – Tikvout

答えて

0

jquery .siblings()を使用してスパンをターゲットにし、クラスを追加しました。

+1

あなたの質問には、jQueryはもちろんのこと、JavaScriptでタグ付けされたことはありません。 jQueryソリューションをお探しの場合は、質問にタグを付ける必要があります。 – j08691

1

orderプロパティを持つflexboxを使用すると、要素を視覚的に並べ替えることができますが、inputをDOMの最初の要素として使用することで、一般的な兄弟セレクタを使用できます。

div { 
 
    display: flex; 
 
} 
 
.icon { 
 
    order: -1; 
 
} 
 
input.error ~ * { 
 
    color: red; 
 
}
<div> 
 
    <input id="input" class="input error" type="text"> 
 
    <span class="icon">icon</span> 
 
    <label for="input">label</label> 
 
<div>

0

私は中央の1を使用して、両方の隣接 要素をターゲットとすることが可能であるかどうかを確認したいですか?両方の隣接要素を標的とするセレクタ%を使用することができ

.iconlabelの間には共有クラスや要素タイプが存在しないので

、あなたが宣言する必要があります(この場合)または

input.error % .icon, 
input.error % label { 
color: red; 
} 

を、あなたはCSS直後の兄弟セレクタを組み合わせかもしれません+即時前の兄弟セレクタ?

input.error ? .icon, 
input.error + label { 
color: red; 
} 
関連する問題