<input type =“?”のCSSセレクター


105

CSSを使用して、タイプに基づいてすべての入力をターゲットにする方法はありますか?さまざまな無効なフォーム要素で使用する無効なクラスがあり、テキストボックスの背景色を設定していますが、チェックボックスでその色を取得したくありません。

別のクラスでこれを実行できることはわかっていますが、可能であればCSSを使用します。きっとJavaScriptでこれを設定できますが、再びCSSを探します。

IE7 +をターゲットにしています。だから私はCSS3を使うことができないと思います。

編集する

CSS3を使用すると、次のようなことができますか?

INPUT[type='text']:disabled それは私のクラスを完全に取り除くのにさらに良いでしょう...

編集する

助けてくれてありがとう!したがって、クラスを設定する必要なしに無効にされたすべてのテキストボックスと領域を変更するセレクターがあります。この質問を始めたとき、これが可能だとは思っていませんでした...

INPUT[disabled][type='text'], TEXTAREA[disabled]
{   
    background-color: Silver;
}

これはIE7で動作します


2
CSS属性セレクターに関する詳細な情報を含む記事を書きまし
Sarfraz、2010

回答:


155

はい。IE7 +は属性セレクターをサポートします:

input[type=radio]
input[type^=ra]
input[type*=d]
input[type$=io]

特定の値に等しい、始まる、含む、または終わる値を含む属性タイプの要素入力。

その他の安全な(IE7 +)セレクターは次のとおりです。

  • 親>子: p > span { font-weight: bold; }
  • 〜要素が前にあります。 span ~ span { color: blue; }

どちら<p><span/><span/></p>が効果的にあなたに与えるでしょう:

<p>
    <span style="font-weight: bold;">
    <span style="font-weight: bold; color: blue;">
</p>

参考資料quirksmode.comでのブラウザーCSSの互換性

誰もがそれを行うことはできないと思っていることに驚いています。CSS属性セレクターは、ここしばらく前から存在しています。.cssファイルをクリーンアップするときがきたと思います。


OK、これを試しましたが、うまくいきませんでしたので、構文をめちゃくちゃにする必要があります。
JoshBerke 2009年

あなたは私の一日を作りました!今週を私に伝えたい場合は、式を使用せずにIE6で行うことができますhehe :-) j / k there
JoshBerke

13
残念ながらできません。私は宗教的な見解からIE6のサポートをやめ、私たちもすべてそうすることを提案しました。今日、私はIEの条件付きコメントを使用して、コンピューターとプライバシーがIE6を使用する危険にさらされており、すぐにアップグレードする必要があることをユーザーに伝えます:P
FilipDupanović

1
IE6をサポートすることに慣れていると思いますが、IE7でも機能しないと思いました
TJ L

4
私は私がIE6のサポートを停止することがしたいが、私がすることはできませんし、あなたが示唆したように私が行うことができない...しかし、私は本当に、本当に、本当に、私は;-)可能性がしたい
JoshBerke

3

悲しいことに、他のポスターはあなたが正しいと正確です ...実際にはkRONによって修正されていますが、IE7と厳格なドキュメントで問題ありませんが、IE6要件を持つ私たちのほとんどは、これに関するJSまたはクラス参照に削減されていますが、 CSS2プロパティー。IE^ h ^ hブラウザーからの十分なサポートがないものです。

完全性から、タイプセレクターは、xpathと同様の形式です[attribute=value]が、多くの興味深いバリアントが存在します。それ利用可能になると、それ非常に強力になります。IE8を頭に置いておくのは良いことです。


より更新されたブラウザサポートリファレンスがありますか?これはIE7ベータ版に基づいており、IE8を見たいと
思い

IE8はまだベータ版ですが、quirksmodeは "yes"と表示します:quirksmode.org/css/contents.html
annakata

私はまだIE6をサポートしていますが、これは小さな視覚的な調整を加えただけではありません。
JoshBerke 2009年

タイトルに基づいて答えるのは十分に公正でした。私は一般的なケースに答える傾向があります-私は本当に質問をもっと読むべきです:)
annakata

1

これはjQueryで実行できます。それらのセレクターを使用して、タイプなどの属性で選択できます。ただし、これには、ユーザーがJavascriptをオンにし、ダウンロードする追加のファイルが必要ですが、それが機能する場合は...


0

すみません、短い答えはノーです。CSS(2.1)はDOMの要素のみをマークアップし、属性はマークアップしません。各入力に特定のクラスを適用する必要があります。

残念なことに、それは非常に役立つでしょう。

JavaScriptよりもCSSを好むとおっしゃっていましたが、jQueryの使用を検討する必要があります。これは、属性に基づいてDOM要素にスタイルを追加する非常にクリーンでエレガントな方法を提供します。


jqueryはこれを行うための方法、または一般的にJavaScriptです
TravisO

4
Afaict、この答えは正しくありません(CSS 2.1の部分):w3.org/TR/CSS21/selector.html#attribute-selectors。そうでない場合は、回答を明確にしてください。
cic

1
申し訳ありません-あなたは全く正しいです。多くの場合、開発者がIE6を同時にサポートする必要があるので、IE7にはあまり期待しないでください。質問をもっと注意深く読んで私の宿題を終えるべきだった。
Phil.Wheeler 2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.