경계 요소 vs CSS 메쉬
BEM
는'명명약정'이 아니다.그것은 Blocks
와 Elements
사이의 구분이다.그리고 Modifiers
...당분간은 잊어버리자.오늘 우리는 다른 것에 관심을 가지는 것이 가장 좋다.
그래서 내가 이 글을 쓴 것은 사람들이
BEM
배후의 핵심 원칙을 이해하지 못해서 다른 기능 배후에서 그것들을 볼 수 없기 때문이다.이것이 바로 우리가 잠시 잊게 하는 이유
BEM
다.일을 시작하기 위해서 우리는 모두 동의한다.
CSS 격자가 너무 좋아요.🥳 display block
와 display flex
사이의 주요 차이점은 첫 번째 노드는 모든 하위 노드를 하나의 단독 요소로 간주하고 그들의 행위는 하나의 단체와 같다는 것이다.🤜 flex
안에서 그것들은 성장하고 수축할 수 있다.
그것들은 서로 관련되어 있다.
Grid
이러한 연결을 추진하여 더 큰 블록을 처리하고 더 많은 권력과 통제를 제공할 수 있습니다.
그러나 큰 차이가 있다. 정말 큰 차이점이다. 대부분의 권력과 통제권은'망격부노드'가 아니라'망격부노드'에 맡긴다.
격자와 단원 간의 대화를 상상해 봅시다.
🤖: 친애하는 격자 프로젝트, 나는 이미 당신을 위해 한 곳을 준비했습니다. 나의 계획에 따라 당신은 어디에서 살 것입니까?😈
📦: 제 의견이 있을 수 있을까요?
🤖: 친애하는 격자 프로젝트, 그래, 너희들 중 일부는 자신을 다른 곳으로 옮길 수 있지만, 특히 너희들은 아니다😅. 제 틀을 지켜주세요. 제가 확실히 당신에게 계획을 하나 가지고 있으니까요.👮🏻♂️.Grid
와 마찬가지로 grid template
나grid areas
를 사용하여 모든 직접 자녀를 통제할 수 있다. BEM도 계획이 있다.
베임이 계획이 있어요.
기술적으로 BEM
과Grid
의 업무 방식은 같다. 그들은 같은 이데올로기를 가지고 있다.BEM
'2d 격자'와 1급 하위 노드에 귀속되지 않았을 뿐입니다.BEM
의 관점에서 고려하면 Component Model
더욱 쉽다.
기술적으로
BEM
과Grid
의 업무 방식은 같다. 그들은 같은 이데올로기를 가지고 있다.BEM
'2d 격자'와 1급 하위 노드에 귀속되지 않았을 뿐입니다.BEM
의 관점에서 고려하면 Component Model
더욱 쉽다.Parent
와 여러 개Elements
계획
Elements
에 따라 모두가 알고 있는 위치에 놓아야 한다.Elements
는 생각해서는 안 되고 심지어 그들의 위치를 알아서는 안 된다.const ParentTemplate = () => (
<html>
<body>
<header>
<slot>
<Component1 /> <--- Another block
</slot>
</header>
<main>
<slot>
<Component2 /> <--- Another block
</slot>
</main>
</body>
</html>
몇몇 규칙
솔직히 말하면 경계원법에 관한 두 개의 주요 사이트가 있는데, 거기에서 당신은 약간의 정보를 읽을 수 있다. http://getbem.com/ 와 https://en.bem.info/.나는 네가 글자의 행간에 숨겨진 관건적인 정보를 볼 수 있기를 바란다. 그러나 나의 경험에 따르면 아직 아무도 그것을 보지 못했다.
BEM is not about that-strange__naming--convention
BEM is about the Separation between B
and E
다음은 당신이 놓칠 수 있는 것입니다.
BEM is not about that-strange__naming--convention
BEM is about the Separation between B
and E
요소는 자동으로 배치되지 않습니다.부모
Block
가자신과 배치는 그들의 아이들뿐이다.
블록은 스타일을 설정할 수 없습니다.🎨 외부 또는 자체 채널
Modifiers
Element
개Block
Note: "Children" is not an "immediate DOM node". Still easy to think in React terms - children is everything defined among component
const List = () => (
<ul> // children
<li> // also children
<SomeItem> // still children, but also a Block
</li>
</ul>
몽땅 Block
어떻게 어린이를 통치합니까?통상적으로(지난 15년간? BEM은 2006년에 창설된) 추가 전달classname
을 통해 상술한 원칙을 준수해야 하며, 사용children
에서 정의한modifiers
을 제외하고는 양식children
을 사용할 수 없다.
modifiers
are equal to (React) props
Block
:
modifiers
are equal to (React) props
Elements
를 안에 넣으세요.같은 방식Grid
으로 내부Grid-Items
배치가 가능합니다.Grids
BEM에 특정한 것이 아니라 같은 일을 할 수 있어.Grid와 BEM은 아이들에게 간섭하지 말라고 부드럽게 포석을 정했다.
While this moment might sounds like NOT something really important - it is the core essence of both technologies
기술적 실현을 멀리하다.실제 방법의 배후 의도와 원칙을 이해해 보면 이 두 가지 기술은 결국 이렇게 끝난다.
어떻게
grid
(브라우저 레이아웃)에'당신'을 배치하거나 flex
스타일(현식 레이아웃)을 사용하여 당신에게 추가 클래스를 부여합니다.이것은 너의 문제가 아니다.그럼 어때요?
따라서 랜덤 코드의 작성을 중지하십시오. 항상 혼란스럽고 유지보수할 수 없는 상태로 끝납니다. 이것은 많은 성능 문제를 초래할 수 있습니다. 특히 만약에 이유 없이 JS에서 CSS를 과도하게 사용한다면.
구조적으로 사고하다.인간관계에 대해 생각하다.코드, 파일, 함수, 가방에 대해 생각하는 방식으로 당신의 스타일을 생각하세요. 나는 당신이 규칙을 따르고 나쁜 습관 때문에 고통을 겪을 것이라고 믿습니다.
격자 외에 책임과 관심점 분리 배후의 요점Open Closed Principle을 설명할 수 있는 개념이 하나 더 있는데 SOLID pattern의 일부분이다
software entities should be open for extension, but closed for modification
이 경우 블록이 요소에 무엇을 요구하는지(블록은'확장'), 그리고 블록이 요소에 영향을 주지 않는 방법(이 요소들은'수정을 위해 닫힌')을 제어할 수 있다.
보기:
software entities should be open for extension, but closed for modification
기다리다
당신은 국경원법에 관한 내용을 특별히 읽어야 합니까?
아니, 왜냐하면:
한 가지 기억해 주십시오. 위에서 언급한 바와 같이, 절대 다수의 개발자들, BEM을 사용하는 개발자들을 포함해서, "중점을 잡지 못했다."는 것은 이상한 명칭 모델만은 아닙니다.
분명히 알고 있을 거야.나도 그 안에 있어.
Reference
이 문제에 관하여(경계 요소 vs CSS 메쉬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thekashey/bem-vs-css-grid-22e8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)