Your SlideShare is downloading. ×
モダンなCSS設計パターンを考える
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

モダンなCSS設計パターンを考える

25,023

Published on

HTML5 Conference 2013 "モダンなCSS設計パターンを考える" のセッションスライドです。

HTML5 Conference 2013 "モダンなCSS設計パターンを考える" のセッションスライドです。

Published in: Technology
0 Comments
138 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
25,023
On Slideshare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
154
Comments
0
Likes
138
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. モダンなCSS設計パターンを考える Modern CSS Architecture Hiroki Tani HTML5 Conference 2013
  • 2. Hiroki Tani CyberAgent, Inc.
  • 3. http://frontrend.github.io/ Frontrend in Sapporo Frontrend in Fukuoka 2013年12月7日 2013年1月
  • 4. Why Architecture ?
  • 5.   
  • 6.   
  • 7.   
  • 8. #news h2 { border-bottom: 1px solid black; padding: 1em 0.5em; font-size: 18px; font-weight: bold; }
  • 9. #news h2 { border-bottom: 1px solid black; padding: 1em 0.5em; font-size: 18px; font-weight: bold; } #faq .title { border-bottom: 1px solid black; padding: 1em 0.5em; font-size: 18px; font-weight: bold; }
  • 10. #news h2 { border-bottom: 1px solid black; padding: 1em 0.5em; font-size: 18px; font-weight: bold; } #faq .title { border-bottom: 1px solid black; padding: 1em 0.5em; font-size: 18px; font-weight: bold; } #service .feature .title { border: 1px solid black; padding: 0.5em; font-size: 16px; }
  • 11. .column_2 #inbox .list { ... } .column_3 #inbox .list { ... } .column_3 #inbox .list .name { ... } .column_3 #inbox .list .name p { ... .column_3 #inbox .list .name.reply { .column_3 #inbox .list .name.reply a body#top .column_3 #inbox .list.left } ... } { ... } { ... }
  • 12. !important
  • 13. Goals of Better CSS Architecture - Predictable - Reusable - Maintainable - Scalable 予測しやすい 再利用しやすい 保守しやすい 拡張しやすい http://enja.studiomohawk.com/2013/07/06/css-architecture/
  • 14. Modular CSS
  • 15. OOCSS Nicole Sullivan https://github.com/stubbornella/oocss/wiki
  • 16. OOCSS - Separate structure and skin 構造と見た目の分離 - Separate container and content コンテナとコンテンツの分離
  • 17. Media object
  • 18. <div class="media"> <div class="media-image"> <img src="/img/seminar/15/tani.jpg"> </div> <div class="media-body"> <p>...</p> <ul> <li><a>...</a></li> </ul> <p>...</p> </div> </div>
  • 19. <div class="media"> <div class="media-image"> <img src="/img/seminar/15/tani.jpg"> </div> <div class="media-body"> <p>...</p> <ul> <li><a>...</a></li> </ul> <p>...</p> </div> </div>
  • 20. <div class="media"> <div class="media-image"> <img src="/img/seminar/15/tani.jpg"> </div> <div class="media-body"> <p>...</p> <ul> <li><a>...</a></li> </ul> <p>...</p> </div> </div>
  • 21. .media { /* Clearfix */ } .media-image { float: left; margin-right: 10px; } .media-image img { > display: block; } .media-body { overflow: hidden; }
  • 22. <div class="media skin-a"> <div class="media-image"> <img src="/img/seminar/15/tani.jpg"> </div> <div class="media-body"> <p>...</p> <ul> <li><a>...</a></li> </ul> <p>...</p> </div> </div>
  • 23. <div class="media skin-b"> <div class="media-image"> <img src="/img/seminar/15/tani.jpg"> </div> <div class="media-body"> <p>...</p> <ul> <li><a>...</a></li> </ul> <p>...</p> </div> </div>
  • 24. How to build modules ?
  • 25. It depends.
  • 26. Rule of Three ‘Refactoring’ http://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)
  • 27. 3, 6
  • 28. 3, 6, 9, 12, 15 ...
  • 29. 3, 6, 12, 24, 48 ...
  • 30. 3, 6, 9
  • 31. 3, 6, 9, 12, 15 ...
  • 32. .fontSize10 { font-size: 10px } .colorRed { color: red }
  • 33. <p class="fontSize18 colorRed"> 入力内容に誤りがあります。 </p>
  • 34. <p class="box radius10 fontSize18 colorRed"> 入力内容に誤りがあります。 </p>
  • 35. .colorRed { color: red }
  • 36. .colorRed { color: orange; } ⚠
  • 37. .colorRed { color: orange; /* あとで直す */ } ⚠
  • 38. .fontSize18 { font-size: 18px }
  • 39. .fontSize18 { font-size: 18px } @media only screen and (max-width : 320px) { .fontSize18 { font-size: 14px } } ⚠
  • 40. .radius6 { border-radius: } .radius10 { border-radius: } .radius12 { border-radius: } .radius14 { border-radius: } 6px; 10px; 12px; 14px; ⚠
  • 41. How to maintain modules ?
  • 42. SMACSS Jonathan Snook http://smacss.com/ja
  • 43. 日本語、あります SMACSS Jonathan Snook http://smacss.com/ja
  • 44. SMACSS - Categorization カテゴライズ - Naming Convention 命名規則 - Decoupling CSS from HTML HTMLとCSSの分離
  • 45. SMACSS Categories - Base - Layout - State - Theme - Module
  • 46. /* # Base */ body, form { margin: 0; padding: 0; } a { color: #039; } a:hover { color: #03F; }
  • 47. /* # Layout */ #header { width: 960px; margin: auto; } .l-article { border: solid #CCC; border-width: 1px 0 0; } .l-grid { margin: 0; padding: 0; list-style-type: none; } .l-grid > li { display: inline-block; margin: 0 0 10px 10px; }
  • 48. /* # State */ .is-hidden { display: none; } .is-error { font-weight: bold; color: red; } .is-tab-active { border-bottom-color: transparent; }
  • 49. /* # Theme */ /* ## Spring Theme CSS */ .theme-header { background-image: url("/theme/spring/ header.png"); } .theme-border { 1px solid pink; }
  • 50. Message-box http://cdpn.io/hKBkm
  • 51. <div class="msg"> <p>...</p> </div> .msg { display: block; border: 1px solid #cccccc; border-radius: 8px; padding: 1em; background-color: #efefef; color: #333333; }
  • 52. <div class="msg msg-error"> <p>...</p> </div> .msg { ... } .msg-error { border: 1px solid #c0392b; background-color: #fe9282; }
  • 53. <div class="msg msg-success"> <p>...</p> </div> .msg { ... } .msg-success { border: 1px solid #27ae60; background-color: #99f3c9; }
  • 54. <div class="msg msg-error"> <h2>...</h2> <p>...</p> </div>
  • 55. <div class="msg msg-error"> <h2>...</h2> <p>...</p> </div> .msg h2 { font-size: inherit; font-weight: bold; } .msg p { margin-top: 0.6em; }
  • 56. .msg h2 { font-size: inherit; font-weight: bold; } .msg ul, .msg p { margin-top: 0.6em; }
  • 57. .msg h2 { font-size: inherit; font-weight: bold; } .msg ul, .msg p { margin-top: 0.6em; } ⚠
  • 58. <div class="msg msg-error"> <h2 class="msg-title"> ... </h2> <ul class="msg-body"> <li>...</li> <li>...</li> </ul> </div>
  • 59. .msg-title { font-size: inherit; font-weight: bold; } .msg-body { margin-top: 0.6em; }
  • 60. <div class="msg msg-error"> <p class="msg-title"> ... </p> <ul class="msg-body"> <li>...</li> <li>...</li> </ul> </div>
  • 61. <div class="msg msg-error"> <h2 class="msg-title"> <i class="msg-title-icon ico ico-label ico-alert"></i> ... </h2> <ul class="msg-body"> <li>...</li> <li>...</li> </ul> </div>
  • 62. .msg-title-icon { vertical-align: -0.3em; } .ico { display: inline-block; } .ico-alert { background-image: url(...); width: 24px; height: 24px; } .ico-label { margin-right: 0.3em; }
  • 63. %ico { display: inline-block; } %ico-alert { background-image: url(...); width: 24px; height: 24px; } %ico-label { margin-right: 0.3em; } .msg-error-icon { vertical-align: -0.3em; @extend %ico; @extend %ico-alert; @extend %ico-label; }
  • 64.
  • 65. .msg-error { border: 1px solid #c0392b; background-color: #fe9282; }
  • 66.
  • 67. .msg-title { font-size: inherit; font-weight: bold; } .msg-body { margin-top: 0.6em; }
  • 68. .msg { ... } .msg-error { border: 1px solid #c0392b; background-color: #fe9282; } .msg-title { font-size: inherit; font-weight: bold; }
  • 69. BEM Yandex http://bem.info/
  • 70. BEM stands for ... - Block - Element - Modifier
  • 71. Block
  • 72. Element
  • 73. Modifier
  • 74. .block { ... } .block__element { ... } .block_modifier { ... } .block__element_modifier { ... }
  • 75. .nav { ... } .nav__item { ... } .nav_segmented { ... } .nav__item_segmented { ... }
  • 76. .nav { ... } .nav__item { ... } .nav--segmented { ... } .nav__item--segmented { ... } http://enja.studiomohawk.com/2012/03/20/about-html-semantics-and-front-end-architecture/
  • 77. .msg { ... } .msg--error { border: 1px solid #c0392b; background-color: #fe9282; }
  • 78. .msg__title { font-size: inherit; font-weight: bold; } .msg__body { margin-top: 0.6em; } .msg__title-icon { vertical-align: -0.3em; }
  • 79. MCSS - Base - Project - cosmetic http://operatino.github.io/MCSS/en/
  • 80. inuit.css - Base - Generic - Objects http://inuitcss.com/
  • 81. SUIT - Utilities - Components https://github.com/suitcss/suit
  • 82. Front-end Styleguide
  • 83. Starbucks Style Guide http://www.starbucks.com/static/reference/styleguide/
  • 84. Pattern Primer http://patternprimer.adactio.com/
  • 85. MailChimp Pattern Library http://ux.mailchimp.com/patterns/
  • 86. Twitter Bootstrap http://getbootstrap.com
  • 87. KSS http://warpspire.com/kss/styleguides/
  • 88. Kalei http://kaleistyleguide.com/
  • 89. StyleDocco http://jacobrask.github.io/styledocco/
  • 90. // // # 見出し // // 説明文を書きます。マークダウン形式です。 // // ``` // <button type="button" class="btn btn-default"> // ``` で囲んだ部分にデモのHTMLを記述します。 // </button> // ``` .btn { display: inline-block; ... &:hover, &:focus { color: @btn-default-color; text-decoration: none; } }
  • 91. $ styledocco -n "ProjectName" css/ $ styledocco -n "ProjectName" -o "mydocs" $ styledocco -n "ProjectName" --preprocessor "lessc" less/
  • 92. Building Pages 🎬⚏ 👤 👤 
  • 93. Building Pages 🎬⚏ 👤 👤  🎬⚏    👤
  • 94. Building Pages Systems  🎬⚏  🎬⚏ 👤 👤   👤
  • 95. Developer vs Designer ?
  • 96. 🎬⚏ 👤 👤 
  • 97. 🎬⚏ 👤 👤   
  • 98. 🎬⚏ 👤 👤    
  • 99. 🎬⚏ 👤 👤     
  • 100. 🎬⚏ 👤 👤      
  • 101.    🎬⚏ 👤 👤    
  • 102.     🎬⚏ 👤 👤    
  • 103. Developer with Designer
  • 104. Best Practice
  • 105. Best Practices
  • 106. “ どんなに多くの人が貢献したとしても どのコードも一人で書いたようにする All code in any code-base should look like a single person typed it, even when many people are contributing to it. ” - Idiomatic CSS https://github.com/necolas/idiomatic-css
  • 107. “ 壊れない完璧な設計を求めるのではなく 壊れたときに勇気をもって修復できる設計を - Anonymous ”
  • 108. Thanks. - twitter.com/hiloki - inkdesign.jp - html5experts.jp/hiloki/
  • 109. Photo credit - http://www.flickr.com/photos/bpotstra/3490333174/sizes/l/ http://www.flickr.com/photos/bettybroadbent/3704523854/sizes/o/ http://www.flickr.com/photos/drewmaughan/8209503226/sizes/l/ http://www.flickr.com/photos/biodork/6849406792/ http://www.flickr.com/photos/43266097@N03/9444574320/sizes/l/ http://www.flickr.com/photos/90585146@N08/8234225693/sizes/l/ http://www.flickr.com/photos/lwr/6778863776/sizes/l/ http://www.flickr.com/photos/jezpage/4696962046/ http://www.flickr.com/photos/april-mo/8485249298/sizes/l/ http://www.flickr.com/photos/4st4roth/2366615948/ http://www.flickr.com/photos/sharman/4570412801/sizes/l/ http://www.flickr.com/photos/kaptainkobold/3771497484/ http://www.flickr.com/photos/laurie_pink/2549598674/sizes/l/ http://www.flickr.com/photos/dansdata/3266946102/ http://www.flickr.com/photos/ochre_jelly/6839227477/sizes/l/ http://www.flickr.com/photos/in-duce/2232109985/sizes/o/ http://www.flickr.com/photos/pgoyette/5911926699/sizes/z/ http://www.flickr.com/photos/conradoplg/10091603396/sizes/l/ http://www.flickr.com/photos/kaptainkobold/4441509147/sizes/l/

×