註:このページを読む前に、Help:編集の仕方Help:WikivoyageにおけるHTMLWikivoyage:利用者ページを読むことをお勧めします。


日本語版ウィキボヤージュをはじめとする、MediaWikiのマークアップ記法を使っているウィキでは、ほかのWebサイト同様にCSS(Cascading Style Sheets)を使うことができます。ここでは、そもそもCSSが何で、どこでどのように使用できるのかを解説します。

CSSとは

編集

CSS(正式名称:Cascading Style Sheets)は、HTML(これは何?)で書かれた文章に色を付けたり太さを変えたりするために使われます。MediaWikiのマークアップ記法を使用しているウィキでは、CSSが適用できるようになっており(例外あり)、文字の色や太さなどの見た目を変えることができます。

MediaWiki上でのCSS

編集

ここでは、CSSを記述する具体的な場所について説明します。

なお、CSSのページは、拡張子.cssで終わるものである必要があります[註 1]

MediaWiki名前空間に記述

編集

註:MediaWiki名前空間は、インターフェース管理者の権限を持つ利用者のみが編集できます。


MediaWiki名前空間にCSSを記述する場合、以下のページにCSSを記述すると、そのウィキを見る全ての利用者(非ログイン利用者も含む)に対して適用されます。

このほかに、ガジェットに付属するCSSなどもMediaWiki名前空間に保存されています。

利用者サブページに記述

編集

ログイン利用者は、利用者:(利用者名)/common.css(サブページ名は小文字です)というページに記述することで、独自のCSSを自分だけに適用することができます。

なお、サブページ名は、利用者:(利用者名)/common.cssなら全体に、利用者:(利用者名)/print.cssなら印刷時になど、MediaWiki名前空間に記述する場合と同様です。

タグのstyle属性

編集

先述の2つは、一つのページを丸ごとCSSのファイルとするものでしたが、ここで紹介するのは記事のHTMLタグに直接CSSを書く方法です(通常のHTMLと同様)。

<タグ名 style="ここにCSS">ほげほげ</タグ名>のようにすることで、HTMLタグのstyle属性にCSSを設定できます。

コード出力
<div style="border:lightgray 2px solid; background-color:aliceblue;">
<span style="color:red;"></span>いうえお
</div>

いうえお

TemplateStyles

編集

TemplateStyles拡張機能は、テンプレートにCSSを適用するための拡張機能で、日本語版ウィキボヤージュでは利用することができます。

TemplateStyles機能で呼び出すCSSは、通常は呼び出す側のテンプレートのサブページに置くべきです。また、サブページ名はstyles.cssが推奨されます。

CSSを呼び出す方法は、以下のとおりです。

  1. CSS用のページを作成します。
  2. 呼び出す側のテンプレートで、<templatestyles src="(CSSのページ名)"/>と記述します。

コンテンツモデルの変更

編集

.cssを最後に付けたファイルを作って、templatestylesで読み込んだのに、「ページにはTemplateStylesに対応するコンテンツモデルとして「サニタイズCSS」が必須です」と表示され、つまづくケースがあります。MediaWikiには、ページのコンテンツモデルという設定が存在し、そのページが普通のページなのかLuaで書かれているのかCSSで書かれているのか、という判別ができるようになっています。

実はCSSに関するコンテンツモデルは2種類あります。それが、「CSS」と「サニタイズCSS」です。templatestylesで読み込むためには「サニタイズCSS」の設定でなければなりませんが、利用者ページなどで.cssのファイルを作成すると、「CSS」の設定になります。こちらは、主にユーザーがページを表示する際に読み込むファイル、という設定です。そのため、もしもCSSではなくサニタイズCSSにしたい、あるいはその逆なのであれば、コンテンツモデルの変更を行う必要があります。Wikivoyageではコンテンツモデルを変更できるのは管理者だけであるため、管理者伝言板で申請をしましょう。

書き方

編集

ここでは、CSSの書き方について解説します。

CSSは、セレクタプロパティの3つで構成されています。例として、下に最も簡単なCSSの例を書いてみます。

span {
	color: blue;
}

この例ではspanの部分がセレクタ、中括弧の中で:より前(上記例におけるcolor)がプロパティ、後(上記例におけるblue)は値です。また、中括弧に囲まれた部分(中括弧を含む)を宣言ブロックと言い、宣言ブロックとセレクタを合わせたものを規則集合、中括弧に囲まれた中身を宣言と言います。

