[25] [[HTML]] のほとんどの要素型で定義されている [DFN[[CODE(HTMLa)[style]] 属性]]は、その要素のスタイル情報を指定します。 [12] [CODE(HTML)[style]] 属性は、ほとんどの [[HTML]], [[SVG]], [[MathML]], [[XUL]], [[i-XHTML]] 要素にあって、 その要素に適用するスタイル指定を値に持ちます。 * 代替 [95] [CODE(HTMLa)@en[[[style]]]] [[属性]]は、制作中の便宜、あるいは例外的な[[スタイル]]の指定を目的としたものであり、 一般的には、代わりに [CODE(HTMLe)@en[[[style]]]] [[要素]]や[[外部スタイル・シート]]を使って指定すること望ましいと考えられています。 * 仕様書 - [26] [SVG 1.1] ''Styling - SVG 1.1 - 20030114'' - [96] [CITE[MathML Fundamentals]] ([TIME[2010-10-21 05:51:46 +09:00]] 版) * 意味 [97] [[MathML]] では、[CODE(HTMLa)@en[[[style]]]] [[属性]]は [[XSLT]] や [[CSS]] と共に使うための[[スタイル]]情報を[[要素]]に関連付けるものとされています。 この情報は典型的には [[CSS]] [[行内スタイル]]ですが、[[MathML]] ではそれを規定しない、 とされています。 [SRC[>>96]] * 属性値 ** データ型 [13] この属性の値は、 [CODE(SGML)[%[[StyleSheet]]]] です。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 適当な[[スタイル言語]]によって解釈されます。 [98] [[MathML]] におけるデータ型は [CODE@en[[[string]]]] で [SRC[>>96]]、 >>97 の通りそれ以上の制約は課されていません。 ** 既定値 [27] この属性は省略可能です。省略された場合、特に[[スタイル]]の指定はないものとされます。 ** 属性値のスタイル言語 [28] [[HTML 4]] では、 既定スタイル言語 ([CODE(HTTP)[[[Content-Style-Type]]:]] 欄の説明を参照。) の構文に従って指定します。 ただし、多くの HTML UA は [[CSS]] ([CODE(MIME)[[[text/css]]]]) に決め打ちしています。 [29] [[SVG]] では、 [CODE(XMLe)[[[svg]]]] 要素の [CODE(XMLa)[[[contentStyleType]]]] 属性で指定した言語になります。 [30] [[MathML]], [[XUL]] では CSS で固定です。 [[i-XHTML]] では [[i-CSS]] です。 [31] [[XSL]] のような XML 系スタイル言語を使うことって可能なのでしょうかね? [[#comment]] *** CSS [36] [[CSS2]] の場合、 [CODE(HTMLa)[style]] 属性値として指定するのは括弧無しの[RUBYB[宣言ブロック構文] [declaration block syntax]]です。 (という一文が [[HTML 4.01]] で一例として追加されました。 [[HTML 4.0]] ではこの種の説明が一切ありませんでした。) CSS 側には一切規定がありません (だから HTML 4.01 で慌てて追加したのでしょう)。 構文を拡張する WD [CSSATTR] が古くから提案されていますが、 [[CSS3]] にあわせて勧告になるのか、ならないのか。 - [CSS2] 4.1.8 Declarations and properties - [CSSATTR] ''Syntax of CSS rules in HTML's "style" attribute'' [[#comment]] ** 実装 [32] HTML 4 では [CODE(HTMLa)[style]] 属性を使う時は [ABBR[CST] [[CODE(HTTP)[Content-Style-Type]]]] の指定が必須なわけですが、 [[Gecko]] は確かに [CODE(HTTP)[Content-Style-Type]] が無指定または [CODE(MIME)[text/css]] 以外だと無視してくれました。 しかし [[WinIE 6]] は遠慮なく適用します。 ([[名無しさん]] [WEAK[2004-03-23 06:16:14 +00:00]]) [33] >>32 無指定のときは既定値の [CODE(MIME)[text/css]] となるべき (should) だから [SUP[ [HTML 4] ]]、よくないんじゃないか? [35] >>32 の無指定のときの結果は間違いかも。 [[#comment]] ** 他との関係 [23] HTML 4 では、 [CODE(HTMLa)[style]] 属性を使用する時は必ず [CODE(HTTP)[[[Content-Style-Type]]]] の指定が必要です。 [37] 複数の要素にスタイルを指定するためには、 [CODE(HTMLe)[style]] 要素を使用するべきです。更に、柔軟性のために外部スタイル・シートを使用するべきです。 [SUP[ [HTML 4] ]] [[#comment]] ** 歴史 [19] ''HTML DTD with support for Style Sheets'' (HTML 3.2 + Style Sheet) はほとんどの要素型に [CODE(HTMLa)[style]] 属性を定義しています。 [57] [CITE@en[W3C Chat before XTech 2000: XHTML - a bridge to the Web of the future]] ([[Dan Connolly]] 著, [CODE[2000-02-21 12:36:22 +09:00]] 版) [CITE[IRC log from 2000-02-25T08:07-0500]] ([CODE[2000-02-26 00:53:02 +09:00]] 版) ([[名無しさん]]) [58] >>57 [CODE(HTMLa)@en[[[style]]]] を削除しようかという議論をしているが特に面白いことはなかった。何か結論を出そうとしているのでもない。 ([[名無しさん]]) [59] [CITE@en[inline CSS - score so far]] ([[JOrendorff@ixl.com]] 著, [CODE[2000-02-23 17:52:57 +09:00]] 版) *** HTML4 - [[HTML 4]] -- 14.2.1 Setting the default style sheet language -- 14.2.2 Inline style information - [MathML 2.0] ''MathML Fundamentals'' - [XUL] ''XulPlanet.com - XUL Element Reference'' - [i-XHTML] ''DoCoMo Net - iモード対応XHTML'' - [VML] ''VML - the Vector Markup Language'' *** 代替 [16] [[XHTML 1.1]] ではこの属性は'''非推奨'''とされています。 [94] [[MathML 2.0]] でもこの属性は'''非推奨'''とされています [SRC[要出典]]。 *** XHTML2 [86] [[XHTML2]] には最初含まれていませんでしたが、第5次案でなぜか 「[RUBYB[強く非推奨]@en[strongly discouraged]]」としながらも復活しました。 ;; [CITE@en[- XHTML Style Attribute Module]] ([TIME[2003-05-08 01:23:41 +09:00]] 版) ** 例 [34] [[CSS]] を使用した例 [PRE(HTML)[

Aren't style sheets wonderful? ]PRE] [WEAK[(HTML 4 仕様書より)]] [24] UA が [ABBR[CST] [[CODE(HTTP)[Content-Style-Type]]]] を正しく扱っているかのテスト: [[#comment]] ** メモ [14] [CODE(HTML)[style]] 属性はある特定の要素の表現を制御するのに便利ですが、表現と構造を分離することを考えるとあまり得策ではありません。 (例えば、一つの文書に複数のスタイル・シートを適用させることを考えると、文書そのものにスタイル指定があるのは有害です。) その問題を理解した上で使う (永続的なスタイルの指定とか。) のであれば問題はないでしょうが、そうでなければ [[i-XHTML]]/[[i-CSS]] のような “[[TagSoup]] の CSS 版” にしかならない諸刃の剣です。 [11] [[XHTML 2.0]] では採用されない予定です。 [17] [WEAK[2003-05-10 08:36]] ''>>11'': こんどの [[WD]] で復活 [15] さて CSS を値に使う場合の書式は、 HTML 4 も CSS 1 も CSS 2 もその他の規格も、例示で簡単に説明している程度で、 はっきりとは定義していません。現在 [[WD]] である [CSSATTR] は、 現在の書式を更に柔軟な指定が可能に拡張したものを定義しています。 CSS 以外のスタイル言語で [CODE(HTMLa)[style]] 属性の値として使う方法を規定したものがあるのかは不明です。 [22] >>15 [CODE(MIME)[[[text/jss]]]] で可能 ([[JIS X 4052]]:2000 5.4.2 を参照。) [50] [CITE[公開メモ日記 - JavaScriptによって事後に要素に埋め込む、style属性によるインラインスタイルシートは、これを肯定する]] ([CODE[2007-02-24 02:17:48 +09:00]] 版) ([[名無しさん]] [WEAK[2007-02-23 17:20:53 +00:00]]) [51] [CITE[公開メモ日記 - JavaScriptによって事後に要素に埋め込む、style属性によるインラインスタイルシートは、これを肯定する]] ([CODE[2007-02-24 02:17:48 +09:00]] 版) ([[名無しさん]] [WEAK[2007-02-23 17:21:12 +00:00]]) [53] [CODE(XMLe)@en[[QN[text:[[wrap]]] [http://xmlns.graougraou.com/svg/text/]]]] has [CODE(XMLa)@en[[[style]]]]. [54] [CITE[HTML5 IRC logs: freenode / #whatwg / 20070503]] ([CODE[2007-05-04 21:12:45 +09:00]] 版) ([[名無しさん]] [WEAK[2007-05-04 12:13:34 +00:00]]) [55] >>54 > 03:31 othermaciej: the current spec is a failed experiment ([[名無しさん]]) [56] > 03:31 Hixie: I'm not sure removing style="", allowing it on for WYSIWYG only, and adding scoped