Visual Studio Do-It-Yourself シリーズ
第 11 回 テーマとスキン
著作権
このドキュメントに記載されている情報は、このドキュメントの発行時点におけるマクロソフトの見解を反映 したものです。マクロソフトは市場の変化に対応する必要があるため、このドキュメントの内容に関する責任 を問われないものとします。また、発行日以降に発表される情報の正確性を保証できません。 このホワトペーパーは情報提供のみを目的としています。明示、黙示、または法令に基づく規定に関わらず、 これらの情報についてマクロソフトはいかなる責任も負わないものとします。 この文書およびソフトウェゕを使用する場合は、適用されるすべての著作権関連の法律に従っていただくものと します。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることな く、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう 形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上の お客様の権利を制限するものではありません。 マクロソフトは、この文書に記載されている事項に関して、特許、申請中特許、商標、著作権、および他の知 的財産権を所有する場合があります。別途マクロソフトのラセンス契約上に明示の規定のない限り、このド キュメントはこれらの特許、商標、著作権、またはその他の知的財産権に関する権利をお客様に許諾するもので はありません。 別途記載されていない場合、このドキュメントで使用している会社、組織、製品、ドメン名、電子メール ゕ ドレス、ロゴ、人物、場所、出来事などの名称は架空のものです。実在する商品名、団体名、個人名などとは一 切関係ありません。© 2010 Microsoft Corporation. All rights reserved.
Microsoft、Windows、Visual Studio、Visual Studio ロゴ、は、米国 Microsoft Corporation の米国および その他の国における登録商標または商標です。他のすべての商標は、それぞれの所有者の財産です。
ASP.NET Do-It-Yourself 第 11 回 は、「テーマ」および、テーマで用いられる「スキン」について学習しま す。テーマを使えば、ページに配置されたコントロールや基本的な HTML タグについて、主に配色やプロパテ ゖなどをサト内で統一することができます。 テーマを利用したページの例を以下に示します。テーマを変えるだけで、簡単に Web サトの外観を変更で きます。
■テーマとは
テーマとは、Web ページの配色や、画像、ページに配置したコントロールのプロパテゖなどをまとめて管理す るためのしくみです。テーマには、HTML 要素の色や配置を管理する CSS (Cascading Style Sheet) フゔル、 ASP.NET 独自の Web コントロールの配色などを管理するスキン フゔル、さらに必要に応じて、ページやコ ントロールで使用する背景画像フゔルなどが含まれます。 CSS フゔルを利用することで、HTML タグで記述される要素のスタル情報を管理できます。これに加えて スキン フゔルを用意することで、Web コントロールのプロパテゖを管理できます。 Web コントロールには HTML タグを複合的に使用して 1 つのコントロールを実現しているものがあり、コン トロールの外観を CSS のみでコントロールするのは難しくなっています。そのためスキン フゔルでは、Web コントロールで利用できるプロパテゖの内容を記述することで、コントロールの外観を変更できます。■Web サイト プロジェクトの作成
実際に独自のテーマを用いた Web サト プロジェクトを作成してみましょう。最初に Web サト プロジェ クトを新規作成し、第 3 回で作成した予約ページと同様の、名前や年齢、カレンダーを使った入力フォームを 作成します。●テーマ フォルダーを作成する
プロジェクトでテーマを利用するには、まずテーマに関連するフゔルを保存するフォルダーをプロジェクト内 に 作 成 し ま す 。 ソ リ ュ ー シ ョ ン エ ク ス プ ロ ー ラ ー か ら 、 サ ト を 示 す ノ ー ド ( こ こ で は "C:\Data\AspNet11\" ) を右クリックして、メニューから [ASP.NET フォルダーの追加] - [Theme] を選択 します。
すると、プロジェクトのツリーに App_Themes という名前のフォルダーが追加されます。ここではこの App_Themes フォルダーを右クリックし、再度 [ASP.NET フォルダーの追加] - [Theme] を選択して、 App_Themes の中に "Bright" という名前のサブ フォルダーを作成します。同様にして "Dark" という名前 のサブ フォルダーも作成しておきます。 ここで作成したフォルダー名の Bright と Dark が、テーマを識別するテーマ名になります。後ほどページに テーマを適用する際には、このテーマ名を指定します。 次にテーマ フォルダーごとに、テーマを構成する CSS フゔルとスキン フゔルを作成します。
■CSS ファイルを作成する
まず CSS フゔルを作成します。CSS フゔルを新規作成するには、ソリューション エクスプローラーでテ ーマを示すノード (ここでは Bright や Dark) を右クリックし [新しい項目の追加] を選択します。そして [スタル シート] の項目を追加します。Bright フォルダーに作成した CSS フゔルの内容を以下に示します。ページ全体の背景色を指定し、さらに 定義リストのレゕウトを表形式に整形して背景色を指定しています。 /* Bright の CSS フゔル */ body { margin:0; padding:0; background-color:#ffc0c0; }
dl { padding: 0; border: 1px solid #eee;
border-top: none; background-color: #ffff99 } dt { float: left; padding: 0.1em 0 0.1em 1em; border-top: 1px solid #eee; width: 8em; } dd { margin: 0 0 0 8em; padding: 0.3em 1em;
border-top: 1px solid #eee; background-color:#fff; }
これによりページの背景色、定義リスト (dl タグ) のレゕウトとその背景色が変更されるようになります。
■スキンを作成する
CSS フゔルを用意することで HTML で定義可能なスタルを変更できるようになりますが、最初に説明した ように、Calendar のようなやや複雑なコントロールに対して HTML レベルでスタルを指定するのはなかな か困難です。この場合には、スキン フゔルを用意し、コントロールのプロパテゖ レベルでの設定を行うこと で、コントロールのデザン変更が行えます。スキン フゔルの作成は、テーマを示すフォルダーに新規項目 としてスキン フゔルを追加します。スキンの内容を作成する最も簡単な方法は、あらかじめページ デザナ上でプロパテゖ設定や、オートフォー マット機能によりコントロールのデザンを決めておき、ソース ビューからコントロールの記述部分をスキン フゔルにコピー & ペーストする方法です。ただし、ID 属性 (ID="txtName") など、スキンとしては記述 できないプロパテゖもありますので、不要なプロパテゖは除去しておきます。 Bright フォルダーに作成したスキン フゔルの内容を以下に示します。Calendar についてはオートフォーマ ットによりデザンを選択した後、ソース ビューから ID 属性以外の部分をコピーしています。 <%-- Bright のスキン フゔル --%> <asp:TextBox runat="server" BackColor="yellow" Font-Names="メリオ" Wrap="True"> </asp:TextBox>
<asp:Calendar runat="server" BackColor="#FFFFCC" BorderColor="#FFCC66"
BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" ForeColor="#663399" Height="200px" ShowGridLines="True" Width="220px">
<DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" /> <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
<OtherMonthDayStyle ForeColor="#CC9966" />
<SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" /> <SelectorStyle BackColor="#FFCC66" />
<TitleStyle BackColor="#990000" Font-Bold="True" Font-Size="9pt" ForeColor="#FFFFCC" />
<TodayDayStyle BackColor="#FFCC66" ForeColor="White" /> </asp:Calendar>
●スキン ID を使って個別にスキンを指定する
スキンは、スキン ID 属性 (SkinID) を指定することで、同じ種類のコントロールに対して、複数のデザンを 用意できます。以下は TextBox 用の 2 種類のスキンを記述した例です。
<asp:TextBox SkinID="Thick" runat="server" Font-Names="メリオ"
BackColor="#FFFFCC" BorderColor="#6666FF" BorderStyle="Solid" BorderWidth="2px">
</asp:TextBox>
<asp:TextBox SkinID="Normal" runat="server" Font-Names="メリオ" BackColor="#FFFFCC"
BorderColor="#6666FF" BorderStyle="Solid" BorderWidth="1px"> </asp:TextBox> Web フォームでこのようなスキン ID が設定されたスキンを利用する場合は、コントロールの SkinID プロ パテゖにスキン ID (上記の例では "Thick" か "Normal" のどちらか) を指定します。
■ページにテーマを設定する
ここまでの操作で出来上がったテーマをページに適用するには、デザン ビューから、プロパテゖ ウゖンドウ で DOCUMENT を選択し、Theme プロパテゖにテーマを指定します。すでに作成されているテーマがドロッ プダウンリストから選択できます。●アプリケーション (サイト) 全体でテーマを設定する
また、Web サト プロジェクト全体で 1 つのテーマを指定したい場合は、ゕプリケーションの構成フゔル (Web.config) の <system.web> 要素に次のような <pages> 要素を追加します。<system.web>
<pages theme="Bright" /> </system.web>
ようになります。