セレクタはスタイルを適用する場所を指定します。例えば、上の例では<span>というタグで囲まれた全ての場所を指定しています。適用するスタイルの具体的な内容は、宣言に書きます。宣言では、プロパティは「何を変更するか」を、値はプロパティの内容を「何にするか」をそれぞれ指定します。上記例ではcolor(プロパティ、色を変更する)をblue(値、青色にする)にしています。よって、上の例でやっていることをまとめると、「spanタグに囲まれた部分の色(color)を青色(blue)にする」となります。

span {
	color: blue;
}

span {
	font-size: 15px;
}

この例では、どちらの規則集合でもspanという要素に対する指定をしています。この場合、これらはまとめて1つの宣言ブロックの中に書くことができます :

span {
	color: blue;
    font-size: 15px;
}

CSSには優先順位というものがあり、複数の場所で同じ要素にスタイルが指定された場合にこの優先順位が適用されます。MediaWikiのシステムでは、CSSの優先順位は以下のようになっています。

セレクタ

編集

プロパティ

編集

コーディング規約

編集

WikivoyageをはじめとしたWikimediaのサイトでCSSを書く際には、コーディング規約というルールに則る必要があります。コーディング規約はMediaWikiのサイトに載っています。

クラスの命名について、MediaWikiのシステムに関連するクラスはmw-で、拡張機能に関連するクラスはext-で、スキンに関連するクラスはskin-でそれぞれ始めます。セレクタは1行に1つが原則で、大括弧([])とその中身の間やセレクタの後、そしてコロンの後にはスペースを入れます。

CSSを書いている際に、まだ草案段階の機能を使い、ベンダープレフィックス(例えば-webkit-で始まるもの)を併記する場合には、ベンダープリフィックスつきの行を先に書いてください。これはいくつかの問題を修正します:https://css-tricks.com/ordering-css3-properties/

使用例

編集

ここでは、いくつか使用例を挙げます。導入する際は「導入」にある「コード」の内容をcommon.jsに追加するか「スタイルシート」にあるCSSをcommon.cssに追加することで実際に使用することができます。また、「コード」の内容をメタglobal.jsに追加すれば(或いは「スタイルシート」の内容をglobal.cssに追加すれば)、全てのウィキメディア・プロジェクトのウィキで使用することができます。

「印刷/書き出し」を非表示に

編集
  • 説明 : サイドバーで表示される「印刷/書き出し」を非表示にします。
  • スタイルシート :
#p-coll-print_export {
	display: none;
}

サイドバーの固定

編集
  • 説明 : サイドバーを固定し、ページをスクロールしてもサイドバーが動かなくなります。また、pre要素についても高さが一定になります。なお、旧ベクタースキン用です。
  • スタイルシート :
/* Fix sidebar */
div#mw-panel { position: fixed;
	overflow: auto;
	top: 0px;
	bottom: 0px;
	height: 100%;
	/* Prevent content overlay when sidewards scrolling */
	background-color: #F6F6F6;
	border-right: 1px solid #A7D7F9;
}

/* Prevent sidewards scrolling in pre elements */
pre {
	overflow: auto;
	max-height: 25em;
}

フランス語版外装

編集
  • 説明 : フランス語版で採用されている、水色基調の表をはじめとしたいくつかの外装を、日本語版で実施します。
  • スタイルシート :
.ns-0 .pp_Column td {
	background-color:#effafa;
	font-size:90%;
	border:1px solid #44718a !important;
	border-radius: 0.45em;
	padding-left: 0.5em;
	padding-right: 0.5em;
}

.ns-0 .wikitable {
	border: 1px solid #6cc8f3;
	margin: 0 0 1em;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	-khtml-border-radius: 5px;
}

.ns-0 .wikitable tr:first-child th {
	text-align: center;
	color: #004f80;
	padding: 0.3em 0.35em;
	font-size: 1.2em;
	background: #f0f0f0;
	border-top: 1px solid #c0c0c0;
	border-top: none;
	border-top-left-radius: 5px;
	border-top-right-radius: 5px;
	-moz-border-radius-topleft: 5px;
	-moz-border-radius-topright: 5px;
	-webkit-border-top-left-radius: 5px;
	-webkit-border-top-right-radius: 5px;
	-khtml-border-radius-topleft: 5px;
	-khtml-border-radius-topright: 5px;
}

.ns-0 .wikitable td {
	padding: 2px 0.4em;
	vertical-align: baseline;
}

.ns-0 #region_list > .content-table-wrapper tr td:last-child {
	background-color: #F8F8F8;
}

脚注

編集

関連項目

編集