追記: 公式がドキュメントに追記しましたので、そちらご紹介しておきます。日本語翻訳版です。
グローバルスタイルシート
--
Ionic 4(@angular/ionic)のStarter Templateには、Projectのデフォルトテンプレートとしてglobal.scss
を用意しています。つまり、Ionic4では、プロジェクトのデザインを以下の3つで行っています。
-
@ionic/core
のComponents -
@ionic/core
のComponentsの変数を用意しているtheme/variables.scss
- Projectのデフォルトテンプレート
global.scss
「@ionic/core
がWeb Componentsでつくられていて、Shadow DOMでCSS定義されてる。だから:root
経由で直接変数をさわることうんぬん」という上2つの話は別にするとしまして、ここではglobal.scss
を読んでいきます。
まず、global.scss
の中身は以下の通りです。
// http://ionicframework.com/docs/theming/
@import '~@ionic/angular/css/core.css';
@import '~@ionic/angular/css/normalize.css';
@import '~@ionic/angular/css/structure.css';
@import '~@ionic/angular/css/typography.css';
@import '~@ionic/angular/css/padding.css';
@import '~@ionic/angular/css/float-elements.css';
@import '~@ionic/angular/css/text-alignment.css';
@import '~@ionic/angular/css/text-transformation.css';
@import '~@ionic/angular/css/flex-utils.css';
直接node_modulesの中身をみたらもちろん確認することができるのですが、minify後のCSSを読みたくはないので、元のSCSSファイルをGitHubから見ることにしましょう。
import path
では@ionic/angular
となっていますが、GitHub上ではionic/angular
ではなく、ionic/core
に格納されているSCSSで定義されていました。ビルドの時にionic/core
からionic/angular
にコピーしてnpm publishしているようです。(興味ある方はlink-copy.jsあたりを読んでください)。
ですので、このglobal.scss
にimportされているファイルの元ファイルを追いたいと思うと、 ionic/core/src/css/
の中身を追うことになります。
それでは、ひとつずつ見ていきましょう。
core.css
core/src/css/core.scss にあります。ざっとみた感じ、2つの役割があって
-
共通で使う@mixinの定義
@ionic/core
のComponentsの変数を格納している[theme/variables.scss
]を、SCSS内で活用できるように展開。 -
アプリの外側を定義
bodyとか、iOSのstatusBarをSafeエリアとして保護する
のふたつをしているようです。
normalize.css
src/css/normalize.scssにあります。
normalize.css v3.0.2
をベースにノーマライズしています。ベースというか、ざっと見た感じ、そのまま利用してる感じですね。
structure.css
src/css/structure.scssにあります。
html
, body
にCSSを当てています。Ionicは、virtual scrollで挙動しますので、html
もbody
もheight/max-heightが100%になっています。
言い換えると、これをimportしている限りbodyをスクロールさせることができませんので、もし@ionic/angularで普通のWebサイトを構築しようとするとこいつをコメントアウトする必要があります。
typography.css
src/css/typography.scssにあります。
h1〜h6、small
が定義されています。
padding.css / float-elements.css / text-alignment.css / text-transformation.css / flex-utils.css
まぁ読んだらそうだな、というか。CSSまわりのディレクティブを定義づけています。
で解説されてるCSS Utilitiesまわりの話ですね。
<div padding></div>
とpadding
をつけると、16pxの余白ができるとか、そういうのはこの5つのファイルです。
まとめ
来春にはIonic4がリリースされますので、それに備えて少しずつ関連ファイルを読んでおくと、スタートダッシュが切れていいかもしれません。それでは、また。