웹 제품을 사용할 때 사용자가 자신의 사이트에 삽입 할 코드를 생성합니다.CSS 및 스타일 충돌의 네임 스페이스
생성 된 코드에는 HTML, JavaScript 및 CSS가 포함되어 있습니다. 페이지에 삽입되면 해당 페이지의 다른 콘텐츠와 함께 내가 제어 할 수없는 콘텐츠가 표시됩니다. 즉, 내 제품에서 생성 된 코드는 이미 다른 콘텐츠가 포함 된 웹 페이지에 삽입됩니다. 나는 그 페이지의 스타일과 내용을 제어 할 수 없다.
이제 이름 지정 충돌을 스타일링하는 것에 대해 걱정합니다. .amazing-color
이라는 CSS 클래스를 사용한다고 가정하고 특정 구성 요소에 특정 방식으로 스타일을 지정합니다.
내 코드를 동시에 사용하는 웹 페이지가 다른 스타일 코드를 사용하는 .amazing-color
이라는 스타일링을 동시에 가지고 있고 내 자신의 스타일을 덮어 쓸 수 있다고 가정합니다.
제 질문은 어떻게 이런 일이 발생하지 않도록 할 수 있습니까? CSS에서 명명 충돌을 방지하려면 어떻게해야합니까?
내 스타일에 복잡한 이름이 있다고 제안 할 수 있으므로 .my-super-amazing-color-212321
을 사용 하겠지만 복잡한 CSS 클래스는 읽을 수 없습니다. 나는 네임 스페이스를 사용하는 것이 더 나은 해결책이라고 생각한다. 그러나 CSS에 네임 스페이스가 있는지 잘 모르겠습니다. 존재한다면 어떻게 사용할 수 있습니까? 그렇다면 CSS에는 이름 공간이 있습니까? 그들을 사용하는 샘플 코드를 제공 할 수 있습니까?
감사합니다.
답변 해 주셔서 감사합니다. 이것은 BEM 명명 규칙 (자세한 내용은 http://getbem.com/)을 사용하고 있기 때문에 좋은 솔루션이 아닐 수도 있습니다. 그래서, 어떻게 이것을 극복 할 수 있습니까? – Greeso
죄송합니다. 저는 BEM 팬이 아니므로 사용하지 마십시오. 실제로 거기에 조언 할 수는 없습니다. 블록 이름에 공통 접두사를 포함해서는 안되는 이유는 없지만 BEM 규칙을 위반하는지 여부는 알 수 없습니다. – Alohci
BEM과 관련하여 귀하가 의미하는 바를 이해합니다. ** ** BEM (또는 BEVM은 https://www.youtube.com/watch?v=nwS7M2L07uU에서 설명한대로 사용하고 있습니다.); 이 모델을 사용하면 더욱 유연 해지며 BEM의 많은 단점을 극복 할 수 있습니다. 귀하의 질문에 관해서는 BEM 규칙을 위반하는 경우, 나는 그 규칙을 위반하지 않을 것이라고 생각하지만 코드를 읽기 쉽게 만들고 가능한 경우 네임 스페이스를 통해 사물을 그룹화하기를 바랬습니다. – Greeso