Movatterモバイル変換


[0]ホーム

URL:


Hayato Mizuno, profile picture
Uploaded byHayato Mizuno
80,133 views

なんでCSSすぐ死んでしまうん

Frontrend in Kanazawa -(2014年10月18日開催)で使用したスライドです。 http://labo.dmm.com/frontrend/

Embed presentation

なんでCSS すぐ死んでしまうん Frontrend in Kanazawa https://www.flickr.com/photos/tveskov/3387394098
@pocotan001 Hayato Mizuno
@大阪 http://peatix.com/event/55901
BIG CSS https://www.youtube.com/watch?v=R-BX4N8egEc https://www.flickr.com/photos/nickpiggott/5212359135
“CSSはその単純さゆえに、 大規模な実装では管理が難しい。 BIG CSS “CSS, for all its simplicity, is a difficult language to manage in large-scale implementations. ” - MVCSS / Overview https://www.youtube.com/http://watch?mvcss.v=github.R-BX4N8egEc io/ https://www.flickr.com/photos/nickpiggott/5212359135
簡単なシンタックス ≠ 簡単な言語 ! 異なるバージョンとブラウザベンダーへの依存 ! ネームスペースの問題 ! 紳士協定だけでルBIG ールをCSS 制限する難しさ ! … https://www.youtube.com/watch?v=R-BX4N8egEc https://www.flickr.com/photos/nickpiggott/5212359135
http://p.twipple.jp/qk9sw
http://p.twipple.jp/qk9sw div { background: pink; }
望ましい設計のゴール https://www.flickr.com/photos/nickpiggott/5212959770/in/photostream/
メンテナンス 60% 開発 40% http://d.hatena.ne.jp/asakichy/20120420/1334872770
メンテナンス 60% 開発 40% 要件変更 60% 移行 23% バグ修正 17% http://d.hatena.ne.jp/asakichy/20120420/1334872770
メンテナンス 60% 開発 40% コードを 理解する時間 30% http://d.hatena.ne.jp/asakichy/20120420/1334872770
良いCSS設計のゴール メンテナンス 60% 開発 40% コードを 理解する時間 30% http://article.enja.io/articles/css-architecture.html http://d.hatena.ne.jp/asakichy/20120420/1334872770 ! 予測しやすい ! 再利用しやすい ! 保守しやすい ! 拡張しやすい
http://goo.gl/OnnMm
http://goo.gl/OnnMm 設計はルーズなプロセスである ! 問題を解決することで新たな問題を生む ! うまくいくかどうかは試してみないとわからない ! 要件が変われば設計も変わる(かもしれない)
メソドロジーとルール https://www.flickr.com/photos/bdesham/2432400623
“我々はページをデザインしているの ではない、コンポーネントのシステ ムをデザインしているのだ。 “We're not designing pages, we're designing systems of components. ” - Stephen Hay http://bradfrostweb.com/blog/mobile/bdconf-stephen-hay-presents-responsive-design-workflow/
http://styletil.es/
http://sparkbox.github.io/style-prototype/
http://medialoot.com/item/free-flat-ui-design-kit/
http://getbootstrap.com/
https://www.polymer-project.org/
https://www.flihctktpr.c:/o/cmo/dpehpoetons.io/la/peoncuolfetaann0/50914/f3u1ll/3E2tq2r9c6/
<paper-button label="button"> </paper-button> ! <paper-button label="button" raisedButton> </paper-button> https://www.polymer-project.org/docs/elements/paper-elements.html#paper-button
<paper-button label="button"> </paper-button> ! <paper-button label="button" raisedButton> </paper-button> Visual Non-visual ! <core-icon> ! <core-list> ! <core-overlay> ! … ! <core-ajax> ! <core-media-query> ! <core-localstorage> ! … https://www.polymer-project.org/docs/elements/paper-elements.html#paper-button
https:/h/wttwpsw:/./flwicwkrw.c.opmol/ypmheort-opsr/olajeecnt.uolfrega/nto/o5l9s4/d3e1s3ig2n2e9r6/
https://www.flickr.com/photohst/tlape:/n/cuulfesatonm/5e9le4m31e3n2ts2.9io6/
http://www.bestpsdfreebies.com/freebie/appz-psd-theme/
再利用可能な チャンクに分離する - OOCSS - https://github.com/stubbornella/oocss/wiki
.button { ... } ! .panel { ... }
付加要素は Modifierで拡張する
HTML <a class="button">Download</a> CSS .button { ... } !
HTML <a class="button">Download</a> CSS .button { ... } .button-raised { box-shadow: 0 1px 1px rgba(0, 0, 0, .5); } .button-large { font-size: 24px; }
HTML <a class="button button-raised">Download</a> CSS .button { ... } .button-raised { box-shadow: 0 1px 1px rgba(0, 0, 0, .5); } .button-large { font-size: 24px; }
HTML <a class="button button-large">Download</a> CSS .button { ... } .button-raised { box-shadow: 0 1px 1px rgba(0, 0, 0, .5); } .button-large { font-size: 24px; }
.panel { ... }
.panel { ... } ! .panel-colored { ... }
.panel { ... } ! .panel-colored { ... } ステートルール - SMACSS - https://smacss.com/book/type-state
.panel { ... } ! .panel-colored { ... }
.panel { ... } ! /* States */ .is-panel-active { ... }
.panel { ... } ! /* States */ .panel.is-active { ... }
.panel { ... } ! /* States */ .panel:hover, .panel.is-active { ... }
再利用しない ユニークな部分は?
プロジェクトレイヤー - MCSS - http://operatino.github.io/MCSS/ja/
.tagline { ... }
.tagline { ... } ! .tagline .button { ... }
プロジェクトレイヤー - FLOCSS - https://github.com/hiloki/flocss
.p-tagline { ... } ! .p-tagline .c-button { ... }
関心を分離せよ https://www.flickr.com/photos/clement127/9761836954
シナリオを立て 汎用さに対応する
<a class="button">Download</a>
<a class="button">Download</a> ! <button class="button">Download</button>
<a class="button">Download</a> ! <button class="button">Download</button> ! <span class="button">Download</span>
.button { position: relative; display: inline-block; box-sizing: border-box; padding: 12px 26px; border: none; background: #f12078; color: #fff; vertical-align: middle; text-align: center; text-decoration: none; font-size: 18px; cursor: pointer; user-select: none; }
.button { position: relative; display: inline-block; box-sizing: border-box; padding: 12px 26px; border: none; background: #f12078; color: #fff; vertical-align: middle; text-align: center; text-decoration: none; font-size: 18px; cursor: pointer; user-select: none; } ベースは後から 変更するのが難しい
.button { position: relative; display: inline-block; box-sizing: border-box; padding: 12px 26px; border: none; background: #f12078; color: #fff; vertical-align: middle; text-align: center; text-decoration: none; font-size: 18px; cursor: pointer; user-select: none; } Modifierで 拡張すべき要素か どうかをよく検討する
.button { position: relative; display: inline-block; box-sizing: border-box; padding: 12px 26px; border: none; background: #f12078; color: #fff; vertical-align: middle; text-align: center; text-decoration: none; font-size: 18px; cursor: pointer; user-select: none; }
スタイルとJSの フックを分離する
HTML <div class="panel"></div> JS $('.panel').on('click' ...);
HTML <div class="panel js-ui-featured"></div> JS $('.js-ui-featured').on('click' ...);
AngularJS https://angularjs.org/
<div class="panel" ng-click="..."> </div>
コンポーネント同士の 関係を疎にする
.panel { ... } ! .panel .heading { ... }
.panel { ... } ! .heading { ... }
.panel { ... } ! .heading 関{ 連...す }る 要素として 捉えるなら サブコンポーネント として定義する
.panel { ... } ! .panel-heading { ... }
.panel { ... } ! .panel-heading { ... } もしくは命名で どのようなルールが 適用されるかを伝える
http://getbootstrap.com/
http://getbootstrap.com/ Button groups
<Bduivtt oclna sgsr=o"butpn-sg:roup"> <button class="btn">Left</button> <button class="btn">Middle</button> <button class="btn">Right</button> </div> http://getbootstrap.com/
レイアウトを 分離する - SMACSS - https://smacss.com/book/type-state
.panel { float: left; box-sizing: border-box; margin-right: 20px; padding: 20px; width: 220px; background: #fff; }
.panel { float: left; box-sizing: border-box; margin-right: 20px; padding: 20px; width: 220px; background: #fff; }
.l-featured .panel { float: left; margin-right: 20px; width: 220px; }
.l-featured .panel { float: left; margin-right: 20px; width: 220px; } ユーティリティで 対応する - SUIT CSS - https://github.com/suitcss
.u-float-left { float: left; } ! .u-margin-r-m { margin-right: 20px; } ! ...
.u-float-left { float: left; } ! .u-margin-r-m { margin-right: 20px; } ! ... グリッドシステム を活用する - Kite - http://hiloki.github.io/kitecss/
<div class="kite kite--grid has-gutter"> <div class="panel kite__item is-3of12"> ... </div> <div class="panel kite__item is-3of12"> ... </div> <div class="panel kite__item is-3of12"> ... </div> <div class="panel kite__item is-3of12"> ... </div> </div>
http://hiloki.github.io/kitecss/
命名のルール https://www.flickr.com/photos/bfishadow/3634061465
https://bem.info/
https://bem.info/ block block_modifier block__element block__element_modifier
http://article.enja.io/articles/about-html-semantics-and-front-end-architecture.html
component component--modifier component__subcomponent component__subcomponent--modifier http://article.enja.io/articles/about-html-semantics-and-front-end-architecture.html
https://github.com/hiloki/flocss
c-component c-component—modifier c-component__subcomponent c-component__subcomponent—modifier https://github.com/hiloki/flocss
.button { ... } ! .button-raised { ... } ! .button-large { ... }
.button { ... } ! .button—-raised { ... } ! .button—-large { ... }
.panel { ... } ! .panel-heading { ... }
.panel { ... } ! .panel__heading { ... }
https://github.com/bjankord/CSS-Components-Modifiers-And-Subcomponents-Collection
スタイルガイドドリブン開発 http://webuild.envato.com/blog/styleguide-driven-development/ https://www.flickr.com/photos/tveskov/5550625027
http://kaleistyleguide.com/
http://kaleistyleguide.com/ シナリオを 可視化する
生きたスタイルガイド を持ち込む
https://www.flickr.com/photos/dex1138/7002850433 Code Smells http://article.enja.io/articles/code-smells-in-css.html
スタイルの取り消し
.button { box-sizing: border-box; padding: 12px 26px; text-align: center; } ! .button—-no-padding { スタイルの取り消し padding: 0; }
.button { box-sizing: border-box; padding: 12px 26px; text-align: center; } ! .button—-no-padding { スタイルの取り消し padding: 0; }
.button { box-sizing: border-box; text-align: center; } ! .button—-large { スタイルの取り消し padding: 12px 26px; }
マジックナンバー
マジックナンバー .bubble { position: absolute; top: -57px; left: 0; ... }
マジックナンバー .bubble { position: absolute; top: -57px; left: 0; ... }
マジックナンバー .bubble { position: absolute; bottom: 100%; left: 0; ... }
受動的な詳細度
#main .button { margin: 20px !important; width: 100% !important; 受動的な詳細度 }
#main .button { margin: 20px !important; width: 100% !important; 受動的な詳細度 }
.u-margin-m { margin: 20px !important; } ! .button--full { 受動的な詳細度 width: 100%; }
競合する要素に優先順位を ! ピクセルパーフェクト or フレキシブル ! すぐに稼働するコード or 美しいコード 競合する要素に優先順位を ! DRY or 保守性 ! 正しさ or 一貫性 ! 汎用性 or シンプルさ
https://github.com/pocotan001/ptan-no-css
https://github.com/pocotan001/ptan-no-css ! ベースはFLOCSSを採用 ! 例外としてコンポーネントはプリフィックスなし ! ユーティリティのみ略語を許容 ! CSSプリプロセッサーはなし ! Concat, Myth, Autoprefixer, Minify
Designer ♥ Developer http://www.flickr.com/photos/fallentomato/11768159726
“壊れない完璧な設計を求めるのでは なく、壊れたときに勇気を持って修 復できる設計を。 - cssradar
THANK YOU https://www.flickr.com/photos/tveskov/3387394098

Recommended

PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PPTX
技術選択とアーキテクトの役割
PDF
Azure App Service Overview
PDF
社内ドキュメント検索システム構築のノウハウ
PDF
Harbor RegistryのReplication機能
PDF
SolrとElasticsearchを比べてみよう
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
#살아있다 #자프링외길12년차 #코프링2개월생존기
PDF
HTML5, きちんと。
PDF
RDRA DDD Agile
PPTX
Spring と TDD
PDF
[Cloud OnAir] Anthosで実現するハイブリッドクラウド 〜 GKE On-Prem編 〜 2019年8月29日 放送
PDF
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
PDF
HBase at LINE
PDF
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.2.0対応)
 
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
PDF
Elasticsearchベースの全文検索システムFess
PDF
Hubsを何度も破壊して得た知見、話します
PDF
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PPTX
ITコミュニティと情報発信に共通する成長と貢献の要素
PPT
インフラエンジニアのためのcassandra入門
PPTX
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
PPTX
Azure Event Grid 事始め
PDF
Data persistency (draco, cygnus, sth comet, quantum leap)
PDF
Introduction to Firebase from Google
PDF
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
PDF
Data Modeling with NGSI, NGSI-LD
PDF
AWS Black Belt Online Seminar 2018 AWS Certificate Manager
PDF
ブラウザにやさしいHTML/CSS
PDF
メンテナブルでありつづけるためのCSS設計

More Related Content

PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PPTX
技術選択とアーキテクトの役割
PDF
Azure App Service Overview
PDF
社内ドキュメント検索システム構築のノウハウ
PDF
Harbor RegistryのReplication機能
PDF
SolrとElasticsearchを比べてみよう
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
#살아있다 #자프링외길12년차 #코프링2개월생존기
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
技術選択とアーキテクトの役割
Azure App Service Overview
社内ドキュメント検索システム構築のノウハウ
Harbor RegistryのReplication機能
SolrとElasticsearchを比べてみよう
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
#살아있다 #자프링외길12년차 #코프링2개월생존기

What's hot

PDF
HTML5, きちんと。
PDF
RDRA DDD Agile
PPTX
Spring と TDD
PDF
[Cloud OnAir] Anthosで実現するハイブリッドクラウド 〜 GKE On-Prem編 〜 2019年8月29日 放送
PDF
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
PDF
HBase at LINE
PDF
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.2.0対応)
 
PDF
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
PDF
Elasticsearchベースの全文検索システムFess
PDF
Hubsを何度も破壊して得た知見、話します
PDF
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PPTX
ITコミュニティと情報発信に共通する成長と貢献の要素
PPT
インフラエンジニアのためのcassandra入門
PPTX
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
PPTX
Azure Event Grid 事始め
PDF
Data persistency (draco, cygnus, sth comet, quantum leap)
PDF
Introduction to Firebase from Google
PDF
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
PDF
Data Modeling with NGSI, NGSI-LD
PDF
AWS Black Belt Online Seminar 2018 AWS Certificate Manager
HTML5, きちんと。
RDRA DDD Agile
Spring と TDD
[Cloud OnAir] Anthosで実現するハイブリッドクラウド 〜 GKE On-Prem編 〜 2019年8月29日 放送
全文検索サーバ Fess 〜 全文検索システム構築時の悩みどころ
HBase at LINE
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.2.0対応)
 
株式会社コロプラ『GKE と Cloud Spanner が躍動するドラゴンクエストウォーク』第 9 回 Google Cloud INSIDE Game...
Elasticsearchベースの全文検索システムFess
Hubsを何度も破壊して得た知見、話します
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
ITコミュニティと情報発信に共通する成長と貢献の要素
インフラエンジニアのためのcassandra入門
Aws 分散負荷テストツールを使ってapp runnerをスケールさせる(デモ動画削除)
Azure Event Grid 事始め
Data persistency (draco, cygnus, sth comet, quantum leap)
Introduction to Firebase from Google
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
Data Modeling with NGSI, NGSI-LD
AWS Black Belt Online Seminar 2018 AWS Certificate Manager

Viewers also liked

PDF
ブラウザにやさしいHTML/CSS
PDF
メンテナブルでありつづけるためのCSS設計
PDF
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
PDF
Webデザインのセオリーを学ぼう
PDF
大規模サイトにおける本当は怖いCSSの話
PDF
Web design
PDF
デザインのためのデザイン
PDF
Webデザインのトーン&マナーを導き出す手法
PDF
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
PDF
ノンデザイナーのためのWebデザイン講座
PDF
ノンデザイナーのための「デザインの判断」はとりあえずコレだけおさえよう
PDF
WordCamp Kansai 2015 デザイン初心者向けワークショップ〜 ブログデザインを実際に作ってみよう〜
KEY
ノンデザイナーのための配色理論
PDF
モダンなCSS設計パターンを考える
PDF
今必要なCSSアーキテクチャ
PDF
CSS の歩き方
PDF
Thinking about CSS Architecture
PPTX
2016年版 フロントエンド開発フォーマット
PDF
プログラマがWebデザインについて考えてみた
PDF
プログラマがデザインをがんばってみた
ブラウザにやさしいHTML/CSS
メンテナブルでありつづけるためのCSS設計
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
Webデザインのセオリーを学ぼう
大規模サイトにおける本当は怖いCSSの話
Web design
デザインのためのデザイン
Webデザインのトーン&マナーを導き出す手法
ヒューマンリーダブルな CSS 記述法(異次元編):2016年5月13日 CodeGrid 四周年記念パーティー
ノンデザイナーのためのWebデザイン講座
ノンデザイナーのための「デザインの判断」はとりあえずコレだけおさえよう
WordCamp Kansai 2015 デザイン初心者向けワークショップ〜 ブログデザインを実際に作ってみよう〜
ノンデザイナーのための配色理論
モダンなCSS設計パターンを考える
今必要なCSSアーキテクチャ
CSS の歩き方
Thinking about CSS Architecture
2016年版 フロントエンド開発フォーマット
プログラマがWebデザインについて考えてみた
プログラマがデザインをがんばってみた

Similar to なんでCSSすぐ死んでしまうん

PDF
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
PDF
「html5 boilerplate」から考える、これからのマークアップ
PDF
CSS3 Design Recipe
PDF
jQuery Performance Tips – jQueryにおける高速化 -
PDF
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
PPTX
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
PDF
Sass(SCSS)について
PDF
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
PPT
CSS勉強会
KEY
コーディングが上達するコツ
PDF
CSS Design and Programming
PDF
フロンエンドトレンドについて話そう
PDF
2017: A CSS Design Odyssey
PDF
マークアップ講座 02 CSS
PDF
今更ながらCSS3を試してみた
PPTX
Css3
PDF
Movable Typeセミナー2011年4月20日 in 名古屋 アイデアマンズ
PDF
フロント作業の効率化
PDF
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
PDF
マルチデバイス対応のコーディング・マークアップのポイント
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
「html5 boilerplate」から考える、これからのマークアップ
CSS3 Design Recipe
jQuery Performance Tips – jQueryにおける高速化 -
リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Sass(SCSS)について
CSSフレームワークを使った 簡単なレスポンシブデザインの作成
CSS勉強会
コーディングが上達するコツ
CSS Design and Programming
フロンエンドトレンドについて話そう
2017: A CSS Design Odyssey
マークアップ講座 02 CSS
今更ながらCSS3を試してみた
Css3
Movable Typeセミナー2011年4月20日 in 名古屋 アイデアマンズ
フロント作業の効率化
Webデザイン入門2-HTML5 フォーム,映像再生,音声再生, CSS3, レスポンシブWebデザイン-
マルチデバイス対応のコーディング・マークアップのポイント

More from Hayato Mizuno

PDF
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
PDF
ノンプログラマーのためのjQuery入門
PDF
"今" 使えるJavaScriptのトレンド
PDF
CoffeeScriptってなんぞ?
PDF
レンダリングを意識したパフォーマンスチューニング
PDF
メンテナブルPSD
PDF
フロントエンドの求めるデザイン
PDF
赤い秘密
PDF
レスポンシブWebデザインでうまくやるための考え方
Hello jQuery - 速習jQuery +綺麗なコードを書くためのヒント -
ノンプログラマーのためのjQuery入門
"今" 使えるJavaScriptのトレンド
CoffeeScriptってなんぞ?
レンダリングを意識したパフォーマンスチューニング
メンテナブルPSD
フロントエンドの求めるデザイン
赤い秘密
レスポンシブWebデザインでうまくやるための考え方

なんでCSSすぐ死んでしまうん


[8]ページ先頭

©2009-2025 Movatter.jp