Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HTMLとCSSとコンポーネント
Search
akatsuki1910
October 17, 2023
0
17
HTMLとCSSとコンポーネント
akatsuki1910
October 17, 2023
Tweet
Share
More Decks by akatsuki1910
See All by akatsuki1910
後輩に伝えたいこと
akatsuki1910
0
2
難解(かもしれない)言語
akatsuki1910
1
29
Reactのチュートリアルをしよう3
akatsuki1910
0
13
クソドメインを取ろう
akatsuki1910
0
29
Reactのチュートリアルをしよう2
akatsuki1910
0
14
Reactのチュートリアルをしよう
akatsuki1910
0
16
そのコレクション合ってる?
akatsuki1910
0
20
第3回 TypeScriptを使おう
akatsuki1910
0
10
第2回 TypeScriptを使おう
akatsuki1910
0
21
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Bash Introduction
62gerente
608
210k
Writing Fast Ruby
sferik
628
61k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Speed Design
sergeychernyshev
25
670
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Designing for humans not robots
tammielis
250
25k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Transcript
HTMLとCSSとコンポーネント らり
HTMLって何 HyperText Markup Language よくプログラミング言語じゃねぇ!ってネタにされるやつ WHATWGが仕様をまとめている
CSSって何 Cascading Style Sheets HTML や XML の要素をどのように修飾(表示)するかを指示する仕様の一つ W3Cが取りまとめている
何の話をするのか HTMLとCSSを扱うに当たって、気を付けるべき点や、概念の話をします タグとかプロパティは片っ端から覚えてください
HTMLとは ウェブページの基本レイアウトに従ってウェブページのコンテンツを記述し定義するもの ブラウザのレンダリングエンジンや、その他諸々の理由により見た目が違うのは、HTML タグはあくまで要素であるため、デザインとは一切関係ない そのため、見た目をそろえるためにreset.cssが必要になったりする https://developer.mozilla.org/ja/docs/Web/HTML
CSSとは 要素が画面上でどのように表現されるのかを定義したもの そのため、HTMLは要素の定義、CSSは表現内容と切り分けることで、デザインを付け やすかったりする https://developer.mozilla.org/ja/docs/Web/CSS
よく出る話 onClickを使う時、buttonタグ使うより、aタグで統一してしまえばいいのでは? input(type=button)とbuttonタグの違いは? => HTMLとCSSのどちらも知ってないときっぱり答えられない問題
簡単な解説 buttonはボタンタグ、aはアンカータグで、URLのハイパーリンクを作成するという意味が ある input(type=button)とbuttonタグは、仕様は全く同じだが、インライン要素とブロック要素 という点や、inputは終了タグが無いがbuttonタグはあるため、文字や画像を入れやすい といったデザインを当てる際に大きく違う点がある あとはフォーカスが当たるか、そもそもの仕様と合ってないなどある
素で書きたくないよね PugやSCSSなど、トランスパイルを行うことでHTMLやCSSに変換出来るものがある ただ、これらはあくまで素で書かない方法の手段でしかないため、例えばフレームワーク を用いた時に本当に導入すべきかを検討する必要がある Pugだと2~3年前に開発が終わっており、もう使わない方がよかったりする
コンポーネントの話 再利用可能なカスタム要素を作成し、その機能を他のコードから分離してウェブアプリ ケーションで利用できるようにします ただ、どの粒度で分けていいか分からない => スタイルガイドを元に組みましょうね~ => どれに乗っ取れば書きやすいんだ? https://bradfrost.com/blog/post/atomic-web-design/ https://developer.mozilla.org/ja/docs/Web/API/Web_components
コンポーネントの話 アトミックデザインであれば、最小単位はAtomといい、それ以上に分解出来ないぐらい まで分けたパーツの1つである 受け取り方によるが、大体はHTMLタグと同じような物を作るという考え方がある ここでいう同じような物とは、1つのHTMLタグを見た目、機能を使いやすいように置き換 えたものである https://spice-factory.co.jp/web/about-atmicdesign/
コンポーネントの話 例えばボタンコンポーネントを作るとする 内容としては、ポストするためのモーダルが表示されるものである
コンポーネントの話 ここでアトミックデザイン通りの考え方の一例を出すと Atomに当たる部分は、青背景のボタン枠のデザインだけである ここで、このコンポーネントの名前をAとする 文字はspanで囲って装飾することが想定されるため、違うタグを使うことから、また別の コンポーネントを用意して、組み合わせる ここで、このコンポーネントの名前をBとする A B
コンポーネントの話 Aだけを考えるなら、使用するのはボタンタグ1つだけになるはずである また、「モーダルを開く」というロジックはボタンタグとは関係ない そのため、ここで作るコンポーネントには、onclickに入れる関数を引数に持たせること で、ボタンタグとほぼ同じ挙動にさせることが出来る
コンポーネントの話 次にデザイン面から考える Aのデザインは分解すると、大まかに「角が丸」「大きさ」「色」に分解出来る ここで、デザイン上ボタンは角が丸であることが確定している想定で、Aのコンポーネント には角が丸になるCSSを書いておく ただ、大きさや色はボタンによって変わるため、Aのコンポーネントに引数として書くかは 考える必要がある(分解出来ているため)
コンポーネントの話 また、今回はデザインには無いが、disableがついた時やhoverした時、クリック時のアニ メーションが含まれた際、ロジックが関わってくるのであれば分けた方がよかったりする これはボタンのコンポーネントではなく、ボタンを目立たせるための装飾とロジックが一 緒になっているため、HTMLタグのくくりからは外れる可能性があり、一緒になっていると コンポーネントの粒度としても使いまわしにくいものになったりする
コンポーネントの話 ここで、タグがinput(type=button)のインライン要素か、buttonのブロック要素かでスタイ ルの当て方が変わってくる そのため、どちらを使うにしても、コンポーネント内のタグの要素を変更しない方がぱっと 見で使いやすく、HTMLのタグのように使える
課題 • 以下の内容を理由つきでコンポーネントを分けてください ◦ フォントサイズ ◦ 色 ◦ 大きさ ◦
形 ◦ 画像の有無 ◦ 画像のサイズ ◦ テキスト ◦ line-heightや太さ ◦ 複数行のテキスト ◦ disable ◦ clickの動作 ◦ 日/英の切り替え