SVGで提供されているロゴをメニューに表示してみます。今回はOpenAIのロゴを使用します。APEXで作ったアプリにChatGPTのAPIを呼び出す機能を加えたときに、役に立つかもしれません。
おそらく2021年までは回答の場所にあったのだと思いますが、現在はhttps://openai.com/brand#logosにありました。Download logosをクリックするとopenai-logos.zipというファイルがダウンロードされます。
SVGのロゴは、openai-logos.zipを展開すると作成されるディレクトリSVGs以下に、openai-logomark.svg(黒)、openai-white-logomark.svg(白)として含まれています。
SVGs % ls -l
total 40
-rw-r--r--@ 1 ********** staff 2946 4 11 06:44 openai-lockup.svg
-rw-r--r--@ 1 ********** staff 1735 4 11 06:45 openai-logomark.svg
-rw-r--r--@ 1 ********** staff 4141 4 11 06:46 openai-white-lockup.svg
-rw-r--r--@ 1 ********** staff 2414 4 11 06:47 openai-white-logomark.svg
SVGs %
APEXアプリケーションの共有コンポーネントの静的ワークスペース・ファイルを開きます。
SVGのデータを使ってCSSクラスを作成するには、2通りの方法があります。
- SVGファイルをアップロードし、CSSのクラス定義からファイルを参照する
- SVGファイルの内容をBASE64でエンコード(Quoted Printableも可)してCSSクラスに埋め込む
ファイルをアップロードするには、ファイルの作成をクリックします。
コンテンツを指定するためにファイルをドラッグ・アンド・ドロップをクリックして、ファイルを選択します。または、書いてある通りファイルをドラッグ・アンド・ドロップします。
作成をクリックすると、選択したファイルが静的ワークスペース・ファイルとしてアップロードされます。
openai-logomark.svgとopenai-white-logomark.svgをアップロードします。
アップロードしたSVGファイルを参照するCSSクラスを作成します。ファイルのアップロードと同様に、ファイルの作成をクリックします。
ファイル名はvendor-logos.cssとします。コンテンツを選択せずに作成をクリックすると、ファイルが新規作成されます。
ファイルの内容として以下を記述します。ファイルの拡張子がcssであれば、変更の適用時に自動的にミニファイされたCSSファイルも作成されます。参照はAPEXアプリケーションから、このCSSファイルの読み込むために使用します。あらかじめ、コピーしておきます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.openai-logomark { | |
background-image: url("openai-logomark.svg"); | |
background-repeat: no-repeat; | |
display: block; | |
background-position: center center; | |
background-size: contain; | |
width: 16px; | |
height: 16px; | |
} | |
.openai-white-logomark { | |
background-image: url("openai-white-logomark.svg"); | |
background-repeat: no-repeat; | |
display: block; | |
background-position: center center; | |
background-size: contain; | |
width: 16px; | |
height: 16px; | |
} |
CSSからSVGファイルを参照するのではなく、CSSファイルに埋め込むにはbackground-imageの指定を以下のように変更します。
メニューにロゴを表示するために、このCSSクラスをアプリケーションのすべてのページから参照可能にします。
静的ワークスペース・ファイルvendor-logos.cssの参照を、アプリケーション定義のユーザー・インターフェースのCSSのファイルURLに設定します。
以上ですべてのページからOpenAIのロゴが参照できるようになりました。
デフォルトで作成されるホーム・ページへのナビゲーションのアイコンを、OpenAIのアイコンに変更してみます。
共有コンポーネントのナビゲーション・メニューに含まれるナビゲーション・メニューを開きます。
リスト・エントリにホームがあるので、それを開きます。
イメージ/クラスをopenai-white-logomarkに変更します。
以上で記事の先頭の画像のように、OpenAIのロゴがメニューに表示されます。
これまでの例は、ユーザー・インターフェースのナビゲーション・メニューのリスト・テンプレートとしてSide Navigation Menuが選択されていました。
これをTop Navigation Mega Menuに変更します。
ナビゲーション・メニューをTop Navigation Mega Menuに変更すると、アイコンが表示されません。
これには2つ理由があります。
- 背景色が白なのでopenai-white-logmarkの代わりにopenai-logomarkを使用する
- クラスfaを追加で指定する
Side Navigation MenuとTop Navigation Mega Menuでテンプレート定義が異なるため、Top Navigation Mega MenuではCSSのクラス指定にfaを追加する必要があります。
リスト・エントリのイメージ/クラスをfa openai-logomarkに変更します。
APEXのアプリケーションには、アイコンを埋め込むことができる場所が多数あります。思ったように表示されない場合(特にアイコンとなるspan要素がHTMLに含まれているにもかかわらず)には、同様の対応が有効である可能性があります。
以上になります。
Oracle APEXのアプリケーション開発の参考になれば幸いです。
完