この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Salesforce スタイルの使用

詳細ページの関連リストやセクションヘッダーなど、多くの Visualforce コンポーネントのデザインは、Salesforce の同じコンポーネントと共通しています。配色など、こうしたコンポーネントのスタイルの一部は、コンポーネントが表示されるタブに基づいています。コンポーネントのスタイル設定に使用するタブスタイルを指定するには、ページを標準コントローラに関連付けるか、<apex:page> または <apex:pageBlock> タグの tabStyle 属性を設定します。
  • Visualforce ページに標準コントローラを使用する場合、新しいページには、関連付けられたオブジェクトの Salesforce での標準タブのスタイルが適用されます。これにより、関連オブジェクトに関連付けられたメソッドやレコードにアクセスすることもできます。
  • カスタムコントローラを使用する場合、<apex:page> タグの tabStyle 属性により、関連付けられた Salesforce ページのデザインを模倣できます。ページを部分的に Salesforce ページに似せる場合、<apex:pageBlock> タグの tabStyle 属性を使用できます。getter メソッドの定義の例を参照してください。
Salesforce ユーザインターフェースのカスタマイズの詳細は、「設定のカスタマイズ」を参照してください。

Salesforce スタイルの拡張

ページにスタイルシートを追加するには、<apex:stylesheet> タグを使用します。スタイルシートのスタイル定義に Visualforce コンポーネントを接続するには、これらのほとんどのコンポーネントで使用できる style 属性または styleClass 属性を使用します。このように、独自の Salesforce スタイルを拡張できます。

次のマークアップは非常に基本的なページを示します。<apex:stylesheet> タグは、[設定] の [開発] | [静的リソース] で TestStyles という名前の静的リソースとして保存された、CSS スタイルシートを参照します。これは、<apex:stylesheet> タグの value 属性の $Resource グローバル変数によって参照されます。<apex:outputText> タグの styleClass 属性は、スタイルシートに定義されたサンプルスタイルクラスを使用しています。

1swfobject.registerObject("clippy.codeblock-0", "9");<apex:page>
2    <apex:stylesheet value="{!$Resource.TestStyles}"/>
3    <apex:outputText value="Styled Text in a sample style class" styleClass="sample"/>
4</apex:page>

この例に使用されているスタイルシートは、次のとおりです。

1.sample {
2    font-weight: bold;
3}

ユーザに表示する Salesforce スタイルの識別

Visualforce ページを作成する場合、期待される Salesforce のデザインを知っておくと、そのスタイルにマッチしたページを表示するのに役立ちます。たとえば、ユーザがデザインをカスタマイズするかどうか選択できるとします。Visualforce ページは、その違いを考慮して設計する必要があります。

ユーザに表示するスタイルを識別するには、$User.UITheme$User.UIThemeDisplayed という 2 つのグローバル変数が役立ちます。これら 2 つの変数は、$User.UITheme がユーザに表示すべきデザインを返し、$User.UIThemeDisplayed実際のデザインを返すという点で異なります。たとえば、ユーザは [新しいユーザインターフェースのテーマ] のデザインを表示するよう設定された権限を持っている場合がありますが、そのデザインをサポートしていないブラウザを使用していると、Internet Explorer 6 などで $User.UIThemeDisplayed が異なる値を返す場合があります。

どちらの変数も、次の値のいずれかを返します。
  • Theme1 — 古い Salesforce テーマ
  • Theme2 — Spring '10 以前に使用されていた Salesforce テーマ
  • PortalDefaultSalesforce カスタマーポータルのテーマ
  • WebstoreSalesforce AppExchange のテーマ
  • Theme3 — Spring '10 で導入された、現在の Salesforce テーマ
開発者が Salesforce に似た CSS スタイルをハードコードしたとします。Visualforce ページで新しいスタイルについても同じデザインを維持するために、開発者はユーザの設定に合わせるために複数のスタイルシートの中から選択する必要があります。次の例に、それを実現する方法の 1 つを示します。
1swfobject.registerObject("clippy.codeblock-2", "9");<apex:page standardController="Account">
2    <apex:variable var="newUI" value="newSkinOn" 
3        rendered="{!$User.UIThemeDisplayed = 'Theme3'}">
4        <apex:stylesheet value="{!URLFOR($Resource.myStyles, 'newStyles.css')}" />
5    </apex:variable>
6    <apex:variable var="oldUI" value="oldSkinOn" 
7        rendered="{!$User.UIThemeDisplayed != 'Theme3'}">
8        <apex:stylesheet value="{!URLFOR($Resource.myStyles, 'oldStyles.css')}" />
9    </apex:variable>
10    <!-- Continue page design -->
11</apex:page>
この例では、次の点に留意してください。
  • 表示するセクションを「切り替え」るには rendered 属性を使用する。
  • <apex:stylesheet> タグには rendered 属性がないため、この属性があるコンポーネントでラップする必要がある。
ユーザ向けに新しいデザインを有効にしても、ユーザがそれを表示するための適切なブラウザやアクセシビリティの設定を行っていない可能性があります。次のコード例では、$User.UITheme 変数を使用して代替情報をユーザに表示します。
1swfobject.registerObject("clippy.codeblock-3", "9");<apex:page showHeader="true" tabstyle="Case">
2    <apex:pageMessage severity="error" rendered="{!$User.UITheme = 'Theme3' && 
3                                                    $User.UIThemeDisplayed != 'Theme3'}">
4    We've noticed that the new look and feel is enabled for your organization. 
5    However, you can't take advantage of its brilliance. Please check with 
6    your administrator for possible reasons for this impediment.
7    </apex:pageMessage>
8    <apex:ListViews type="Case" rendered="{!$User.UITheme = 'Theme3' && 
9                                           $User.UIThemeDisplayed = 'Theme3'}"/>
10</apex:page>
$User.UIThemeTheme3 と同じですが、$User.UIThemeDisplayed は異なります。そのため、ページは最大限まで表示されません。

Salesforce スタイルシートの使用

Salesforce スタイルシートはバージョン管理されておらず、コンポーネントの外観やクラス名は予告なしに変更される可能性があります。Salesforce では、Salesforce スタイルシートを直接参照し、それに依存するのではなく、Salesforce スタイルのデザインを模倣した Visualforce コンポーネントを使用することをお勧めします。

警告

Salesforce では、アプリケーション全体でさまざまなスタイルシート (.css ファイル) を使用して、すべてのタブを Salesforce のデザインに準拠させています。これらのスタイルシートは、<apex:page> タグの showHeader 属性に false を指定しない限り、Visualforce ページに自動的に含まれます。

Salesforce スタイルシートが含まれないようにすると、独自のカスタムスタイルシートのみがページのスタイルに影響します。Salesforce のデザインに部分的または完全にマッチするスタイルを構築するという目的では、デフォルトのスタイルシートから選択したコンテンツを参照し、使用することをお勧めします。

次のスタイルシートには、参照可能なスタイルクラスが含まれています。これらは、Salesforce インスタンスの /dCSS/ ディレクトリにあります。
  • dStandard.css – 標準のオブジェクトとタブのスタイル定義の大半が含まれる。
  • allCustom.css – カスタムタブのスタイル定義が含まれる。

Salesforce は、組み込みスタイルの変更を通知したり、マニュアルを提供したりしていません。各自の責任で使用してください。

重要