Help:TemplateStyles/ja

TemplateStyles は、管理者権限なしに、テンプレートにおける複雑な装飾（スタイリング）を実現するためのツールです.

動作の仕組み
編集者が、ページに  というウィキテキストを挿入すると、  のウィキテキストがCSSとして解析され、特殊文字の置換が行なわれ、  タグのある位置で読み込まれます.

は、コンテントモデルが   である必要があります. このコンテントモデルは、ページ名が  で終わるテンプレート名前空間のサブページにおけるデフォルトのコンテントモデルです. 推奨される利用法は、 のCSSを   のようなサブページに格納する方法です.

が、名前空間のプレフィックスを欠いている場合でも、読み込まれるのはテンプレート名前空間です. 従って、例えば、 と書かれた場合、読み込まれるのは   です.

CSSの読み込み前にページの一部がレンダリングされ、装飾されていないページが出力されるのを避けるため、 タグは、テンプレートの最上部など、装飾される本文の前に置かれる必要があります.

解決される問題
今までは、テンプレート（やその他のコンテンツ）で装飾を行なう方法として2通りありました. インライン・スタイルを用いる方法（これは、 のようなHTMLコードと属性を直接書き込む方法）と、MediaWiki:Common.css のような特別なシステムメッセージを用いる方法です. どちらのアプローチも上手くいっていません.

インライン・スタイルの場合:


 * 本文と体裁が分離されません. In cases where the content does not come from a template (e.g. tables in articles), that will result in article wikitext that's unintelligible for most editors.
 * 装飾がウィキテキストで混在することにより、シンタックスハイライトやその他のCSSによる編集支援が困難または不可能になっています.
 * 装飾の適用されるHTML要素一つ一つに装飾が繰り返され、結果として大量のコピー&ペーストや、読みにくく、メンテナンスしづらいコードが生じます.
 * style属性は、CSSのサブセットに限定されています. 最も重要なことは、レスポンシブデザインに必要な  規則が機能せず、多様な画面幅に対応したテンプレートを作成することが不可能となっていることです. さらに、インライン・スタイルは、CSSスタイルシートでの装飾に優越するため、ユーザー固有・スキン固有・機器固有のカスタマイズが、より困難になっています.

システムページを使った場合:


 * 編集が管理者に限定されます. これは参加の大きな障壁です.
 * 使用できるCSS規則を制限する方法が無く、読者のIPアドレスを追跡したり、古いブラウザではスクリプトを実行することすらできてしまうため、編集権限を引き下げることはできません.
 * Changes are impossible to test without saving first.
 * スタイルシートの全てが全てのページ（そのCSS規則が実際に使われているかを問わず）で読み込まれてしまいます. これは、帯域幅を無駄遣いし、装飾規則のデバックをより困難にしています.

TemplateStyles allows editors to associate style rules to specific pages, provides the full power of CSS stylesheets while filtering dangerous constructs, and works with preview/debug tools (such as TemplateSandbox) as expected.

Lowering the access and maintainability barrier will hopefully result in more innovation in the way templates are visually designed, less maintenance overhead, and better adaptability to screen options (especially mobile devices which by now constitute half of Wikipedia pageviews).

安全性
安全です！ TemplateStyles は、CSSを読み込み、再シリアル化し、全てのコードをエスケープし、ホワイトリストに合致しないCSS規則を除去する、本格的なCSSパーサーを含んでいます. このパーサーは、外部リソース（例えば背景画像）を拒否し、ローカルリソースは許可するだけの十分な精度があります. CSSセレクタは、記事コンテンツ外の要素を参照できないように書き直されます. (Visually modifying areas outside article content by displacing parts of the article, e.g. via absolute positioning, is not prevented at this time. This is no change from the status quo, as such a thing was already possible with wikitext and inline styles.)

認識するCSS規則
Currently, TemplateStyles accepts most CSS3 properties supported by one or more major browser (as of early 2017). Beyond simple rules,,  ,  ,   and  /  at-rules are also supported (with font-face restricted to fonts whose name starts with  , for security reasons).

Non-standard properties (including vendor prefixes) are not currently supported. See T162379 for plans.

What anti-abuse features are provided?
The design choice to store CSS in separate pages was made in part to make integration with the standard anti-abuse toolset easy. TemplateStyles CSS pages have their own content model so changes to them can be tracked or controlled with AbuseFilter, using the   variable.

CSS inclusion is tracked the same way as template transclusion, so you can see where a stylesheet is used via the "What links here" option, see what stylesheets are used on a page under "Page information" (and possibly on the edit screen, depending on what editor you use), and see what recent changes might be affecting a page using "Related changes".

TemplateStyles also leaves identifying information in the HTML code; to find out where a specific rule comes from, look at the page source, and the enclosing  tag will have an attribute like , where 123456 is the revision ID of the stylesheet (viewable with Special:Diff, for example).

How were the decisions around TemplateStyles made?
The idea of including CSS with templates was proposed and accepted in a request for comments. Technical details were pinned down in a second RfC and workflow details in a user consultation.

Who is working on TemplateStyles?
TemplateStyles was originally a project of the Wikimedia Reading Infrastructure team (preceded by exploratory work Coren did as a volunteer), then people moved around. It is now maintained by an ad hoc WMF team consisting of Brad Jorsch (developer), Chris Koerner (community liaison), Dan Garry (product manager), Gergő Tisza (developer) and Grace Gellerman (project manager).

Where do I report errors / ask for features?
Please file tasks under the TemplateStyles component in Phabricator.

Where can I see it in action?
You can look at some curated examples.

The feature is currently (as of March 2018) enabled on the following Wikimedia sites:


 * here on mediawiki.org (all stylesheets)
 * German Wikipedia (all stylesheets)
 * Swedish Wikipedia (all stylesheets)
 * Wikitech (all stylesheets)
 * testwiki (all stylesheets)