1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OutSystemsのテーマスタイルシートについて何がどうなって生成されてるのか深堀りしてみた

Posted at

はじめに

現在、Front-end Developer Specialist (OutSystems 11)の試験勉強をしている中で、OutSystemsのCSSの優先順位について公式ドキュメント(カスケーディングスタイルシート - CSS)を読んでいたところ、

「このスタイルってどれのことを指してて、ブラウザやServiceStudioではどう出力されるの?」

という疑問が湧きました。
自動生成されるスタイルシートも含まれるので、普段の開発ではあまり意識しない部分があったりします。

そこで、Service Studioの画面とブラウザの開発者ツール(DevTools)を使って、各スタイルの適用箇所と出力結果を実例付きで深掘りしてみました!
こちらは「OutSystemsで自動生成されるスタイルシートについて疑問に思ったことをService StudioとDevToolsで確かめてみた」のPart2です。長くなり過ぎたので分けました。
興味があればこちらもお願いします。

今回の対象のスタイルシートは「基本テーマを含むテーマスタイルシート(指定された場合)」です。

テーマスタイルシートはServiceStudioでは複数個所から編集できるので、どこで変更したらどこに追加されるかをまとめてみました。
試験ではそこまで具体的に深堀りされないかもしれないですが、イメージの助けになればいいなと思っています。


公式ドキュメントのスタイル適用順序

OutSystemsでは、以下の順序でスタイルが適用されます(後のものほど優先されます)
基本テーマを含むテーマスタイルシート(指定された場合)は3番目に適用されるスタイルシートですね。

  1. グリッドのContainerウィジェットのシステムスタイルシート
  2. ブロックスタイルシート
  3. 基本テーマを含むテーマスタイルシート(指定された場合)
  4. 画面またはメールスタイルシート
  5. グリッド設定がThemeプロパティに定義されているテーマエクストラスタイルシート
  6. スタイルエディタ使用時にService Studioによって生成されるスタイル
  7. Attributes または Extended Properties で定義したインラインスタイル

使用環境

  • OutSystemsバージョン:11
  • Service Studioバージョン:11.55.22
  • ブラウザ:Google Chrome(DevTools使用)
  • アプリ種別:Reactive Web App

基本テーマを含むテーマスタイルシート(指定された場合)

疑問: 
テーマスタイルシートって結局何がどう出力されて生成されてるの?
結論:

  • 以下に設定したThemeのスタイルシートが出力される。
    • モジュールプロパティでDefault Themeに設定したTheme
    • Default ThemeのThemeプロパティでBaseThemeに設定したThemeのスタイルシート
  • モジュールプロパティでDefault Themeに設定したThemeのスタイルシート(DefaultTheme.css)はServiceStudioから編集する箇所によって追加される順番が異なる
    • Theme Editorから設定を変更するとDefaultTheme.cssの先頭に追加される
    • Style Sheet EditorのDefault Themeに追加したcssはDefaultTheme.cssの末尾に追加される

挙動を確認してみる: 

  • Service Studioでの編集の仕方
    「テーマスタイルシート」はモジュールプロパティのDefault Themeに設定しているテーマのスタイルシートのことを指します。
    デフォルトでアプリ名のテーマが生成され、DefaultThemeとして指定されています。
    ですので今回は「DebugTest_EndUser.css」が「テーマスタイルシート」として生成されます。
    {79299300-8B6A-4551-AF2F-E7CAB42C142F}.png
    「基本テーマ」はテーマのプロパティから設定することができます。
    {CC64E76C-620B-4AB6-BA0F-666F616A9424}.png
    上記の設定をすることでStyle Sheet Editorで下記の三つのスタイルシートが表示されるようになります。
    {5B098FFA-DA81-47BF-8CC1-307EF9FC6A58}.png

ちなみにDebugTest_EndUser(Theme Editor)はアプリ作成時にプライマリカラーなどを選択するので、デフォルトで表示されていますが、Theme EditorのReset all stylesボタンを押下すると、DebugTest_EndUser(Theme Editor)はStyle Sheet Editorで表示されなくなります。
{0A6FC25A-795F-4D06-B3EA-8561F3C149E8}.png

  • 読み込みタイミング:3番目
  • DevToolsでの出力例
    DevToolsのSourceタブから、生成されているスタイルシートを確認します。
    赤枠で囲ったcssが今回の対象です。
    {3FBD5ACD-4FE9-493E-88AD-364FA160CC1D}.png

ServiceStudioで表示されるスタイルシートは3つですが、生成されているスタイルシートは2つになっていますね。
DebugTest_EndUser.cssの中身を見てみると、DebugTest_EndUser(Theme Editor)の内容になっています。
{C836291D-30DF-4193-BCAA-0F8B379BD12D}.png
DebugTest_EndUserにクラスを追加してみます。
{5A54FC26-7C5E-47B2-ABF9-64AE24F1B2F2}.png
DebugTest_EndUser.cssの末尾に追加されたことが確認できました。
{61C9CC8C-0853-41CE-8EED-1C004B08AD8F}.png
Theme Editorからフォントの設定を変更してみます。
{A95B2D6F-5436-496E-AC04-5660027E3B11}.png
DebugTest_EndUser.cssの先頭にクラスが追加されたことが確認できました。
{C795878B-BAF7-48A9-A777-5C1EB5489605}.png


まとめ

今回はOutsystemsのテーマスタイルシートについて調べてみました。
フロントエンドについて勉強している方の勉強の参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?