表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

118/210

ionicのデザイン動的変更例(背景色など)

まず教材版の進捗です。


覚えるごとに書きたいことが増えるのが悩みの種ですが、ゲームブックアプリのレビューも頂いたので、巻いていきたいと思います。

(あとで追加すればいい訳ですしね)


ionic経験3か月目ですが、思うに使い方サンプルがあれば、ionicはもっともっと広まったんじゃないかなと思います。


(まだリリースしていない)教材版でも紹介していますが、ページの動的変更もその一つだと思います。


例えばゲームブック的には、ページごとに


・朝焼けの大海原

・雪降る裏道

・時間停止ぽい


的なデザイン変更も可能です。(色々試しまくりましたが悪くない方法かと思います。)


まあ、やりすぎはゲームブック的にどうかなと思わないでも無いですが機能的には面白いですよね。


コード的には、scssファイルに各表現ごとにクラス名を決めてデザインを用意して、htmlファイルの反映したい部分にtsファイルでそのクラスを追加して実装しました。


以下コードの例です。(例のごとくインデントを全角スペースに変換しています)


home.page.scss

---------------------------------------------------------------

 .clsNormal{ //明るめの背景に暗い文字色

  --ion-background-color:#efe9c9;

  --ion-text-color: #121512;

  --ion-item-background: #efe9c9; //スマートフォンアプリにしない場合は不要かも?

 }

 .clsDawnOcean{ //グラデーション、夜明けの海のイメージ

  --ion-background-color: linear-gradient(0deg, rgb(7, 42, 156), rgb(12, 3, 78) 31%,

  rgb(150, 10, 50) 31%, rgb(166, 14, 65) 32%,rgb(40, 3, 40) 70%, rgb(20, 3, 20));

  --ion-text-color: #eef5e0;

  --ion-item-background: linear-gradient(0deg, rgb(7, 42, 156), rgb(12, 3, 78) 31%,

  rgb(150, 10, 50) 31%, rgb(166, 14, 65) 32%,rgb(40, 3, 40) 70%, rgb(20, 3, 20));

 }

 .clsBlue{ //背景:青、文字色:白っぽく

  --ion-background-color:#260366;

  --ion-text-color: #eef5ee;

  --ion-item-background: :#260366;

 }

 .clsAnimation{ //2秒間かけて色彩をグレイスケールに変更

  --ion-background-color:#f0190a;

  --ion-text-color: #eef5ee;

  --ion-item-background: #f0190a;

  filter: grayscale(95%);;transition: filter 2s;

 }

---------------------------------------------------------------


.home.page.html

---------------------------------------------------------------

<ion-content id="screencolor" [fullscreen]="true">

 色々コンポーネントなどを設置

</ion-content>

---------------------------------------------------------------


.home.page.ts

---------------------------------------------------------------

 //変数宣言

 ch2scss="clsNormal";

 ch2prescss="clsNormal";

 //コンストラクタ

 constructor(){}


 //描画後の最初の関数

 ionViewDidEnter(){

  //最初はノーマルクラスデザインの表示

  let el=document.getElementById("screencolor");

  el.classList.add(this.ch2scss)

 }


 //関数

 //例えばページデータのデザインフィールドにクラス名があり

 //その値をthis.ch2scssにセット後、この関数を走らせる

 fnSetColorClass(){

  let el=document.getElementById("screencolor");

  el.classList.remove(this.ch2prescss) //前のクラスを除去

  el.classList.add(this.ch2scss)

  this.ch2prescss=this.ch2scss;    //次のデザイン変更時に除去するため名称保持

 }


---------------------------------------------------------------


評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