이 글에서는 대규모 프로젝트를 위한 깔끔하고 구조적이며 유지 관리 가능한 CSS를 작성하는 데 도움이 되는 인기 있는 CSS 명명 규칙인 BEM(Block, Element, Modifier) 방법론에 대해 자세히 알아봅니다. BEM은 프로젝트가 성장함에 따라 코드의 확장성을 유지하고 스타일 충돌 가능성을 줄입니다.
BEM은 다음을 의미합니다.
BEM 방법론은 재사용 가능하고 예측 가능하며 유지 관리 가능한 CSS 코드 작성을 강조합니다.
.block {} .block__element {} .block--modifier {}
예를 들어 BEM의 구조를 분석해 보겠습니다.
<div class="menu"> <ul class="menu__list"> <li class="menu__item menu__item--active">Home</li> <li class="menu__item">About</li> <li class="menu__item">Contact</li> </ul> </div>
이 예에서는:
블록은 독립적이고 재사용 가능한 구성 요소입니다. 스타일이 다른 요소의 영향을 받을 염려 없이 코드의 어느 위치에나 배치할 수 있는 독립적인 엔터티라고 생각하세요.
.button { padding: 10px 20px; background-color: #3498db; color: white; border: none; }
여기서 .button은 버튼 구성 요소의 스타일을 정의하는 블록입니다. 웹사이트의 여러 부분에서 이 블록을 재사용할 수 있습니다.
요소는 독립형 의미가 없는 블록의 일부입니다. 블록에 묶여 블록과 관련된 기능을 수행하기 위해 존재합니다.
.button__icon { margin-right: 10px; } .button__label { font-size: 14px; }
여기:
수정자는 블록이나 요소의 변형을 나타냅니다. 수정자는 버튼 색상을 변경하거나 요소를 더 크게 만드는 등 구성 요소의 모양이나 동작을 변경하는 데 사용됩니다.
.button--primary { background-color: #2ecc71; } .button--large { padding: 15px 30px; }
여기:
수정자는 요소에도 적용할 수 있습니다.
.button__icon--small { width: 10px; height: 10px; }
블록, 요소, 수정자를 포함하는 더 완전한 예를 살펴보겠습니다.
<div class="card"> <div class="card__header"> <h2 class="card__title">Card Title</h2> </div> <div class="card__body"> <p class="card__text">This is a simple card component.</p> </div> <div class="card__footer"> <button class="button card__button card__button--primary">Read More</button> </div> </div>
/* Block */ .card { border: 1px solid #ddd; padding: 20px; border-radius: 5px; } /* Elements */ .card__header { margin-bottom: 15px; } .card__title { font-size: 18px; color: #333; } .card__body { margin-bottom: 15px; } .card__text { color: #666; } .card__footer { text-align: right; } /* Modifier */ .card__button--primary { background-color: #3498db; color: white; }
이 예에서는:
BEM 方法是保持 CSS 有序、可预测和可扩展的强大方法。通过将组件分解为块、元素和修饰符,您可以维护更清晰的代码并避免样式冲突,从而使您的项目开发更快、更高效成长。
里多伊·哈桑
위 내용은 CSS BEM 모델 – 확장 가능하고 유지 관리 가능한 CSS 작성 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!