[31] [[選択子]]の[[擬似クラス]] [DFN[[CODE(CSS)@en[[[:valid]]]]]]、[DFN[[CODE(CSS)@en[[[:invalid]]]]]]
は、それぞれ所定の制約を満たす、あるいは満たさない[[要素]]
(主に[[フォーム制御子]]) と[[一致]]します。

* 仕様書

[REFS[
- [15] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes>
- [5] [CITE@EN[XForms 1.1]] ([TIME[2010-08-13 07:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#N90079>
]REFS]

* 意味

** HTML

[19] [[HTML]] では [CODE(CSS)@en[[[:valid]]]] と [CODE(CSS)@en[[[:invalid]]]] はそれぞれ、
- [22] [[フォーム制御子]]: [[制約検証の候補]]であってかつ[[制約を満足]]する、あるいはしない[[要素]]
- [23] [[フォーム]]: [[提出可能要素]]であり[[制約検証の候補]]で、しかも[[制約を満たさない]][[要素]]の[[フォーム所有子]]で無い、あるいはそのような[[要素]]1つ[[以上]]の[[フォーム所有子]]である[[要素]]
- [30] [CODE(HTMLe)@en[[[fieldset]]]]: [[制約検証の候補]]で、しかも[[制約を満たさない]][[要素]]を[[子孫]]として有する[[要素]]

... を表します [SRC[>>15]]。

;; [24] 簡単にいえば[[制約]]を満たさないのが [CODE(CSS)@en[[[:invalid]]]]、
そうでないのが [CODE(CSS)@en[[[:valid]]]] です。しかし[[提出]]されない[[制御子]]など例外があるため、
厳密にはこのように一見わかりにくい定義になっています。

** XForms

[4] [[XForms]] では [CODE(CSS)@en[[[:valid]]]] と [CODE(CSS)@en[[[:invalid]]]] はそれぞれ現在[[妥当]]または[[非妥当]]の[[節点]]に[[束縛]]された[[フォーム制御子]]を表します
[SRC[>>5]]。

* 歴史

** CSS UI

[REFS[
- [8] [CITE@en[CSS3 module: Basic User Interface]] ([[Tantek Çelik]] 著, [TIME[2002-08-03 07:13:43 +09:00]] 版) <http://www.w3.org/TR/2002/WD-css3-ui-20020802/#pseudo-validity>
- [10] [CITE[XForms and Styling]] ([TIME[2002-08-21 23:00:56 +09:00]] 版) <http://www.w3.org/TR/2002/WD-xforms-20020821/sliceF.html#id2641029>
- [12] [CITE[XForms and Styling]] ([TIME[2002-11-07 01:02:54 +09:00]] 版) <http://www.w3.org/TR/2002/CR-xforms-20021112/sliceF.html#id2641627>
- [6] [CITE@en[CSS Basic User Interface Module Level 3 (CSS3 UI)]] ([[Tantek Çelik]] 著, [TIME[2011-09-29 17:32:08 +09:00]] 版) <http://dev.w3.org/csswg/css3-ui/#pseudo-validity>
- [7] [CITE@EN[XForms 1.1]] ([TIME[2010-08-13 07:45:33 +09:00]] 版) <http://www.w3.org/TR/xforms/#N90079>
- [25] [CITE@en[CSS Basic User Interface Module Level 3 (CSS3 UI)]] ([[Tantek Çelik]] 著, [TIME[2012-01-13 20:03:30 +09:00]] 版) <http://www.w3.org/TR/2012/WD-css3-ui-20120117/#pseudo-validity>
]REFS]

[9] [[XForms]] での利用を想定して >>8 で追加されました。

[11] >>10 では [DFN[[CODE(CSS)@en[[[:forms-valid]]]]]], [DFN[[CODE(CSS)@en[[[:forms-invalid]]]]]]
という名前でした。
>>12 以降では [[CSS]] と同じ名前になっています。

[17] [[Webアプリケーション]]から制御可能にする構想もありました。

[REFS[
- [14] [CITE@en-GB-hixie[Web Applications Markup Language 1.0]]
( ([TIME[2004-04-08 02:39:12 +09:00]] 版))
<http://hixie.ch/specs/html/apps/web-apps-1#pseudo-classes>
- [13] [CITE@en-GB-hixie[Web Controls 1.0]]
( ([TIME[2004-11-09 08:49:52 +09:00]] 版))
<http://www.whatwg.org/specs/web-controls/current-work/#pseudo-classes>
]REFS]

** HTML

[18] [[HTML]] についてははじめ [[Web Forms 2.0]] が、後に [[Web Applications 1.0]] /
[[HTML Living Standard]] が適用対象を規定するようになっています。

[REFS[
-[1] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版)
-- [2] <http://www.whatwg.org/specs/web-forms/current-work/#form-validation>
-- [3] '''<http://www.whatwg.org/specs/web-forms/current-work/#relation>'''
- [16] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes>
- [20] [CITE@en[Web Applications 1.0 r6888     Make :valid and :invalid apply to <form> elements also.]]
( ([TIME[2012-01-11 09:00:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6887&to=6888>
- [28] [CITE@en[Web Applications 1.0 r7823     Make :invalid match <fieldset>s that contain invalid controls.]]
( ([TIME[2013-04-13 08:03:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7822&to=7823>
- [33] [CITE@en[Web Applications 1.0 r8089     Oddly, :valid somehow didn't apply to fieldset but :invalid did. let us fix that...]] ([TIME[2013-07-26 08:54:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=8088&to=8089>
]REFS]

[21] >>20 により [CODE(HTMLe)@en[[[form]]]] [[要素]]にも適用されるようになりました。

[29] >>28、>>33 により [CODE(HTMLe)@en[[[fieldset]]]] [[要素]]にも適用されるようになりました。


[34] [CITE@en[Web Applications 1.0 r2778 Defined how pseudo-classes match HTML concepts. Redid how rtl/ltr changes are marked. Stopped <legend> centering for <figure>. Removed <multicol> support. Removed <basefont> support. Removed obsolete notes. Fixed minor typos.]]
( ([TIME[2009-02-11 16:36:00 +09:00]] 版))
<http://html5.org/r/2778>

[35] [CITE@en-US[csswg: changeset 14966:d176479b88ff]]
( ([TIME[2014-12-25 13:51:20 +09:00]] 版))
<https://dvcs.w3.org/hg/csswg/rev/d176479b88ffe2dcfa027be6aee807afc0d45bd2>