CSS Nite in Kobe, vol.55「モダンコーディング:XDで作られたデータを元に実装工程のセミハンズオン」に参加してきました

先日開催されたCSS Nite in Kobe vol.55「モダンコーディング:XDで作られたデータを元に実装工程のセミハンズオン」に参加してきました。
vol.54の続きで、前回に作成したビジュアルデザインを元に、コーディングを行っていきます。
今回の登壇者
登壇者は株式会社ICSの鹿野 壮さんです。
ICS MEDIAでも数多くの記事を書いているインタラクションデザイナーの方です。
今回はXDでできたビジュアルデザインを確認しながら、XDで進行するウェブサイト制作フロー3回のうちの最後の回でした。
XDでは簡単にプロトタイプモードでアニメーションを付けたりできますが、最終的に実装するときはコードで実装する必要があります。
また、デザイン時にせっかくアセット機能を使って便利に管理していたとしても、コーディング側が知らずに実装していてはすごくもったいないです。
最近のCSSに触れつつ、XDのデザインカンプを見ながらコーディングのセミハンズオンを行いました。
CSSのレイアウト
ウェブのCSSレイアウトは2020年現在で下記3つの方法があります。
| レイアウト方法 | 特徴 | 備考 |
|---|---|---|
| float | 要素を回り込ませる役割 | レイアウトとしてはレスポンシブ対応が面倒なので、 現在は「テキストの回り込み」の本来の役割としての使用が良さそう |
| Flexbox | 指定した要素の直下にある要素を レイアウトする | 要素の中央揃えも簡単に実現できる 直線には強いが、複数行のレイアウトには弱い |
| CSS Grid | 列(column)と行(row)を指定して、 その中に要素を配置していく | 複数行のレイアウトに強く、HTMLの並びに依存しない自由なレイアウトが可能 ただし、書き方が特殊で初心者が見ると混乱しそう |
個人的には「どれが良い」というわけではなく、ケースバイケースでそれぞれの長所を活かして、目的の実装をするのが1番です。
使い分け
例外ももちろんありますが、自分の場合は下記のような考え方で使い分けています。
まず、CSS Gridの特徴は複数行のレイアウトに強かったり、かなり柔軟なレイアウトができるので、大枠のレイアウト作成や「カード」などが複数行になって並べられている場合はCSS Gridを使用します。
それ以外の横並びレイアウトはFlexboxを使用、テキストの回り込みが必要な場合はfloatを使用します。
- 「大枠のレイアウト」や「複数行に並べられるカード」はCSS Grid
- それ以外の普通の横並びレイアウトはFlexbox
- テキストの回り込みが必要な場合はfloat
XDのトランジション
XDのアニメーション時に設定するイージングは、下記のCSS Transitionに相当します。
| XD | CSS |
|---|---|
| なし | transition: 0.3s linear; |
| イーズイン | transition: 0.3s ease-in; |
| イーズアウト | transition: 0.3s ease-out; |
| イーズイン/アウト | transition: 0.3s ease-in-out; |
「スナップ」と「ワインドアップ」はEasing Functions Cheat Sheetで似たもので対応できますが、「バウンス」は完璧に再現しようとすると時間がかかってしまうので、あらかじめデザイナーさんと話し合っておく必要があります。
CSS関連の話
最新のCSSに関しても触れましたが、面白かったのがCSS変数です。
下記の記述方法で定義して使います。
--main-color: #fff;使うときはvar()関数で呼び出します。
element {
background-color: var(--main-color);
}もともと存在は知っていましたが、Sassの変数を使わずCSSの変数を使うメリットがいまいちピンと来ていませんでした。
(Sassの変数の場合は$を付けて定義・呼び出しができるので、記述量も少なくて済む)
ただ、ダークモードの対応のためにCSS変数を使えば、色をかなりラクに管理できそうです。
@media (prefers-color-scheme: dark) {
--main-color: #333;
}新しい技術を知っておかないと、いつの間にか視野が狭くなって「いままでのままでいいじゃん!」と何も考えずに面倒な方法に縛られることになります。
ブラウザ対応状況などの理由から最新の技術は使えなかったとしても、たまに目を通すのは大切だと改めて感じました。



CSS Nite in Kobe, vol.56「プラグマティックペルソナとマイクロカスタマージャーニーを作ってみよう」に参加してきました
神戸で開催される078を盛り上げるためのアイデアソンに参加してきました
CSS Nite in Kobe, vol.52「ラクして毎日30分の時短! すぐにできるMacの作業効率化入門」に登壇してきました
CSS Nite in Kobe, vol.41「最新ネット広告の打ち手を学ぶ1dayレッスン 〜レスポンシブ検索広告からAmazon広告、ストーリーまで」に参加してきました
CSS Nite in Kobe, vol.48「ウェブサイトの課題発見とアイデア創出の方法を学ぶワークショップ」に参加してきました
【後編】Sync & Liveで取り回す Illustrator でのデータ作り!!CSS Nite in KOBE, Vol.26
【前編】Sync & Liveで取り回す Illustrator でのデータ作り!!CSS Nite in KOBE, Vol.26
あしたラボUNIVERSITY主催の学生限定ハッカソンに行ってきました
CSS Nite in Kobe, vol.45「Adobe XDの自動アニメーションで作るプロトタイプと 現場で活用できるマイクロインタラクションの作り方」に参加してきました
CSS Nite in Kobe, vol.43「ウェブページを高速化してユーザーに価値を届けたい制作者のためのセミナー&ワークショップ」に参加してきました
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法