Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CSS: Flexbox and Custom Property
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takamori Kanao
December 05, 2016
Technology
45
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CSS: Flexbox and Custom Property
CSSの新仕様であるFlexboxとCustom Propertyについて
Takamori Kanao
December 05, 2016
Other Decks in Technology
See All in Technology
Getting Started with Google Antigravity
glaforge
0
300
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
570
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
220
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
130
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
USB PDを使ってスマホを労わりたい
raspython3
0
180
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
180
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
200
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
100
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
How to make the Groovebox
asonas
2
2.5k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Google's AI Overviews - The New Search
badams
0
1.6k
How STYLIGHT went responsive
nonsquared
100
6.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
ࠓͲ͖ͷ$44 'MFYCPYͱΧελϜϓϩύςΟ ۚඌوक
nFlexbox nカスタムプロパティ $44ͷ৽༷ Dev Fest Tokyo 2016 Modern CSS :
architecture, future specs, and build flow 森下雅章 increments, inc. でも紹介されていました
'MFYCPY
= Flexible Box Layout Module 'MFYCPY
= Flexible Box Layout Module 'MFYCPY フレキシブルなボックスを 簡単にレイアウトできちゃう 素敵なやつ
= Flexible Box Layout Module 'MFYCPY floatなんかもう要らない ※ ちなみにBootstrap3ではfloat、4からFlexboxを採⽤ フレキシブルなボックスを
簡単にレイアウトできちゃう 素敵なやつ
'MFYCPY • display: flex • flex: 1 • flex-direction: column
重要な3つのプロパティ 実際にレイアウトを作りながら説明します
'MFYCPY 今回つくるレイアウト 3カラムレイアウト 別名:Holy-Grail layout
'MFYCPY 今回つくるレイアウト もちろん レスポンシブレイアウトに 対応させます
'MFYCPY このレイアウトを簡潔に説明すると…
'MFYCPY こう ヘッダー フッター 右カラム 左カラム メイン コンテンツ
'MFYCPY ではまずはじめにhtmlの⾻組みだけ (html約50⾏)
'MFYCPY ヘッダーから整えていきます <header> <nav> <ul class="main-nav"> <li><a href="#" class="logo">Logo</a></li> <li><a
href="#">Menu 1</a></li> <li><a href="#">Menu 2</a></li> <li><a href="#">Menu 3</a></li> <li><a href="#">Menu 4</a></li> </ul> </nav> </header>
'MFYCPY まずは背景と⽂字の⾊を変えてみます background-color:#343434; color:#fefefe;
'MFYCPY <a>をブロック要素へ dispaly:block;
'MFYCPY list-style: none; /*li*/ margin: 10px; text-decoration: none; 点と下線を消して、間隔を広げます
'MFYCPY padding: 0; /*ul*/ border-radius: 5px; padding: 15px; 整えます
'MFYCPY ここで親要素に対してdispaly:flex !! display:flex; /* <ul> */
'MFYCPY ロゴを修正して、メニューとの間をスペーシング margin-right: auto; width: 200px; background-color:#EA5455; text-align: center;
'MFYCPY ヘッダーに背景⾊つけます background-color: #2D4059;
'MFYCPY ヘッダーの周囲に隙間があるので埋める /* <body>, <ul> */ margin:0;
'MFYCPY ヘッダー完成
'MFYCPY 次はコンテンツ <div class="main"> <section class="col-1"> <h1>Column 1</h1> <p>Lorem ipsum
dolor sit amet...</p> </section> <section class=“col-2”> ... </section>
'MFYCPY とりあえず背景と⽂字の⾊を変えてみます background-color: #2D4059; color: #EA5455; /* <h1> */ color;
#FEFEFE; /* <p> */
'MFYCPY 整えます margin: 10px; padding: 15px; border-radius: 5px;
'MFYCPY /* 親要素に対して */ display:flex; ここで再びdispaly:flex !!
'MFYCPY で、flex:1して 3つ同じ幅にする /* 各カラムに対して */ flex: 1;
'MFYCPY flex:1のようにすると、余⽩を指定した割合で埋めようとする flex:1 flex:1 flex:1
'MFYCPY 真ん中のメインコンテンツの幅を広げる /* .col-2に対して */ flex: 3;
'MFYCPY flex:1 flex:1 flex:3 1:3:1の割合で横いっぱいに広がっている感じ
'MFYCPY コンテンツ完成。
'MFYCPY 最後にフッターをやっていきます <footer> © 2016 Kanao </footer>
'MFYCPY ここでも背景と⽂字の⾊から変えていきます background-color: #343434 color: #FEFEFE;
'MFYCPY 整えます padding: 1% 0; text-align: center;
'MFYCPY 下に空⽩があるのでスティッキーフッターにしたい
'MFYCPY そのまえに… ヘッダー フッター 右 カ ラ ム 左 カ
ラ ム メイン コンテンツ ヘッダー フッター コンテンツ 右 カ ラ ム 左 カ ラ ム メイン コンテンツ 90度回転 させただけ 横向き3カラム 縦向き3カラム 今回のレイアウトは2つの 3カラムを単純に合わせたも のです
'MFYCPY なのでやることはさっきのコンテンツとほぼ同じ 固定 固定 flex:1
'MFYCPY ただし、全体にdispaly:flexをやるとこうなる /* body */ dispaly: flex;
'MFYCPY /* body */ flex-direction: column; デフォルト値はrowで横向き。columnを指定することで縦向きになる。 そこで、flex-direction:column
'MFYCPY /* body */ flex: 1; しかしこれでコンテンツに対してflex: 1してもだめ bodyの⾼さ100% =
画⾯の⾼さになっていない 100%
'MFYCPY /* body */ min-height: 100vh; bodyの⾼さを画⾯の⾼さにするとOK (単位はvh) vhについてはViewport unitsで検索
'MFYCPY 最後に全体の背景⾊を付けて、 /* body */ background-color: #FDE9C9;
'MFYCPY とりあえず完成
'MFYCPY このままでは画⾯幅が狭い時横並びのまま メディアクエリで モバイル端末では縦並びに 指定しておきます @media screen and (max-width:700px){ .main
{ flex-direction: column; } }
'MFYCPY 完成 記述したプロパティ数はたったの35
$44ΧελϜϓϩύςΟ
= CSS Custom Properties for Cascading Variables $44ΧελϜϓϩύςΟ
= CSS Custom Properties for Cascading Variables $44ΧελϜϓϩύςΟ 変数が使えるようになる
:root { --bg-color: #343434; --border-radius: 4px; --box-padding: 10px; --txt-color: white;
} $44ΧελϜϓϩύςΟ 使い⽅は簡単 • -- から始まるカスタムプロパティを定義する • 変数を使いたい場所で var(--hoge) という形で呼び出す .btn { display: inline-block; background-color: var(--bg-color); border-radius: var(--border-radius); color: var(--txt-color); padding: var(--box-padding); } :root…グローバル変数に定義するようなもの。普通はセレクタで定義する。 定義 呼び出し
:root { --base-font-size: 8px; --base-line-height: 15px; } .sample { font-size:
calc( var(--base-font-size) / 2); line-height: calc( var(--base-line-height) * 4); } $44ΧελϜϓϩύςΟ calc()と組み合わせるとさらに便利
/* CSS */ :root { --key-color: red; } /* JavaScript
*/ var styles = getComputedStyle(document.documentElement); var value = String(styles.getPropertyValue('--key-color')); console.log(value); // => red $44ΧελϜϓϩύςΟ JavaScriptから変数を読み込むこともできる
ॴײ Flexbox 楽に思い通りのレイアウトにできる。 Bootstrap 4がFlexboxを採⽤したので、 今後FlexboxによるCSSレイアウトが普及しそう。 CSS Variables (CSSカスタムプロパティ) Sassのようなプリプロセッサと違い、動的な変数。
つまり実⾏時に変更が可能になる。すごい。
ॴײ しかしブラウザの未対応問題やバグでまだまだ… ※ SafariやIE10ではベンダープレフィックスが必要 ※ Flexboxは特にIEやSafariでバグが多い→flexbugsにまとめ
ͦ͜Ͱ PostCSS 次世代CSS (と⾔われてから1年ほど経つ) がなんか今すごい注⽬されている (bootstrap 5ではPostCSSが採⽤されるという話も) { css processor
}
OFYU PostCSS
A Complete Guide to Flexbox https://css-tricks.com/snippets/css/a-guide-to-flexbox/ floatより⾟くない「flexbox」でざっくりレイアウト http://qiita.com/hashrock/items/939684b9207dbab1d59e カスケード変数のための CSS
カスタムプロパティ ̶ CSS Custom Properties for Cascading Variables Module Level 1 https://triple-underscore.github.io/css-variables-ja.html CSS Variables (CSS カスタムプロパティ) の使い⽅ https://hyper-text.org/archives/2014/07/css_variables.shtml CSS Variables(カスタムプロパティ): なぜ、関⼼を持つべきか? http://postd.cc/css-variables-why-should-you-care/ 参考