DailyUI#002 背景の切り抜きをしたかったが断念。グラデーションが素敵なクレカ決済画面をトリビュート

こんにちは。はこだてたろうです。
今日の東京は暑かったです。夏日になるところもあったのだとか。
私は寒暖差にあまりやられないタイプですが、苦手な方はどうぞお体にお気をつけください。

目次

#002 Credit Card Checkout

DailyUIチャレンジ2日目は、クレジットカードでの支払画面です。
支払画面なので、カード番号などを入力してボタンを押せば支払完了となるUIになるように思いますが、カード番号などを入力するのはどちらかといえばカード登録画面だったり注文内容確認画面の直前だったりすることが多いように思います。
今回もそのような形でデザインされているもので探しました。

今回トリビュートする作品はこちら。

デザインを探していると、けっこう凝ったものが見つかりますが、作者さんの仰る「安心・安全・直感的なUI」が大事だなぁと共感します。

作成した画面

以下の画面を Next.js で作成しました。

今回はほぼ忠実に作らせていただきました。
と言っても、実は一部実現しきれていない箇所があり、作者さんには申し訳なく思います・・・。

実現できなかった箇所

画面上部に表示している注文プロセスを表現するUIは、MUIの Stepper というコンポーネントを利用しています。
今回はそのスタイル設定が満足にできませんでした。

上記の赤枠で示したところが微妙に異なっています。

  • Stepper の丸と丸をつなぐ線が切れてしまっている
  • Stepper の色が背景色と同じグラデーションになっていない

線が切れてしまっているのは、単に Stepper のカスタマイズが間に合っていないためです。
以下は実際のコードで、MUI のカスタマイズ例に少し手を入れたものになります。

const QontoConnector = styled(StepConnector)(({ theme }) => ({
  [`&.${stepConnectorClasses.alternativeLabel}`]: {
    top: 10,
    left: 'calc(-50% + 16px)',
    right: 'calc(50% + 16px)',
  },
  [`&.${stepConnectorClasses.active}`]: {
    [`& .${stepConnectorClasses.line}`]: {
      borderColor: '#9c99e9',
    },
  },
  [`&.${stepConnectorClasses.completed}`]: {
    [`& .${stepConnectorClasses.line}`]: {
      borderColor: '#9c99e9',
    },
  },
  [`& .${stepConnectorClasses.line}`]: {
    borderColor: theme.palette.mode === 'dark' ? theme.palette.grey[800] : '#eaeaf0',
    borderTopWidth: 3,
    borderRadius: 1,
  },
}));

ハイライトした箇所に width を足すことで線の幅が変わるのは確認できましたが、いい感じに丸と丸が繋がるまでには調整が間に合いませんでした。

2つ目のステッパーの色がグラデーションになっていない点については、CSSの background-clip を設定するっぽいですね。画面の裏にグラデーションの背景を仕込んで Stepper で切り抜いてあげる必要がありそうです。そして、それをするならそもそも画面上部のメニューバーも切り抜きで実装してあげないといけなさそうですね。

よく見たら「ん、Stepper もグラデーションになってるな・・・」と、実装途中に気がつきました。
実装する前にちゃんと見なさい、と怒られてしまいますね(^^;

おわりに

今回実装したコードは以下のレポジトリで公開しています。

GitHub
GitHub - hakoratory/daily-ui Contribute to hakoratory/daily-ui development by creating an account on GitHub.

#001と同様、このコードを作成するのに約2時間弱かかりました。
ベース部分をもっとサクッと作れるようになれば、今回のような細部の調整もしっかりできるだろうな〜と感じています。
今後のお題にもよりますが、コンポーネント化していくのもいいかもしれませんね。
引き続き精進していきたいと思います。

ご覧いただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

28歳のときに音楽家からエンジニアに転向。
WEB系のシステム開発(Java, C#, Vue, React など)に携わっています。

自分らしく力を発揮できて、自信を持って生きられる人を増やすための活動をしています。

コメント

コメントする

目次