다른 클래스에 의해 체인에서 최상위 선택기를 확장하는 방법

Jan Stanicek

이 내용으로 scss difine이 있습니다.

.dialog {
  ...
    
  .dialog-content {
    ...
          
    .dialog-content-header {
      background-color: red;
    }
  }
}

그러면 CSS가 생성됩니다.

...
.dialog .dialog-content .dialog-content-header {
  background-color: red;
}

이에 도달하는 방법을 찾아야합니다.

...
.dialog.dialog-with-train .dialog-content .dialog-content-header {
  background-color: blue;
}

추가 .dialog-with-train 선택기는 .dialog-content-header 컨텍스트에서 어떻게 든 추가해야합니다. 이런 일이 가능할까요?

.dialog {
  ...
    
  .dialog-content {
    ...
          
    .dialog-content-header {
      background-color: red;

      @at-root getFirstItem(&).dialog-with-train getItems(&, 2, ?length?) {
        background-color: blue;
      }
    }
  }
}

.dialog에서 .dialog-content-header 로의 경로는 제 경우에는 상당히 복잡하며 기존 코드를 수정하고 반복하지 않고 깔끔한 방식으로 변경하고 싶습니다.

어떤 충고?

EDIT1 : https://sass-lang.com/documentation/modules/selector를 보면 선택기 경로를 필수 구성으로 구문 분석 + 구성하는 방법이 있습니까?

EDIT2 : .NET을 사용하여 선택기의 문자열 빼기로 몇 가지 해결책을 찾았습니다 @use "sass:string";. 내 대답을 참조하십시오.

더 좋거나 더 깨끗한 솔루션이 있다면 알고 싶습니다.

Jan Stanicek

이것이 작동하는 것 같습니다.

@use "sass:string";

.dialog {
  $dialog: &;
  ...
    
  .dialog-content {
    ...
          
    .dialog-content-header {
      background-color: red;

      @at-root #{$dialog}.dialog-with-train #{str-slice("#{&}", str-length("#{$dialog}") + 2)} {
        color: blue;
      }
    }
  }
}

어떻게 작동합니까?

  1. $dialog맥락에서 정의
  2. @at-root 루트 컨텍스트에서 선택자를 생성합니다.
  3. #{$dialog}.dialog-with-train 필수 클래스별로 첫 번째 선택자를 확장합니다.
  4. #{str-slice("#{&}", str-length("#{$dialog}") + 2)}현재 선택기 및 $dialog선택기의 빼기를 제공합니다.

"빼기"를 어떻게 수행했는지 자세히 설명합니다.

  1. str-length("#{$dialog}")$dialog선택 자의 문자열 길이 계산
  2. "#{&}" 현재 컨텍스트 선택기를 문자열로 가져옵니다.
  3. #{str-slice("#{&}", str-length("#{$dialog}") + 2)}현재 선택기에서 하위 문자열을 가져옵니다. 뺄셈의 첫 번째 문자는 $dialog선택기가 끝난 후 2 자부터 시작 됩니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 클래스의 상태 저장 위젯에서 함수를 트리거하는 방법 (onUnityAdsFinish 일 때)?

분류에서Dev

다른 클래스에서 클래스를 확장하는 방법 (Java)

분류에서Dev

Java에서 유형을 정의하기 위해 두 개의 다른 인터페이스를 확장하는 인터페이스를 만드는 방법

분류에서Dev

CSS 다른 div에서 클래스를 선택하는 방법

분류에서Dev

OSGi의 다른 번들에서 테스트 클래스를 확장하는 방법

분류에서Dev

한 클래스에서 이미지를 선택하고 다른 클래스의 이미지보기에 표시하는 방법

분류에서Dev

자바 스크립트에서 다른 클래스의 인스턴스를 통해 다른 클래스 내부의 메소드에 액세스하는 방법

분류에서Dev

es6 클래스에서 생성자로 사용하기 위해 한 클래스를 다른 클래스에 주입하는 방법

분류에서Dev

서로 다른 두 개체의 기본 클래스에서 템플릿 클래스를 사용하는 방법

분류에서Dev

Swift 2 : UIPinchGestureRecognizer의 선택기 : 다른 클래스에서 func에 액세스하는 방법

분류에서Dev

PHP에서 다른 클래스를 작동시키기 위해 클래스의 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

최신 C ++에서 다른 클래스 유형의 객체를 하나의 컨테이너에 저장하는 방법은 무엇입니까?

분류에서Dev

장고 모델에서 슬러그를 한 클래스에서 다른 클래스로 상속하는 방법

분류에서Dev

자식 클래스를 정의하는 방법은 일반 클래스에서 확장됩니다.

분류에서Dev

C ++ : 나중에 사용하기 위해 다른 클래스의 다양한 멤버 함수를 저장하는 방법

분류에서Dev

다른 개체 내에서 하나 이상의 개체를 확인하는 방법

분류에서Dev

다른 클래스의 메서드간에 값을 전달하기 위해 인수를 사용하지 않는 방법

