Compass / Blueprint Grid에 시맨틱 클래스 이름을 사용하지 않는 이유는 무엇입니까?

마르셀로 소 머스

저는 최근에 대규모 다년 클라이언트 프로젝트를 시작했으며 프런트 엔드 개발의 첫 번째 단계는 프로젝트 전체에서 사용할 패턴 라이브러리를 만드는 것입니다. 그리드에 Compass와 Blueprint를 사용하고 있습니다. @include blueprint-grid믹스 인의 모습이 프로젝트에 대한 완벽한 : 자동 의미 클래스 이름 (즉, 생성 할 수 있습니다 .span5팀의 나머지 부분은 모든 페이지에 걸쳐 재사용 할 수 있음을).

그러나 Compass 설명서에는 다음과 같이 나와 있습니다 .

모범 사례는이 믹스 인 사용을 권장하지 않지만 레거시 웹 사이트를 지원하고 블루 프린트의 예제 페이지에 대해 sass 포트를 테스트하기 위해 제공됩니다.

왜 그런 겁니까? 현대 그리드 시스템에서 의미없는 클래스를 사용하려는 이유는 무엇입니까? 모두 동일한 격자 너비를 공유하는 다양한 페이지 요소에 대해 새 CSS 클래스를 만드는 것이 덜 건조 해 보입니다. 예를 들면 :

.dashboard__chart {
    @include column(6);
}

.dashboard__news {
    @include column(6);
}

.span6마크 업에 적용 클래스 만 가질 수 있습니다.

상황에 따라 달라질 수 있습니다. 전체 프로젝트가 비슷한 레이아웃 (예 : 뉴스 웹 사이트 또는 블로그)을 가지고 있다면 의미 론적이지 않은 클래스가 의미가 있습니다. 그러나이 대시 보드 /보고 도구 프로젝트는 모든 페이지에서 약간 다른 레이아웃을 가지고 있습니다.

다시 원래의 질문으로 돌아갑니다. 의미 론적 클래스를 사용하지 않는 것이 가장 좋은 이유는 무엇이며이를 피하는 가장 좋은 방법은 무엇입니까?

Medora 팀

의미 론적 클래스 이름 (예 : .span5)을 자동으로 생성합니다.

"span5"는 내용을 전혀 설명하지 않고 상당히 구체적인 방식으로 레이아웃을 설명한다는 점에서 의미 론적 이름이라고 생각하지 않습니다.

물론 "의미 적"이라는 용어는 많이 사용되지만 가장 순수한 의미에서는 프레젠테이션과 관련이 거의 없거나 전혀 없어야합니다.

표현을 설명하는 이름을 사용하지 않는 이유 :

  1. 레이아웃이 변경되면 이름이 잘못되었습니다.
  2. 레이아웃은 잘못되거나 의미가없는 다른 장치에 맞게 조정될 수 있습니다.
  3. 마크 업은 읽는 사람 (예 : 팀)에게 의미가 없습니다.
  4. 레이아웃이 깨질 수 있습니다. 여러 곳에서 사용되어 왔고 의미가 다른 하나의 클래스를 변경하면 사용되는 곳에서 깨질 수 있습니다.

"span6"과 같은 제네릭 클래스의 가장 큰 단점은 남용된다는 것입니다 (비슷한 그리드 클래스가 정의 된 부트 스트랩에서 이것을 보았습니다). "이 요소는 2 개의 열에 걸쳐 있어야합니다 ... 좋습니다! 그냥 'span2'클래스를 치고 완료하겠습니다!"

이것은 재사용을 찾아서는 안된다는 의미는 아닙니다. 그러나 이러한 재사용은 콘텐츠와 관련된 클래스 이름 (당연히 약간의 노력이 필요할 수 있음)과 믹스 인 사용을 통해 올 수 있습니다.

저는 최근에 대규모 다년 클라이언트 프로젝트를 시작했으며 프런트 엔드 개발의 첫 번째 단계는 프로젝트 전체에서 사용할 패턴 라이브러리를 만드는 것입니다.

대부분의 프로젝트는 실용성을 위해 예외 / 타협으로 끝나지만 모범 사례 접근 방식으로 시작할 기회가 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

분류에서Dev

이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

분류에서Dev

이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

분류에서Dev

일부 사용자가 Perl에서 클래스 이름을 인용하는 이유는 무엇입니까?

분류에서Dev

시맨틱 조치의 값에 액세스 할 수없는 이유는 무엇입니까?

분류에서Dev

`템플릿`클래스의 열거 형에 선언을 사용하지 않는 이유는 무엇입니까?

분류에서Dev

한 클래스에서 코딩하지 않는 이유는 무엇입니까?

분류에서Dev

Main 클래스에서이 사용자 정의 JFrame을 표시 할 수없는 이유는 무엇입니까?

분류에서Dev

ES6의 프록시가 클래스 메서드 내에서 사용될 때 작동하지 않는 이유는 무엇입니까?

분류에서Dev

내 Scala 클래스가 일치하는 테스트 클래스에 표시되지 않는 이유는 무엇입니까?

분류에서Dev

시맨틱 UI 드롭 다운에 아이콘을 추가하는 방법은 무엇입니까?

분류에서Dev

제네릭 유형을 사용하는 빈 클래스에서 컴파일이 실패하지 않는 이유는 무엇입니까?

분류에서Dev

XML에서 생성 된 클래스가 더 이상 사용되지 않는 이유는 무엇입니까?

분류에서Dev

