2014-06-12 4 views
2

나머지 .scss 개의 파일에 대해 하나의 파일을 가진 .scss 파일을 갖고 싶습니다. 내가 그렇게한다면 그 .scss 스타일은 내 모든 .scss 파일에서 중복됩니다SCSS에서 스타일이 중복되지 않도록하려면 어떻게해야합니까?

global.scss - 나는 글로벌 사용할 - 내 전역 변수와 스타일

$white: #FFF; 
$black: #000; 
$bg_red: red; 

.mt30 { 
    margin-top: 30px; 
} 

이 header.scss 파일 vars 및 스타일이이 파일에 있습니다.

@include "global" 

.foo { 
    width: 100px; 
    height: 50px; 
    backgrounnd-color: $bg_red; 
} 

main.scss - 난 너무이 파일에 글로벌 바르과 스타일을 사용하고 싶습니다.

@include "global" 

.boo { 
    width: 100px; 
    height: 50px; 
    backgrounnd-color: $white; 
} 

그러나 각 최종 .css 파일 global.scss에서 스타일을 가지고있다. 그래서 내 페이지에 여러 개의 .mt30 스타일이 있습니다. 어떻게 피하는가?

+1

여기에서 문제를 이해할 수 없습니다. 중복 된 정보는 원하지 않지만 수입이 어떻게 작동하는지 이해합니다. 파일을 여러 번 가져 오려면 복제하지 않으려는 코드를 넣지 마십시오. – cimmanon

+2

** "각 최종 .css 파일"** - 왜 둘 이상의 CSS 파일이 있습니까? 모든 하위 SCSS 파일을 가져온 후 단일 '기본'SCSS 파일에서 생성 된 하나의 준수 파일 만 가져야합니다 - http://www.sitepoint.com/architecture-sass-project/ –

+0

@cimmanon, Hey, 그것은 시험입니다. 진짜는 SCSS, Compass, Assetic이 충분하지 않다는 것입니다. 하나의 주 파일에서 다른 파일의 변수가 필요한 경우 주 파일을 다른 파일로 가져와야합니다. 예를 들어 scss bootstap을 사용하면 각 파일에 부트 스트랩의 변수가 필요할 때 모든 부트 스트랩의 스타일이 페이지의 모든 파일에 복제됩니다. 어떻게 피하는가? 스타일을 이미 어딘가에 가져온 경우 이러한 도구에 스타일이 다시 포함되는 이유는 무엇입니까? – Green

답변

0

예 : Foundation 프레임 워크에는 app.scss 파일이 있습니다. 먼저 settings을 가져오고 foundation을 수입합니다. 이 후에 앱 별 규칙을 추가 할 수 있습니다.

settings에는 모든 Foundation 구성 요소에 대한 설정이 포함되어 있으며 이로 인해 CSS가 부풀려지지 않습니다. foundation 파일에는 그리드, 버튼 등과 같은 개별 구성 요소에 대한 분리 된 가져 오기 집합이 들어 있습니다. 이러한 구성 요소는 이전에 가져온 settings 파일로 구성됩니다. CSS 파일 크기를 줄이기 위해 불필요한 구성 요소에 대한 가져 오기를 제거 할 수 있습니다.

사실 더 쉽게 액세스 할 수 있도록 사용자는 foundation 가져 오기를 제거하고 기본값으로 주석 처리 된 구성 요소의 개별 가져 오기로 바꿉니다.

4

이 문제가 스타일의 중복하지만, 라이브러리, 또는 구성 파일의 중복없는 것 같다. 이를 위해 필요한 것은 코드를 약간 다르게 구성하는 것입니다. 먼저 global.scss 파일의 이름을 변경하고 (다른 모든 부분도) 밑줄로 시작하여 _global.scss으로 시작하십시오. 그런 다음 app.scss과 같은 매니페스트 파일을 만듭니다. 그 안에는 _global.scss을 가져오고 다른 파일이 필요합니다. 다른 파일은 이제 app.scss에 액세스 할 수있는 모든 항목에 액세스 할 수 있습니다.

_global.SCS들

$white: #FFF; 
$black: #000; 
$bg_red: red; 

_header.scss

.foo { 
    width: 100px; 
    height: 50px; 
    background-color: $bg_red; 
} 

_main.scss

.mt30 { 
    margin-top: 30px; 
} 

.boo { 
    width: 100px; 
    height: 50px; 
    background-color: $white; 
} 

app.scss

012,322,

header와 main 앞에 global을 가져 오기 때문에, 후자의 두 사람은 이전에있는 것에 액세스 할 수 있습니다. 또한 주목해야 할 것은 하나의 선언 된 스타일 .mt30을 전역에서 기본 부분으로 이동 시켰으며, 이는 전역 설정 파일에서 어떤 스타일도 선언되지 않았 음을 확인하는 것입니다.

관련 문제