ãã¡ãããããã¯ãã¹ãŠYandexã®ããŒãºããå§ãŸããŸããã åæã«ã圌ãæé·ããã«ã€ããŠãããã³ããšã³ãã«åŸäºããåŸæ¥å¡ã®æ°ãå¢å ããŸããã åŸã ã«ãããŒã ã¯éåžžã«æ¡å€§ãããããçµ±äžãããæšæºããªããã°äœæ¥ãå°é£ã«ãªãããšãæããã«ãªããŸããã ããã«ãç§ãã¡ã¯ããŸããŸãªéœåžã®Yandexã®ãªãã£ã¹ã«ãããŸãã ãã®ã¢ã€ãã¢ã¯ãããŸããŸãªãããžã§ã¯ãã«åãçµãã§ãã倧èŠæš¡ãªããŒã ã§ããã»ã¹ãæŽçããã®ã«åœ¹ç«ã€å ±éã®æ¹æ³è«ãäœæããããã«çãŸããŸããã ãããŠæãéèŠãªããšã¯ãéçºãåçåããã³é«éåããã ãã§ãªããæ°ããéçºè ã®ãããžã§ã¯ãã«åå ããããã®ãããå€ãäœããããã£ããšããããšã§ãã
BEMæ¹æ³è«ã®ç®çã¯äœã§ããïŒ
ã©ã®ãããªèŠä»¶ãçå®ããŸãããïŒ
- éçºè ã¯èªåã®ã³ãŒãïŒ1幎以å ã«æ»ã£ãåŸã§ãïŒãšBEMãããžã§ã¯ãããŒã ã®ããã°ã©ããŒã®ã³ãŒããç解ããå¿ èŠããããŸãã
- ã³ãŒãã®ãããã¯ã¯ãã¹ãŠåå©çšã§ããŸããå ±éç¥èããŒã¹ãäœæããæ¯åãã¹ãŠããŒãããäœæããã®ã§ã¯ãªããæ¢æã®ã¢ã€ãã¢ã䜿çšããå¿ èŠããããŸãã
- åãããŒã ã§äœæ¥ããå Žåãéçºè ããããŒãžã£ãŒããã¶ã€ããŒãã¬ã€ã¢ãŠããã¶ã€ããŒã¯åãããšãåãæ¹æ³ã§åŒã³åºãå¿ èŠããããŸãã ã€ãŸããåãèšèªã話ããŸãã
- ããŒã ã¯ã¹ãã·ã£ãªã¹ãã亀æããŠãç¹å®ã®æ©èœãå®è£ ã§ããŸãã
- ãã¹ãŠã®BEMãããžã§ã¯ãã®çµç¹æ§é ãåãã§ããããã¹ãŠã®ãšã³ãã£ãã£ã®åœåèŠåãåãã§ãããããæ°ãããããžã§ã¯ããžã®ç§»è¡äžã®ãšã³ããªã®ãããå€ãäžããå¿ èŠããããŸãã
éçºè ã®æ°ãå¢ãããšã補åã®å質ãåäžããããã«ããŸããã ããã¯ãéçºè ãäºãã®äœæ¥ãèªèããæ¢ã«å®è£ ãããŠãããã®ãåçºæããªãããšãæå³ããŸãã ããŸããŸãªãããžã§ã¯ãã«åãçµãåäžã®ããŒã ãäœãããã£ãã®ã§ãã
BEMéçºã®æŽå²
10幎åã®ã¬ã€ã¢ãŠãæ¹æ³
ããããããããã¹ãŠå§ãŸã£ããšããWebéçºã«ãããã³ã³ããŒãã³ãã¢ãããŒããšã¢ãžã¥ãŒã«æ§ã«ã€ããŠã®è©±ã¯ãããŸããã§ããã 誰ãããµã€ããæ§æããCSSã1ã€ã®
project.css
ãã¡ã€ã«ã«å ¥ããã¹ã¯ãªããã®ã»ãšãã©ã
project.js
ã«ãªãã
images
ãã©ã«ããŒã«å ¥ããŸããã
2005幎ãã€ã³ã¿ãŒãã§ã€ã¹ã®èŠ³ç¹ããèŠããšãéåžžã®ãããžã§ã¯ãã¯éçãªHTMLããŒãžã®ã³ã¬ã¯ã·ã§ã³ã§ããã ããã¯åœæã®å žåçãªãããžã§ã¯ãæ§é ã§ããïŒ
about.html # HTML- index.html ⊠project.css # project.js # images/ # yandex.png
CSSã¯
id
ãã¯ã©ã¹ãããã³ã¿ã°ã䜿çšããŸããã
äŸ
#foot div div div div { background-position: 54%; background-image: url(../i/foot-4.png); }
ã»ãšãã©ã®å Žåãåœæã®å žåçãªCSSã«ã¯é·ãã«ã¹ã±ãŒããå«ãŸããŠããŸããã
ããããªå€æŽã§ããé·ããªãã¡ã¯ã¿ãªã³ã°ãå¿ èŠã§ããã é¢ä»ããããéçHTMLããŒãžã¯ãã³ãã¬ãŒãã«ã«ãããããŸãã HTMLãå€æŽãããå Žåããã¹ãŠã®ç·šéãæåã§ãã³ãã¬ãŒãã«è»¢éããå¿ èŠããããŸããã
倧èŠæš¡ãããžã§ã¯ãã®ã¬ã€ã¢ãŠãã¯ç®¡çã§ããŸããã§ããã
BEMæ¹æ³è«ã®åºæ¬
䜿çšãããã¯ãããžãŒïŒHTMLãCSSãJavaScriptïŒã¯ãããžã§ã¯ãã®èŠä»¶ã«å¿ããŠå€æŽãããBEMã®ååã¯æ®éçãªãã®ã§ããã
ç§ãã¡ã¯ãç§ãã¡ã®ãããžã§ã¯ããçããçºå±ããæè¡ãããŒã«ã«æ±ºããŠäŸåããªãåºæ¬çãªã«ãŒã«ãçå®ããŸããã
éçºãã¹ããŒãã¢ããããããã«ãããŒãžã®åã ã®ã³ã³ããŒãã³ãã®HTMLããã³CSSã®ãµããŒããä¿é²ããã³ãŒãã®æ¥ç¶æ§ãäœäžãããå¿ èŠããããŸããã ãããè¡ãããã«ãããŒãžãããŒãã«åå²ããŸããã ããã§ãæ°ããã³ã³ã»ãããç»å ŽããŸãã- ããã㯠ã ãããã¯ã¯ããããã¯èªäœã®å€éšã§äœ¿çšãããªãããŸããŸãªèŠçŽ ã§æ§æã§ããŸãã ãããã¯ãšèŠçŽ ã®ç¶æ ãšåäœã¯ã 修食åã䜿çšããŠèšå®ã§ããŸãã
ãããã¯ãã»ãšãã©ã®ã«ãŒã«ãåºã¥ããŠãã3ã€ã®éèŠãªæŠå¿µã§ããã BlokãElementã M odifierã®3ã€ã®åèªã®ç¥èªããæ¹æ³è«ã®ååã«ãªããŸãã-BEMã
ãããã¯ãã
è«ççããã³æ©èœçã«ç¬ç«ããããŒãžã³ã³ããŒãã³ãã ãããã¯ã¯å®å šã«èªçµŠèªè¶³ã§ãïŒç¬èªã®åäœããã³ãã¬ãŒããã¹ã¿ã€ã«ãããã¥ã¡ã³ããªã©ãæã€ããšãã§ããŸãã ãããã¯ã¯ãããŒãžäžã®ã©ãã§ããå¥ã®ãããžã§ã¯ãã§ãç¹°ãè¿ã䜿çšã§ããŸãã
äžéšã®ãããã¯ã¯ä»ã®ãããã¯ã«ãã¹ããããçµã¿ç«ãŠãããããè€éãªãããã¯ãäœæããããã«äœ¿çšãããŸãã
ã¢ã€ãã
ãããã¯ããåé¢ããŠäœ¿çšããããšã¯ã§ããããã®èŠªã®ãã¬ãŒã ã¯ãŒã¯å ã§ã®ã¿æå³ããªããããã¯ã®éšåã èŠçŽ ã¯å¿ é ããã³ãªãã·ã§ã³ã§ãã
èŠçŽ ã䜿çšããå Žåãã«ãŒã«ãèŠããŠããããšãéèŠã§ããèŠçŽ èŠçŽ ãäœæããããšã¯ãå§ãããŸããã ããèŠçŽ ãå¥ã®èŠçŽ ã«ãã¹ããããšããããã¯ã®å éšæ§é ãå€æŽããããšã¯ã§ããªããªããŸããæ¢åã®ã³ãŒããæŽæ°ããã«èŠçŽ ã亀æãåé€ããŸãã¯è¿œå ããããšã¯ã§ããŸããã
修食å
å€èŠ³ãç¶æ ããŸãã¯åäœãå€æŽãããããã¯ãŸãã¯èŠçŽ ã®ããããã£ã
修食åã«ã¯ååããããéèŠãªå ŽåããããŸãã 修食åã®äœ¿çšã¯ãªãã·ã§ã³ã§ãã ãããã¯/èŠçŽ ã¯ãåæã«è€æ°ã®ç°ãªã修食åãæã€ããšãã§ããŸãã
ãã®ãããããšãã°ã修食åã䜿çšãããšãå£ã®è²ã ãã§ãªãããã®æ©èœãå€æŽã§ããŸãïŒèµ€ãå£ã®å Žåã«ç€ºãããã«ïŒã
CSSã»ã¬ã¯ã¿ãŒã®åœåèŠå
ãã¹ãŠã®BEMååãåŸã ã«åœ¢æãããå®è£ ãããŸããã ãŸããCSSã»ã¬ã¯ã¿ãŒã®å³å¯ãªåœåèŠåãçå®ããŸããã
BEMæ¹æ³è«ã«ããã°ããããã¯ã¯äžæã§ã¯ãªããåžžã«åå©çšã§ãããããCSSã«ãŒã«ã®èª¬æã§ã¯
id
䜿çšãæåŠããŸããã
ãããã¯ã¯ãåšå²ã®ãããã¯ã«äŸåããŠã¯ãªãããé£æ¥ãããããã¯ã«åœ±é¿ãäžããŠã¯ãªããªããããCSSã¯æåŠãããŸããã
- ã¿ã°
- ãã¹ããããã»ã¬ã¯ã¿ãŒã
- ããŒãžå šäœã®ã°ããŒãã«ãªã»ããã«ãŒã«ã
ã»ã¬ã¯ã¿ãŒã®åœåã«ãããéèŠãªå®çŸ©ãšã³ãã£ãã£ã¯ãããã¯ã§ãïŒ
- èŠçŽ /修食åã®å®å šãªååã¯ããã®èŠçŽ /修食åãç¹å®ã®ãããã¯ã«å±ãããã©ãããå€æããããã«äœ¿çšã§ããããã«åœ¢æãããŸãã
- èŠçŽ 修食åã®ååã«ãã£ãŠãç¹å®ã®ä¿®é£Ÿåãç¹å®ã®ãããã¯ã®ç¹å®ã®èŠçŽ ã«å±ãããã©ãããå€æã§ããã¯ãã§ãã
BEMãšã³ãã£ãã£ã®ååã®åœ¢æã«é¢ããèŠå
- åBEMãšã³ãã£ãã£ã«ã¯ç¬èªã®ã¯ã©ã¹ãå¿ èŠã§ãã
- ãããã¯ãèŠçŽ ãããã³ä¿®é£Ÿåã®CSSããããã£ã¯ãã¯ã©ã¹ãéããŠã®ã¿èª¬æãããŸãã
- ãã€ãã³ïŒ
-
ïŒ-
ãååã®åèªãåºåãããã«äœ¿çšãããŸãã - èŠçŽ ã¯ã2ã€ã®ã¢ã³ããŒã¹ã³ã¢ïŒ
__
ïŒã«ãã£ãŠãããã¯ããåé¢ãããŸãã 修食åã¯1ïŒ_
ïŒã§ãã - BEMãšã³ãã£ãã£ã®ååã¯ãå°æåã®æ°åãšã©ãã³æåã䜿çšããŠèšè¿°ãããŸãã
ç§ãã¡ã¯é·ãéååã®ãã¬ãã£ãã¯ã¹ãè©ŠããŸããããçµå±ããããæŸæ£ããŸããã
äŸ
- ãããã¯ã®ååã¯
header
ã§ãã - ãããã¯èŠçŽ ã®ååã¯
header__search-form
header
ãããã¯ã®search-form
èŠçŽ ã§ãã - ãããã¯ä¿®é£Ÿåã®ååã¯
header_theme_green-forest
header
ãããã¯ã®green-forest
å€ã®theme
修食åã§ãã - èŠçŽ 修食åã®ååã¯
header__search-form_disabled
-search-form
header
ãããã¯ã®disabled
èŠçŽ ã®ããŒã«ä¿®é£Ÿåã§ãã
HTML
<div class="header header_theme_green-forest">...</div>
CSS
.header { color: red; }
å€ãã®ä»£æ¿åœåäœç³»ããããŸãã éžæã¯åžžã«ããªã次第ã§ãã
ãã ããBEMãã©ãããã©ãŒã ããŒã«ã¯ãã®ç¹å®ã®åœåãªãã·ã§ã³ã䜿çšã§ãããããäžèšã®ã¹ããŒã ã«åŸãããšããå§ãããŸãã
HTMLã®BEM
ç§ãã¡ã¯HTMLãåçåããããšæããæçµçã«ã¯æäœæ¥ã§HTMLãèšè¿°ããªããšããçµè«ã«éããŸããã 詳现ã«ã€ããŠã¯ã BEMããŒã«ã®èª¬æã«é¢ããã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
HTMLã§ã¯ãåBEMãšã³ãã£ãã£ã¯ãã®ã¯ã©ã¹ã«ãã£ãŠå®çŸ©ãããŸãã
<div class="block-name"> <div class="block-name__elem"></div> ... </div>
æãåçŽãªå Žåããããã¯ã¯1察1ã®DOMããŒãã«å¯Ÿå¿ããŸãã ãã ããDOMããŒããšãããã¯ã¯åžžã«åããã®ã§ã¯ãããŸããã 1ã€ã®DOMããŒãã§è€æ°ã®ãšã³ãã£ãã£ãçµã¿åãããããšãã§ããŸãã ããã¯ããã¯ã¹ãšåŒã°ããŸãã
ããã¯ã¹ã®å©ããåããŠã次ã®ããšãã§ããŸãã
- ã³ãŒããè€è£œããã«ãããã€ãã®BEMãšã³ãã£ãã£ã®åäœãšã¹ã¿ã€ã«ãçµã¿åãããŸã
- æ¢åã®ãããã¯ãèŠçŽ ãããã³ä¿®é£Ÿåã«åºã¥ããŠãæå³çã«æ°ããã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒãã³ããäœæããŸãã
- è¿œå ã®ä¿®é£Ÿåãäœæããã«ã芪ã®ãã¹ãããããããã¯ã®äœçœ®ãèšå®ããŸãã HTMLã§ã©ãããŒãäœæããæ¹æ³ã®è©³çŽ°ã«ã€ããŠã¯ã ãã©ãŒã©ã ãã芧ãã ãã ã
äŸ
ãããžã§ã¯ãã§ã¯ããã¿ã³ã¯
button
ãããã¯ã§å®è£ ãã
button
ã ãã¿ã³ãæ€çŽ¢ãã©ãŒã ã«é 眮ãïŒ
search-form
ïŒããã¿ã³ã®ã€ã³ãã³ããèšå®ããå¿ èŠããããŸãã ãããè¡ãã«ã¯ã
button
ãããã¯ãš
search-form
ãããã¯ã®
button
èŠçŽ ãçµã¿åãããŠäœ¿çšââã
button
ã
<div class="search-form"> <div class="button search-form__button"></div> </div>
ãã®ããã¯ã¹ã䜿çšãããšãç¹å®ã®åœ¢ç¶ã®å¢çããã®ã€ã³ãã³ãã«ã€ããŠäœãç¥ããªããŠãããŒãµã«ãã¿ã³ã䜿çšã§ããŸãã ãã®å Žåãæ€çŽ¢ãã©ãŒã ã«ã¯ã
search-form__button
èŠçŽ ãšã
button
ããå¿ èŠããã
button
ãããã¯ããããŸãã
ããã¯ã¹ã®ä»£ããã«ã
button
ãããã¯ã«è¿œå ã®ä¿®é£Ÿåãäœæã§ããŸããã
button
ãããã¯ã®é 眮ã¯ãæ¬æ¥ããŠãããŒãµã«ãããã¯ã®äžéšã§ã¯ãªãããã®ç¹å®ã®äœ¿çšå Žæã«ã®ã¿é©ããŠããããããã®æ¹æ³ã¯ãå§ãããŸããã
ãã¡ã€ã«ã·ã¹ãã æ§æ
ãã¡ã€ã«ã·ã¹ãã ã®åæãããžã§ã¯ãæ§é ã«æºè¶³ããŠããŸããã§ããããã®äžã®ãšã³ãã£ãã£ã®å¿ èŠãªæè¡ãèŠã€ããŠèŠã€ããã®ã¯å°é£ã§ããã
æ°ããæ§é ããåŸãããã®ïŒ
- BEMãããžã§ã¯ãã®çµ±åãã¡ã€ã«ã·ã¹ãã ã
- ãŠãããŒãµã«ã§æ¡åŒµå¯èœãªãªããžããªæ§é ã ãããžã§ã¯ãã«ãã¯ãããžãŒãè¿œå ããå Žåãæ°ãããã¡ã€ã«ã®å Žæãäºåã«ããã£ãŠããŸãã
- ãããžã§ã¯ããã¡ã€ã«ã·ã¹ãã ã§ã®ã¯ã€ãã¯æ€çŽ¢ã
- ã³ãŒãã®åå©çšã
- ãããžã§ã¯ãå šäœãããããã¯å šäœã®ã³ãŒãã転éããç¡å¶éã®æ©èœã
ãŸãããããžã§ã¯ããªããžããªããã¯ãããžãŒå¥ã«åå²ããããšããŸããã
css/ html/ js/ xml/ xsl/
ãã®ã¢ãããŒãã§ã¯æ ¹æ¬çãªå€æŽã¯ç€ºãããŸããã§ããã ãã®ããããã¹ãŠã®ãããžã§ã¯ããšãã©ãããã©ãŒã ã«é©ããã³ãŒãã®å ±ééšåãå¥ã®
common
ãã£ã¬ã¯ããªã«ç§»åããŸããã ç¹å®ã®ãããžã§ã¯ãã«ã®ã¿å¿ èŠãªç¹å®ã®å®è£ ã¯ã
service
ãã£ã¬ã¯ããªã«åå¥ã«é 眮ãããŸããã ãŸãããµã³ãã«ã¯
example
ãã£ã¬ã¯ããªã«ãããŸãã
common/ css/ js/ xml/ xsl/ example/ html/ service/ auto/ css/ xml/
ããã§ãåã ã®ãããžã§ã¯ãã«é©ããã³ãŒããããã«èŠã€ããŸããã ãããããã®æ§é ã¯ãŸã ãã¹ãŠã®èŠä»¶ãæºãããŠããŸããã§ããã
ãããã¯ãäž»ã§ããããã¯ãããžãŒã¯å¯ã§ã
å¿ èŠãªãããžã§ã¯ãæ§é ãäœæããèªåèªèº«ã§èšå®ããç®æšãå®çŸããããã«ããã¯ãããžãŒã§ã¯ãªããããã¯ãæåé¢ã«æã£ãŠããŸããã
ãã¡ã€ã«ã·ã¹ãã å ã®ãããã¯ã¯å®å šã«ç¬ç«ããŠããŸãããã®å®è£ ã«å¿ èŠãªãã¹ãŠã®ãã¯ãããžã¯ããã®ãããã¯ã®ãã£ã¬ã¯ããªã«ãããŸãã
ç§ãã¡ãéæããããšïŒ
éçºã®å é
- ãããã¯ã¯åå©çšã§ããŸãã
- ãããã¯ã®å®è£ ã¯ãåºæ¬çãªæ©èœãšã¹ã¿ã€ã«ã«åœ±é¿ãäžããããšãªããæ°ããã¬ãã«ã®åå®çŸ©ã§å€æŽã§ããŸãã
- ãããã¯ã¯ããŒãžã®ç¬ç«ããã³ã³ããŒãã³ãã§ããããã®ãã£ã¬ã¯ããªã«ã¯ãæ£åžžã«æ©èœããããã«å¿ èŠãªãã¹ãŠã®ãã®ããããŸãã ãããã£ãŠããããã¯ããããžã§ã¯ããããããžã§ã¯ãã«ç°¡åã«è»¢éã§ããŸãããããã¯ã®ãã£ã¬ã¯ããªãã³ããŒããã ãã§ãã
ãªãã¡ã¯ã¿ãªã³ã°ã®é«éå
- éçºè ã¯å°ããªã³ãŒããããã¯ã§äœæ¥ããŸãã
- ãããããã¯ã®å®è£ æè¡ã¯ãå¥ã®ãããã¯ã®æè¡ãšã¯é¢ä¿ãããŸããã
- åããªããžããªæ§é ã«ããããããžã§ã¯ãå ããã°ãã移åããå¿ èŠãªãã¡ã€ã«ãèŠã€ããããšãã§ããŸãã
ãŠãããŒãµã«æ¡åŒµã·ã¹ãã
- ãªãŒããŒã©ã€ãã¬ãã«ã衚瀺ãããŠããŸãã
- ãã¯ãããžãŒã®æ°ã«å¶éã¯ãããŸããã æ°ããå®è£ ãã¯ãããžã¯ãç¹å®ã®ãããã¯ãã¡ã€ã«ã«å«ãŸããŠããŸãã ãã®ãããæ°ãããã¡ã€ã«æ§é ãäœæãããšãã«ãJavaScriptã§åäœãã¹ããäœæããäºå®ã¯ãããŸããã§ããã ãããããã®ãããªããŒãºãçãããšãããããã®ãã¡ã€ã«ããããžã§ã¯ãã®ã©ãã«é 眮ããããç¥ã£ãŠããŸããã
å®è£ æè¡
圌ãã¯æ°ããçšèªå®è£ æè¡ãæãã€ããã
ãããã¯ã¯ããŒãžäžã§ããŸããŸãªæ©èœãå®è¡ã§ããŸãã ãŠãããã®ç®çã«å¿ããŠããã®å®è£ ã¯ç°ãªãå ŽåããããŸãã BEMã§ã®å®è£ ãšã¯ãåäœãå€èŠ³ããã³ãã¬ãŒãããŠãããã®ããã¥ã¡ã³ããããããçš®é¡ã®ãã¹ããåçãªã©ãæå³ããŸãã
ãããã¯ãå®è£ ããã«ã¯ãããšãã°æ¬¡ã®ãããªããŸããŸãªãã¯ãããžãŒã䜿çšãããŸãã
- åäœ-JavaScriptãCoffeeScript;
- å€èŠ³-CSSãã¹ã¿ã€ã©ã¹ããµã¹;
- ãã³ãã¬ãŒã-ãžã§ã€ãããã³ãã«ããŒãXSLãBEMHTMLãBHã
- ããã¥ã¡ã³ã-MarkdownãWikiãXMLã
ãããžã§ã¯ãã®èŠä»¶ããªãéããå®è£ ãã¯ãããžã®éžæã¯å¶éãããŸããã
æ°ãããã¡ã€ã«æ§é ã®çµç¹ã§ã¯ãåå®è£ ãã¯ãããžã¯ã察å¿ããæ¡åŒµåãæã€åå¥ã®ãã¡ã€ã«ã§ãã ãã¹ãŠã®ãããã¯å®è£ ãã¡ã€ã«ã¯ããã®ãããã¯ã®ãã£ã¬ã¯ããªã«ä¿åãããŸãã
ãã®æ°ããååã«é¢ããŠããããžã§ã¯ãã®ãã¹ãŠãåæ§ç¯ãããŠããŸãã ãããã¯ã¯BEMã®éèŠãªæŠå¿µã«ãªããŸãã ãããã£ãŠããã¡ã€ã«ã·ã¹ãã ã®æ§é ã¯å€åããŠããŸãã
BEMãããžã§ã¯ãã®ãã¡ã€ã«ã·ã¹ãã ãæŽçããããã®ã«ãŒã«
- ãããã¯ã¯ããã¡ã€ã«ã·ã¹ãã å ã®åå¥ã®ãã£ã¬ã¯ããªã§ãã ãããã¯ã®ååãšãã®ãã£ã¬ã¯ããªãäžèŽããŸãã
- ãããã¯ã®å®è£ ã¯ãåå¥ã®ãã¡ã€ã«ã«åå²ãããŸãã
- ãããã¯ã«é¢é£ãããã¡ã€ã«ã¯åžžã«ãã®ãã£ã¬ã¯ããªã«ãããŸãã
- ãªãã·ã§ã³ã®èŠçŽ ãšä¿®é£Ÿåã¯ãå¥ã ã®ãã¡ã€ã«ã§åãåºãããŸãã
- ãããžã§ã¯ãã¯åå®çŸ©ã¬ãã«ã«åå²ãããŸã ã
äŸ
blocks/ input/ # input _theme/ # theme input_theme_forest.css # theme forest CSS __clear/ # clear input__clear.css # clear CSS input__clear.png # clear PNG input.css # input CSS input.js # input JavaScript button/ # button button.css button.js button.png
åå®çŸ©ã¬ãã«
ãããã¯ã®å®è£ ã§ãã£ã¬ã¯ããªãåŒã³åºãå§ããåå®çŸ©ã®ã¬ãã«ã ã¬ãã«ã®å€èŠ³ã«ããããããã¯ã®å®è£ ã®å€æŽãæ°ããããããã£ã®è¿œå ïŒåå®çŸ©ïŒããŸãã¯å¥ã®ã¬ãã«ã§ã®å€ãå€æŽïŒåå®çŸ©ïŒãå¯èœã«ãªããŸããã ãããã¯ã®æçµå®è£ ã¯ããã¹ãŠã®ã¬ãã«ããé çªã«åéãããŸãã
ãªãŒããŒã©ã€ãã¬ãã«ã䜿çšãããšã次ã®ããšãã§ããŸãã
- ã©ã€ãã©ãªãæ¥ç¶ããã³ãŒããå€æŽããã«æŽæ°ããŸãã
- ãããã¯å®è£ ã®å ±ééšåãããã¬ãã«ã§åé¢ããç¹æ®ãªã±ãŒã¹ïŒããšãã°ãåã ã®ãµãŒãã¹ã®ç¹å®ã®å®è£ ïŒãå¥ã®ã¬ãã«ã§åé¢ããŸãã
- ãããžã§ã¯ãããã©ãããã©ãŒã ã«åå²ããŸãã ãã¹ãŠã®ãã©ãããã©ãŒã ã®äžè¬çãªå®è£ ã¯1ã€ã®ã¬ãã«ã«ä¿æãããã©ãããã©ãŒã åºæã®å®è£ ã¯å¥ã®ã¬ãã«ã«é 眮ããå¿ èŠããããŸãã
- æ¢åã®æ©èœãå€æŽããå¿ èŠãããå Žåã¯ãã³ãŒããã³ããŒããŠæ°ãããšã³ãã£ãã£ãäœæããªãã§ãã ããã
ã¬ãã«ãã¬ã€ã€ãŒãšæ¯èŒããå ŽåãããŒã¹ã¬ã€ã€ãŒã¯ãããã¯ã®æåã®å®è£ ã§ãããåŸç¶ã®åã¬ã€ã€ãŒã¯äžã«éããããåºæ¬å®è£ ãè£å®ïŒç¶æ¿ïŒãŸãã¯å€æŽããŸãã
äŸ
project/ # input/ # input button/ header/ library-blocks/ # input/ # input button/ popup/
BEMã§ã®äœæ¥ãéå§ããæ¹æ³
ãæ°ã¥ããããããŸããããç§ãã¡ã®ããŒã ãåŸã ã«BEMãšé£æºãå§ããŸããã BEMæ¹æ³è«ã®æè»æ§ã«ãããçŸåšã®ããã»ã¹ã«åãããŠã«ã¹ã¿ãã€ãºã§ããŸãã
ãããžã§ã¯ãã§æ¹æ³è«ã®é©çšãéå§ããæ®éçãªæ¹æ³ã¯ãããŸããã ç¹å®ã®åããŒã ã¯ãéçºããã»ã¹ã«ãããåã蟌ã¿ãå¿ èŠã«å¿ããŠäœ¿çšããŸãã
ããšãã°ãã¬ã€ã¢ãŠãã«ã®ã¿BEMãé©çšãããããžã§ã¯ãããããŸãã ãããžã§ã¯ãã§CSSãšHTMLã䜿çšãããããCSSã»ã¬ã¯ã¿ãŒã®åœåèŠåããå§ããããšãã§ããŸãã ããã¯ãBEMæ¹æ³è«ã䜿çšããæãäžè¬çãªæ¹æ³ã§ãã å€ãã®ããŒã ã圌ããå§ããŸãã ãããããå§ããŸããã
æ°ããã«ãŒã«ãå°å ¥ããããšãç¬èªã®ããŒã«ãšãã¯ãããžãŒãå¿ èŠã«ãªããŸãã
BEMãšãã¯ãããžãŒ
Webéçºã§ã¯ãæçµè£œåã¯ããŸããŸãªãã¯ãããžãŒïŒHTMLãCSSãJavaScriptãªã©ïŒã§æ§æãããŸãã BEMæ¹æ³è«ã®åºæ¬ååã¯ããã¹ãŠã®é©çšå¯èœãªæè¡ã§çµ±äžãããçšèªãšå®è£ ã¢ãããŒãã䜿çšããããšã§ãã
Javascript
BEMã®çšèªã§äœæ¥ããåå®çŸ©ã¬ãã«ã§åå²ã§ãã宣èšçã«JavaScriptãäœæããã«ã¯ãç¬èªã®ãã¬ãŒã ã¯ãŒã¯i-bemãå¿ èŠã§ããã
BEMããªãŒ
å žåçãªWebéçºã¯ãHTMLãèšè¿°ããããããã³ãã¬ãŒãã«ã«ããããããšã«ãªããŸããã ãã¶ã€ã³ãå€æŽãããšãã¯ãHTMLãšãã³ãã¬ãŒããæåã§å€æŽããå¿ èŠããããŸããã
æäœæ¥ããªããããã«ãæ°ããã¬ãã«ã®æœè±¡å-BEMããªãŒãè¿œå ããŸãããããã«ããããããã¯ãèŠçŽ ãããã³ä¿®é£Ÿåã®èŠ³ç¹ããWebããŒãžã®æ§é ãæäœã§ããŸãã BEMããªãŒã¯ãDOMããªãŒãæœè±¡åãããã®ã§ãã
BEMããªãŒã¯ãããŒãžã§äœ¿çšããããã¹ãŠã®BEMãšã³ãã£ãã£ããã®ç¶æ ãé åºããã¹ããèšè¿°ããŸãã XMLãJSONãªã©ãããªãŒæ§é ããµããŒãããä»»æã®åœ¢åŒã§è¡šçŸã§ããŸãã
äŸ
DOMããªãŒã®äŸãèããŠã¿ãŸãããã
<header class="header"> <img class="logo"> <form class="search-form"> <input type="input"> <button type="button"></button> </form> <div class="lang-switcher"></div> </header>
ãã®ãããªBEMããªãŒã¯ããã«å¯Ÿå¿ããŠããŸãã
header logo search-form input button lang-switcher
Jadeãã³ãã¬ãŒããšã³ãžã³ãšæ¯èŒã§ããŸãããéãã¯HTMLãèšè¿°ãããæœè±¡åã䜿çšããŠããããšã§ãã
åãBEMããªãŒã¯ãXMLããã³BEMJSON圢åŒã§æ¬¡ã®ããã«è¡šç€ºãããŸãã
XML
<block:header> <block:logo/> <block:search-form> <block:input/> <block:button/> </block:search-form> <block:lang-switcher/> </block:header>
BEMJSONã¯ãBEMçšèªã§äœæ¥ã§ããããã«ããJavaScript圢åŒã§ãã BEMJSONã䜿çšãããšãHTMLããŒã¯ã¢ããããæœè±¡åãããããã¯ãèŠçŽ ãããã³ä¿®é£Ÿåã®èŠ³ç¹ããããŒãžãèšè¿°ããããšãã§ããŸãã
{ block: 'header', content : [ { block : 'logo' }, { block : 'search-form', content : [ { block : 'input' }, { block : 'button' } ] }, { block : 'lang-switcher' } ] }
ãã©ãŠã¶ã§åä¿¡ãããããŒãžãBEMããªãŒãšããŠèšè¿°ããæäœæ¥ã§HTMLãèšè¿°ããŸãããBEMHTMLãã³ãã¬ãŒããšã³ãžã³ã¯BEMJSONãåŠçããHTMLãçæããŸãã
BEMãšããŒã«
éçºè ã«ãšã£ãŠäŸ¿å©ãªåœ¢åŒã§ãã¹ãŠã®ãã¯ãããžãŒã䜿çšããããã«ããããžã§ã¯ããå€ãã®åå¥ã®ãã¡ã€ã«ã«åå²ããŸããã ããã«ãããäžèšã®å©ç¹ãåŸãããŸããã ããããçæãããã³ãŒãããã©ãŠã¶ãŒã§æ©èœããããã«ã ã¢ã»ã³ããªãšæé©åãå¿ èŠã§ããã
ãã¹ãŠã®ãã¡ã€ã«ãæåã§åéããã®ã¯äžäŸ¿ã§ãããã»ãšãã©ã®å埩ããã»ã¹ãèªååãå§ããŠããŸãã Bem-toolsã衚瀺ãããŸã-BEMæ¹æ³è«ã«åŸã£ãŠãã¡ã€ã«ãæäœããããã®ããŒã«ã®ã»ããã åŸã«ãbeb-toolsã¯ENBã«çœ®ãæããããŸããã
äºãã«äœãç¥ããªãç°çš®ãã¡ã€ã«ãåéã§ããããã«ããããã«ã DEPSãã¯ãããžãŒã䜿çšãããŸã ãããã¯ããããããã¯ãå¥ã®ãããã¯ãŸãã¯ãããã¯ã®ã»ããã«äŸåããŠããããšã瀺ããŸãã
BEMããŒã«ã¯ãéçºè ãèªåã«ãšã£ãŠéœåã®è¯ãæ¹æ³ã§ã³ãŒããäœæããããšãç®çãšããŠããŸããããããã¯ãæ£ããé åºã§ãããžã§ã¯ãã«å¿ èŠãªãã¡ã€ã«ã®ã¿ãæé©åããã³æ¥ç¶ããŸãã
BEMãšã©ã€ãã©ãª
å€ãã®BEMã©ã€ãã©ãªã¯ããªãŒãã³ãœãŒã¹ã§èŠã€ããããšãã§ããŸãã åºæ¬çãªãã®ã¯æ¬¡ã®ãšããã§ãã
- bem-coreã¯ã
i-bem
JavaScriptãã¬ãŒã ã¯ãŒã¯ãšBEMæ¹æ³è«ã«åŸã£ãŠéçºããããã®20åã®ãã«ããŒãããã¯ãå«ããããã¯ã®åºæ¬ã©ã€ãã©ãªã§ãã - bem-components-æ¢è£œã®ããžã¥ã¢ã«ã³ã³ããŒãã³ãïŒãããã¯ïŒã®ãŠãããŒãµã«ã©ã€ãã©ãªã ã€ã³ã¿ãŒãã§ã€ã¹ãæ§ç¯ããããã®ãã©ãŒã ã³ã³ãããŒã«ããã³ãã®ä»ã®åºæ¬ã³ã³ããŒãã³ããå«ãŸããŠããŸãã
bem-componentsã©ã€ãã©ãªã¯ãBootstrapãšåæ§ã«æ¥ç¶ã§ããŸããããªã³ã³ãã€ã«ãããã©ã€ãã©ãªãã¡ã€ã«ãè¿œå ãã
link
ããã³
script
èŠçŽ ã䜿çšããŠHTMLããŒãžã«æ¿å ¥ããŸãã
<link rel="stylesheet" href="https://yastatic.net/bem-components/latest/desktop/bem-components.css"> <script src="https://yastatic.net/bem-components/latest/desktop/bem-components.js+bemhtml.js"></script>
ãã®é ä¿¡æ¹æ³ã¯DistãšåŒã°ããäºåã«çµã¿ç«ãŠãããCSSããã³JavaScriptã³ãŒããšãã³ãã¬ãŒããå«ãŸããŠããŸãã ããã«ãããã¢ã»ã³ããªããŒã«ããã³ãã¬ãŒããšã³ãžã³ã¯å¿ èŠãããŸããããããã¯ã¯äºåã«çµã¿ç«ãŠãããŠåäœããŸãã
CDNãŸãã¯ããŒã«ã«ãããã¡ã€ã«ãæ¥ç¶ããæ¹æ³ãbowerã䜿çšããæ¹æ³ããŸãã¯ãœãŒã¹ããã©ã€ãã©ãªãã¡ã€ã«ããã«ãããæ¹æ³ã«ã€ããŠã¯ã ã©ã€ãã©ãªã®èª¬æãåç §ããŠãã ãã ã
ãããžã§ã¯ã調é
ãããžã§ã¯ãã¹ã¿ã -ãã¯ãããžãŒãšããŒã«ãããªã€ã³ã¹ããŒã«ããããããžã§ã¯ãã䜿çšããŠãBEMãããžã§ã¯ãã®éçºãããã«éå§ã§ããŸãã 圌ãç¥ãããšã¯ã BEMã®ã¯ã€ãã¯ã¹ã¿ãŒãã§ãã
project-stubã䜿çšããæ¡åŒµäŸã«ã€ããŠã¯ãããã¥ã¡ã³ããBEMã§ç¬èªã®ãããžã§ã¯ããäœæããããåç §ããŠãã ãã ã
ãããŠçµè«ãšããŠ
BEMæ¹æ³è«ã¯ããããžã§ã¯ãã®äœæ¥ãæŽçããããã®äžé£ã®ã«ãŒã«ãšæšå¥šäºé ã§ãã
ããæç¹ã§ãæ¹æ³è«ããã®å®çšçãªå®è£ ã§ãããã©ãããã©ãŒã ããåé¢ããŸããã
BEMãã©ãããã©ãŒã ã¯ãBEMæ¹æ³è«ã®äžè¬ååãå®è£ ããç¹å¥ãªã±ãŒã¹ã§ãã ãããžã§ã¯ãã®èŠä»¶ãèæ ®ããŠãã¹ãŠã®ãã¯ãããžãŒãäœæãããåŸã ã«éçºããããããBEMãã©ãããã©ãŒã ã¯ãBEMæ¹æ³è«ãæäŸãããã¹ãŠã®å¯èœæ§ãæãå®å šã«ã«ããŒããŸãã 詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
- , . .
, . . .