XML에서 생성 된 클래스가 더 이상 사용되지 않는 이유는 무엇입니까?

분류에서Dev

XML에서 생성 된 클래스가 더 이상 사용되지 않는 이유는 무엇입니까?

분류에서Dev

왜 시간 클래스는 방법 '() toSeconds'을 가지고하지 않는 이유는 무엇입니까?

분류에서Dev

하위 클래스 유형이 'this'유형에 할당되지 않는 이유는 무엇입니까?

분류에서Dev

Java에서 내부 클래스에서 제네릭을 사용하는 것이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

로지스틱 회귀는 오차 행렬에 더하기 대신 곱셈을 사용하지 않는 이유는 무엇입니까?

분류에서Dev

SSH에서 허용 할 때 SCP가 사용자 이름 / 호스트 이름 조합을 허용하지 않는 이유는 무엇입니까?

분류에서Dev

클래스 카운터가 Coach 클래스를 증가시키지 않는 이유는 무엇입니까?

분류에서Dev

Selenium이 CSS를 사용하여 이름에 공백이있는 클래스를 인식하지 못하는 이유는 무엇입니까?

분류에서Dev

토글이 클래스 이름을 제거하지 않는 이유는 무엇입니까?

분류에서Dev

클래스 (루비)의 메서드에서 이름을 표시하는 방법은 무엇입니까?

분류에서Dev

javac가 클래스에서 접미사 "++"연산자를 사용하여 사용하지 않는 변수를 만드는 이유는 무엇입니까?

분류에서Dev

클래스 변환기를 사용할 때 enableImplicitConversion을 사용하지 않는 이유는 무엇입니까?

분류에서Dev

Mapper 클래스에서 LongWritable (키)이 사용되지 않은 이유는 무엇입니까?

분류에서Dev

.Net Core 콘솔의 ProducerBuilder 클래스 메시지가 Kafka 소비자 셸에서 사용되지 않는 이유는 무엇입니까?

분류에서Dev

프레젠테이션을 설명하는 클래스 이름을 사용하지 않는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

  2. 2

    이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

  3. 3

    이동 시맨틱이있는 RAII 클래스에서 기본 생성자는 무엇을해야합니까?

  4. 4

    일부 사용자가 Perl에서 클래스 이름을 인용하는 이유는 무엇입니까?

  5. 5

    시맨틱 조치의 값에 액세스 할 수없는 이유는 무엇입니까?

  6. 6

    `템플릿`클래스의 열거 형에 선언을 사용하지 않는 이유는 무엇입니까?

  7. 7

    한 클래스에서 코딩하지 않는 이유는 무엇입니까?

  8. 8

    Main 클래스에서이 사용자 정의 JFrame을 표시 할 수없는 이유는 무엇입니까?

  9. 9

    ES6의 프록시가 클래스 메서드 내에서 사용될 때 작동하지 않는 이유는 무엇입니까?

  10. 10

    내 Scala 클래스가 일치하는 테스트 클래스에 표시되지 않는 이유는 무엇입니까?

  11. 11

    시맨틱 UI 드롭 다운에 아이콘을 추가하는 방법은 무엇입니까?

  12. 12

    제네릭 유형을 사용하는 빈 클래스에서 컴파일이 실패하지 않는 이유는 무엇입니까?

  13. 13

    XML에서 생성 된 클래스가 더 이상 사용되지 않는 이유는 무엇입니까?

  14. 14

    XML에서 생성 된 클래스가 더 이상 사용되지 않는 이유는 무엇입니까?

  15. 15

    XML에서 생성 된 클래스가 더 이상 사용되지 않는 이유는 무엇입니까?

  16. 16

    왜 시간 클래스는 방법 '() toSeconds'을 가지고하지 않는 이유는 무엇입니까?

  17. 17

    하위 클래스 유형이 'this'유형에 할당되지 않는 이유는 무엇입니까?

  18. 18

    Java에서 내부 클래스에서 제네릭을 사용하는 것이 작동하지 않는 이유는 무엇입니까?

  19. 19

    로지스틱 회귀는 오차 행렬에 더하기 대신 곱셈을 사용하지 않는 이유는 무엇입니까?

  20. 20

    SSH에서 허용 할 때 SCP가 사용자 이름 / 호스트 이름 조합을 허용하지 않는 이유는 무엇입니까?

  21. 21

    클래스 카운터가 Coach 클래스를 증가시키지 않는 이유는 무엇입니까?

  22. 22

    Selenium이 CSS를 사용하여 이름에 공백이있는 클래스를 인식하지 못하는 이유는 무엇입니까?

  23. 23

    토글이 클래스 이름을 제거하지 않는 이유는 무엇입니까?

  24. 24

    클래스 (루비)의 메서드에서 이름을 표시하는 방법은 무엇입니까?

  25. 25

    javac가 클래스에서 접미사 "++"연산자를 사용하여 사용하지 않는 변수를 만드는 이유는 무엇입니까?

  26. 26

    클래스 변환기를 사용할 때 enableImplicitConversion을 사용하지 않는 이유는 무엇입니까?

  27. 27

    Mapper 클래스에서 LongWritable (키)이 사용되지 않은 이유는 무엇입니까?

  28. 28

    .Net Core 콘솔의 ProducerBuilder 클래스 메시지가 Kafka 소비자 셸에서 사용되지 않는 이유는 무엇입니까?

  29. 29

    프레젠테이션을 설명하는 클래스 이름을 사용하지 않는 이유는 무엇입니까?

뜨겁다태그

보관