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

More Related Content

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

What's hot

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

Viewers also liked

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

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

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

More from Hayato Mizuno

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

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


[8]ページ先頭

©2009-2025 Movatter.jp