2016-10-20 1 views
0

내 scss 선택기에서 일부 중복을 제거하려고합니다.앰퍼샌드를 사용할 때 구문 부모를 어떻게 대상으로합니까?

.container { 
    .operation { 
    color: green; 
    } 
    .row.is-active &, 
    .row:hover & { 
    .operation { 
     color: inherit; 
    } 
    } 
} 

I는 다음과 같이 다시 작성 시도 :

.container { 
    .operation { 
    color: green; 
    } 
    .row & { 
    &.is-active, &:hover { 
     .operation { 
     color: inherit; 
     } 
    } 
    } 
} 

을하지만,이 .is-active.container 대신 앰퍼샌드를 사용하는 경우

.row가 어떻게이 구문 부모를 타겟팅 할 수 있습니다에 적용되는 원인은?

+0

예상되는 출력은 무엇입니까? –

+0

@Mr_Green 예상 출력은 첫 번째 예제 (유효한 예)의 결과입니다. –

+0

@ WillemD'Haeseleer 이제 질문을 이해했으며 아래 답변을 수정했습니다. 희망 사항 : – shaune

답변

0

처음에 잘못 이해 했으므로 시간을내어 다시 질문에 답변했습니다. 불행하게도 현재 SASS에서이 작업을 수행 할 수있는 방법은 없습니다. 선택기와 문자열을 조작하기 위해보다 진보 된 SASS functions을 사용하려고 할 때도 가능하지 않습니다.

Stylus를 사용 할 수 있습니다 좋은 소식

있습니다. codepen에 라이브 Example을 생성했습니다.

// Stylus - not SASS 
    .container { 
    .operation { 
     color: green; 
    } 
    .row { 
     ^[-1..-1]:is-active ^[0], ^[-1..-1]:hover ^[0] { 
     .operation { 
      color: inherit; 
     } 
     } 
    } 
    } 

나는 그것이있는 옵션을 제공 할 수 있습니다 이것은 적어도, 어떤 방법으로 당신이 도움이되기를 바랍니다,하지만 불행히도 SASS 당신이 시도하고 무엇을 달성 할 수 없다.

+0

죄송합니다. 무슨 뜻인지 모르겠다. 내 첫번째 scss 예제는 유효한 scss이며 그로부터 컴파일 된 출력은 예상 된 출력입니다. 난 그냥 .row 선택기를 복제하지 않고 그것을 쓰려고 애 쓰고있다. –

+0

좋아, 그래서 내 결과와 첫 번째 예제의 결과를 다시 봤는데, 그들은 다릅니다. CSS 결과를 확인하고 테스트하여 결과를 복제 할 수 있는지 여부를 확인할 수있었습니다. 결과가 CSS 출력과 다릅니다. 더 이상 아무런 정보없이 정말 도움이되지 않습니다. 죄송합니다. – shaune

+0

고마워, 나는 노력에 감사하지만, 스타일러스에서 제안 된 솔루션은 원래의 솔루션보다 복잡하다. –

관련 문제