Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

Reactでnes cssを利用してみる

最近Webアプリのレイアウトについて勉強中!!

そこで、こちらのような記事を見つけました。
gigazine.net

Reactでも試してみたいな!!と思いたち調べてみました。
こちらをまとめてみたいと思います。



■まず始めに

Reactだと記事に上がっているcssをそのままlinkさせただけではできませんでした。。。
厳密には一部機能は有効だったのですが、ほとんどの機能が無効でした泣。
一筋縄ではいきませんね。

■Reactでnes cssを使用するための事前準備

ではどうすればReactでnes cssが利用できるのか?
ライブラリを用意してくれる方がいらっしゃいました!!
こちらがライブラリが格納されたサイトになります。
https://github.com/bschulte/nes-react

名前をreact nesと呼ぶらしいです。
こちらのサイトに記載されている通り、ライブラリをダウンロード・インストールするために、

npm install --save nes-react

を実行。

これでReact nesを利用するための準備が整いました。

■使ってみる

では実際にreact nesを利用してNES風のデザインを使ってみます。
まずは文字をNES風デザインで表示してみます。

コードはこちらでOKです。

import React, { Component } from 'react'
import {
    Container,
  } from "nes-react";

export default class nes1 extends Component  {
    render () {
        return(<div>
            <div>
                <link
                    href="https://fonts.googleapis.com/css?family=Press+Start+2P"
                    rel="stylesheet"
                />
                <Container>
                    <p>Hello World</p>
                    <p>We're using containers from nes.css!</p>
                </Container>
            </div>
        </div>
        )
    }
}
import {
    Container,
  } from "nes-react";

にて先ほどインストールしたnes reactライブラリをインポート。

<link
   href="https://fonts.googleapis.com/css?family=Press+Start+2P"
   rel="stylesheet"
/>

にて文字をNES風に変換。

<Container>
   <p>Hello World</p>
   <p>We're using containers from nes.css!</p>
</Container>

でコンテナ内に文字列を表示しております。
Containerにて四角枠を生成しているようです。

では、こちらのコードを実行してみます。
結果はこんな感じ!!
NES風フォントで表示されていますね。
f:id:Elsammit:20210205212139p:plain

次はボタンです。
コードはこんな感じ。

import React, { Component } from 'react'
import {
    Container,
    Button,
  } from "nes-react";

export default class nes1 extends Component  {

    render () {
        return(<div>
            <div>
                <link
                    href="https://fonts.googleapis.com/css?family=Press+Start+2P"
                    rel="stylesheet"
                />
            </div>
            <div>
                <Container title="Buttons">
                    <Button>Regular</Button>
                    <Button primary>Primary</Button>
                    <Button success>Success</Button>
                    <Button warning>Warning</Button>
                    <Button error>Error</Button>
                    <Button disabled>Disabled</Button>
                </Container>
            </div>
        </div>
        )
    }
}

先ほどのコードと異なる点ですが、

import {
    Container,
    Button,
  } from "nes-react";

にてボタンを追加し、

<Container title="Buttons">
    <Button>Regular</Button>
    <Button primary>Primary</Button>
    <Button success>Success</Button>
    <Button warning>Warning</Button>
    <Button error>Error</Button>
    <Button disabled>Disabled</Button>
</Container>

ボタンタグでボタンを定義すればOKです。
今回はOnClickは定義していませんが、一般のbuttonタグと同様にOnClickが定義可能です。

実行結果はこんな感じ。
ボタンもNES風になりました。
f:id:Elsammit:20210205212810p:plain

■こんなのも出来ます

react nesを利用するとこんなレイアウトも実現可能です。
f:id:Elsammit:20210205213342p:plain

コードはこんな感じになります。

import React, { Component } from 'react'
import {
    Container,
    Sprite,
    Balloon,
  } from "nes-react";
import './nes1.css'

export default class nes1 extends Component  {

    render () {
        return(<div>
            <div>
                <link
                    href="https://fonts.googleapis.com/css?family=Press+Start+2P"
                    rel="stylesheet"
                />
            </div>
            <Container className="ballons" title="Balloons">
              <div className="ballons" style={{ display: "flex" }}>
                <Sprite sprite="bulbasaur" style={{ alignSelf: "flex-end" }} />
                <Balloon style={{ margin: "2rem", maxWidth: "400px" }} fromLeft>
                  Hello !!
                </Balloon>
              </div>
              <div className="ballons" style={{ display: "flex" }}>
                <Balloon style={{ margin: "2rem", maxWidth: "400px" }} fromRight>
                  Hello World
                </Balloon>
                <Sprite sprite="bulbasaur" style={{ alignSelf: "flex-end" }} />
              </div>
            </Container>
        </div>
        )
    }
}

こちらに表示される画像ですが、これらの画像が用意されております。
f:id:Elsammit:20210205213709p:plain

名前ですが順番に、

"octocat",	"mario",		"ash",
"pokeball",	"bulbasaur",	"charmander",
"squirtle",	"smartphone",	"phone",
"kirby",	  "bcrikko"

で定義されております。
好きな画像を使えばよさそうです。

■最後に

こういうレイアウトを用いて、Webサイトを作成するとコミカルなサイトが作成できそうですね。
後、こちらのようにWebアプリでゲーム作成しようとしていたので、組み合わせてみようかな?
elsammit-beginnerblg.hatenablog.com