분류에서Dev

Java의 다른 클래스에서 기본 클래스로 객체를 연결하는 방법을 이해하는 데 도움이 필요합니다.

분류에서Dev

신속하게 내 클래스에 동일한 이름의 하위 클래스가있을 때 최상위 클래스를 참조하는 방법

분류에서Dev

C #의 다른 개인 클래스에서 개인 클래스 변수를 호출하는 방법

분류에서Dev

OrientDB에서 Java API에서 한 클래스가 다른 클래스에서 상속되는지 여부를 확인하는 방법은 무엇입니까?

분류에서Dev

다른 클래스에서 ToogleButton의 상태를 확인

분류에서Dev

부울 값에 액세스하기 위해 PFUser에서 선택적 체인을 래핑하는 방법

분류에서Dev

Java의 확장 클래스에서 객체를 시작하는 방법

분류에서Dev

특정 수의 객체를 처리하기 위해 싱글 톤 클래스를 확장하는 방법

분류에서Dev

다른 클래스 내에서 모의 클래스의 인스턴스를 만드는 방법

분류에서Dev

슈퍼 클래스의 현재 인스턴스가 슈퍼 클래스 내에서 하위 클래스인지 확인하는 올바른 방법

분류에서Dev

하위 쿼리를 사용하여 다른 최소값에 해당하는 값을 선택하는 방법

분류에서Dev

목록을 채우기 위해 다른 C # 클래스의 클래스에있는 목록을 초기화하는 방법

Related 관련 기사

  1. 1

    다른 클래스의 상태 저장 위젯에서 함수를 트리거하는 방법 (onUnityAdsFinish 일 때)?

  2. 2

    다른 클래스에서 클래스를 확장하는 방법 (Java)

  3. 3

    Java에서 유형을 정의하기 위해 두 개의 다른 인터페이스를 확장하는 인터페이스를 만드는 방법

  4. 4

    CSS 다른 div에서 클래스를 선택하는 방법

  5. 5

    OSGi의 다른 번들에서 테스트 클래스를 확장하는 방법

  6. 6

    한 클래스에서 이미지를 선택하고 다른 클래스의 이미지보기에 표시하는 방법

  7. 7

    자바 스크립트에서 다른 클래스의 인스턴스를 통해 다른 클래스 내부의 메소드에 액세스하는 방법

  8. 8

    es6 클래스에서 생성자로 사용하기 위해 한 클래스를 다른 클래스에 주입하는 방법

  9. 9

    서로 다른 두 개체의 기본 클래스에서 템플릿 클래스를 사용하는 방법

  10. 10

    Swift 2 : UIPinchGestureRecognizer의 선택기 : 다른 클래스에서 func에 액세스하는 방법

  11. 11

    PHP에서 다른 클래스를 작동시키기 위해 클래스의 함수를 호출하는 방법은 무엇입니까?

  12. 12

    최신 C ++에서 다른 클래스 유형의 객체를 하나의 컨테이너에 저장하는 방법은 무엇입니까?

  13. 13

    장고 모델에서 슬러그를 한 클래스에서 다른 클래스로 상속하는 방법

  14. 14

    자식 클래스를 정의하는 방법은 일반 클래스에서 확장됩니다.

  15. 15

    C ++ : 나중에 사용하기 위해 다른 클래스의 다양한 멤버 함수를 저장하는 방법

  16. 16

    다른 개체 내에서 하나 이상의 개체를 확인하는 방법

  17. 17

    다른 클래스의 메서드간에 값을 전달하기 위해 인수를 사용하지 않는 방법

  18. 18

    Java의 다른 클래스에서 기본 클래스로 객체를 연결하는 방법을 이해하는 데 도움이 필요합니다.

  19. 19

    신속하게 내 클래스에 동일한 이름의 하위 클래스가있을 때 최상위 클래스를 참조하는 방법

  20. 20

    C #의 다른 개인 클래스에서 개인 클래스 변수를 호출하는 방법

  21. 21

    OrientDB에서 Java API에서 한 클래스가 다른 클래스에서 상속되는지 여부를 확인하는 방법은 무엇입니까?

  22. 22

    다른 클래스에서 ToogleButton의 상태를 확인

  23. 23

    부울 값에 액세스하기 위해 PFUser에서 선택적 체인을 래핑하는 방법

  24. 24

    Java의 확장 클래스에서 객체를 시작하는 방법

  25. 25

    특정 수의 객체를 처리하기 위해 싱글 톤 클래스를 확장하는 방법

  26. 26

    다른 클래스 내에서 모의 클래스의 인스턴스를 만드는 방법

  27. 27

    슈퍼 클래스의 현재 인스턴스가 슈퍼 클래스 내에서 하위 클래스인지 확인하는 올바른 방법

  28. 28

    하위 쿼리를 사용하여 다른 최소값에 해당하는 값을 선택하는 방법

  29. 29

    목록을 채우기 위해 다른 C # 클래스의 클래스에있는 목록을 초기화하는 방법

뜨겁다태그

보관