백성훈Seonghoon Baek
CSS 와 BEM
CSS의 의미와 특징
CSS의 방법론과 BEM
CSS Modules
BEM과 CSS Modules
CSS
Presentation
Sizing
Positioning
CSS for Presentation
Painting
Responsive
CSS for Presentation
Functions
Dynamic control
CSS의 의미
CascadingStyleSheet
CascadingStyleSheet
inheritance
Cascade rules
user-agent
inheritance
Cascade rules
user-agent
selectors
inheritance
Cascade rules
user-agent
selectors
source order
inheritance
Cascade rules
user-agent
inline
selectors
source order
inheritance
Cascade rules
!important
user-agent
inline
selectors
source order
inheritance
Cascade rules
Cascading
user-agent
inline
selectors
inheritance
CSS의특징
!important
inline
selectors
source order
inheritance
Cascade rules
user-agent
CSS의 특징
GlobalNamespace
CSS의 확장
implicit dependencies
Dead Code
Global Namespace
Restyling
implicit dependencies
Dead Code
Global Namespace
CSS의 확장
Readable
less calculate
Sustainable
Isolation
Restyling
Design Methodology
Naming Convention / File Structure
Naming Convention
Naming Convention
.navigation > div
Naming Convention
> div.navigation
?
Naming Convention
1. 의미있는 단어로 지정해야 합니다.
Naming Convention
.navigation > div:not(.logo)
less calculate
.item
.item
.logo
.item
.navigation > div:not(.logo)
less calculate
.item
.item
.logo
.navigation > div:not(.logo)
.item
less calculate
.item
.item
.logo
.navigation > div:not(.logo)
.item
Event & Restyling
less calculate
2. 선택자의 복잡성은 웹 성능을 저하시킨다.
Naming Convention
1. 의미있는 단어로 이름을 짓자.
2. 선택자의 복잡성을 줄이자.
B E M
BEM ?
BEM ?
1. Unintentional dependencies
2. Long cascade rules
3. An out of control Classes
BEM ?
HTML-Interface
BEM ?
Block+Block+Block
Block+Block+Block
BEM ?
Block+Block+Block
BEM ?
Block
Element
Modifier
BEM ?
Block__Element—Modifier
BEM ?
Block__Element—Modifier
B- independentanywhereonthepage
BEM ?
B- independentanywhereonthepage = Component
BEM ?
BEM
.navigation
B- independentanywhereonthepage = Component
E- nomeaningonitsown,it’snameofapartforfunction
BEM ?
BEM
.navigation
.navigation__link
B- independentanywhereonthepage = Component
E- nomeaningonitsown,it’snameofapartforfunction
M-differentversionofablockoranelement
BEM ?
BEM
.navigation
.navigation__link
.navigation__link—active
1.Useclassnameselectoronly
A rules of BEM
2.Notagnameorids
3.Nodependencyonotherblocks/elementsonapage
.navigation
.navigation—item
.navigation—item__last
.navigation
.item:nth-last-child(1)
.item
BEM is
.navigation
.navigation—item
Readable
less calculate
Sustainable
Isolation
.navigation—item__last
BEM is
Preprocessor
BEM and
BEM and
BEM and
.navigation {
&—item {
&__last {
}
}
}
.navigation
.navigation—item
.navigation—item__last
SASS CSS
BEM Examples
BEM Examples
Navigation
BEM Examples
Navigation
Navigation__inner
Navigation__logo Navigation__links
BEM Examples
Navigation
Navigation__inner
Navigation__logo Navigation__linksNavigation__link—active Navigation__link
예제를 더 보기쉽게 박스
FileStructure
File Structure
File Structure
File Structure
ComponentDrivenDesign
File Structure
Component
Components
CSS
Javascript
HTML
CSS
Javascript
HTML
+
BME Examples
CSS and BEM
CSS문제를 CSS로
개발자의 인지적 노력
Preprocessor
Out of CSS
Out of CSS
In Javascript
in javascript with Webpack
Plugins in Webpack
CSS Modules in Webpack
CSS Modules in Webpack
header.scss
CSS Modules in Webpack
Filename Class HashComponent =
CSS Modules
Plugins
Readable
less calculate
Sustainable
Isolation
CSS Modules
CSS and CSS Modules
Webpack 학습, 제한적 환경
No more conflicts.
CSS in JS with Webpack
BEM과 CSS Modules
BEM과 CSS Modules
header__container___2TL19navigation__navigation-links
BEM과 CSS Modules
in CSS in Javascript
개발자의 인지적 노력 Webpack
별다른 도구 없이 웹팩, 바벨, 플러그인....
BEM과 CSS Modules
나에게 맞는 걸 선택하자.
implicit dependencies
Dead Code
Global Namespace
CSS를 이해하자
Readable
less calculate
Sustainable
Isolation
Restyling
CSS의 의미와 특징
CSS의 방법론과 BEM
CSS Modules
BEM과 CSS Modules
Q & A
Github : https://github.com/Lutece
e-mail : lallaworld1st@gmail.com
발표 후 많은 분들이 질문을 해주셨는데 시간이 없어
모두 답변하지 못해 많이 아쉬웠습니다.
그래서 질문을 위한 저장소를 만들었습니다.
URL : https://github.com/Lutece/Ask-for-everything
이 곳에서 Issues에 질문을 올려주시면 시간이 되는대로 꼭 답변해드리겠습니다.
(저는 github를 상시에 확인합니다.)
경청해주신 모든 분들께 감사드립니다.
감사합니다.

CSS와 BEM