1

コンテキスト: ABCD という 3 つのスパンがあります (この順序で)。これらのスパンの横にあるフォームの内容に基づいて、これらのスパンの可視性をオフまたはオンにします。

A と C には改行があり、表示は次のようになります。

A
B C
D

しかし、C を非表示にすると、次のようになります。

A
B D

改行が表示されないためです。

私がやりたいことは、B が表示され、C が表示されない場合に表示される他の要素 (C') を追加することです。そのため、C が存在しない場合でも、改行を取得できます。

A
B (C')
D

クラスベースの CSS 切り替えと疑似セレクターを組み合わせて使用​​することでこれが可能になると確信していますが、現在のメカニズム:afterから変更するために Javascript を変更して変更する必要は避けたいと思います。display:show/noneだから私の質問は次のようになります:

CSS ルールで現在設定されているスタイル (「表示」など) を「検査」することはできますか? 私ができる属性メカニズムに似たことができるようにしたいと思います:

A[display='show']~B[display='none']:after { 
    content : '\a';
}

しかし、セレクターを見ただけでは、新しいクラスを宣言せずにこれを達成する方法がわかりません。

4

3 に答える 3

2

必要なすべてのケースを見ると、要素 D の前には常に改行があります。では、要素 C を改行で終わらせる代わりに、要素 D を改行で始めてみませんか? 次に、どちらかになります

A
B C
D

また

A
B
D

そして決して

A
B D

注:私の答えを書く際に、明白なことを行うことが許可されておらず、CとDをどちらにも含まれていない改行で区切ることが許可されていないという何らかの理由があると想定しました。それが許されるのであれば、Josh が彼の提案を回答として投稿し、それに対する票を獲得してくれることを願っています。

更新: A と C を常に B/C の組み合わせから別の行に分割する場合はdisplay: list-item、スパンを 1 行のアイテムのように動作させるのに非常に適していると思われるものを使用できます。

http://jsfiddle.net/gDYs6/1/

于 2013-09-12T02:57:25.787 に答える
0

簡単な方法はjqueryです -

$("#dom_element").css("display") 

参照するものの現在の表示スタイルを返します。フラット js でそれを行う方法がありますが、jquery は簡単です。ここでやりたいことは、目的の要素に到達するまで、ABCD に一致するクラス要素を反復処理することです。

http://api.jquery.com/css/

于 2013-09-12T02:56:59.983 に答える