.css 파일을 .less 파일로 가져 오기


228

.css 파일을 .less 파일로 가져올 수 있습니까?

나는 거의 익숙하지 않으며 모든 개발에 사용합니다. 정기적으로 다음과 같은 구조를 사용합니다.

@import "normalize";

//styles here

@import "mixins";
@import "media-queries";
@import "print";

모든 가져 오기는 다른 .less 파일이며 모두 정상적으로 작동합니다.

내 현재 문제는 다음과 같습니다 .css 파일에 사용 된 스타일을 다음과 같이 .css 파일을 .less로 가져오고 싶습니다.

@import "../style.css";

.small {
    font-size:60%;
    .type;
}
// other styles here

.css 파일에는 클래스가 포함되어 .type있지만 .less 파일을 컴파일하려고하면 오류가 발생합니다.NameError: .type is undefined

.less 파일은 .css 파일을 가져 오지 않고 다른 .less 파일 만 가져 옵니까? 아니면 내가 잘못 참조하고 있습니까 ...?!


5
그런 다음, style.less 그냥 이름 바꾸기있는 style.css 할 수있을 옵션을 선택하지 않습니다 물론있는 style.css의 이름을 바꾸는하지 않는 한 ... 평소 당으로 가져와야합니다 그래서 LESS는 다시 CSS에 폭포
jackwanders

3
예, 불행히도 .css 파일의 이름을 바꿀 수는 없습니다.
Mr Jonny Wood

1
같은 문제가 있습니다. github.com/cloudhead/less.js/issues/303
Yaroslav

5
.css를 외부에서 참조 할 필요가없고 동시에 .css 파일을 수정 (이름 바꾸기)하지 않아야하는 경우 .less확장명 이있는 기호 링크를 만들 수 있습니다 . 그런 다음 .less파일 로 참조 하십시오. 심볼릭 링크이기 때문에 .css 변경 사항이 가져 오는 .less 파일에 즉시 영향을 주므로 동기화해야하는 부담이 줄어 듭니다. 단점은 후속 변경 후 최종 CSS를 다시 컴파일해야한다는 것입니다. Windows에서 심볼릭 링크를 만드는 방법에 대한 자세한 내용을 보려면 MKLINK /?명령 창에 입력하십시오
Ivaylo Slavov

@ jackwanders, LESS는 CSS로 되돌아 오기 때문에 이름을 바꿀 필요가 없습니다 (올바로 지적했듯이). .css인라인 (less)지시문을 사용 하여 파일을 가져오고 .css구문이 유효한 .less구문 이라는 사실을 활용할 수 있습니다.
ira

답변:


316

다음과 같은 옵션을 지정하여 파일을 특정 유형으로 해석하도록 할 수 있습니다.

@import (css) "lib";

출력합니다

@import "lib";

@import (less) "lib.css";

lib.css파일 을 가져 와서 덜 취급합니다. 파일을 더 작게 지정하고 확장자를 포함하지 않으면 아무것도 추가되지 않습니다.


1
이것이 정답입니다. 세 번째 코드는 CSS 코드를 적은 코드로 가져오고 컴파일하며 지시문을 그대로 두지 않습니다.
CMCDragonkai

1
@import (include) "lib.css"를 사용해야한다고 생각합니다. 나는 컴파일러에 누워있는 의미론을 좋아하지 않습니다. 확실히 파일에 LESS 코드가 없다는 것을 알고있을 때.

16
이렇게하면 foo.css에 대한 추가 http-request가 생성되므로 (inline)지시문 ( stackoverflow.com/a/22594082/160968 참조 )을 선호합니다.
Urs

1
(inline)글꼴이나 다른 @import'ed css 파일에 대한 외부 참조를 변환하지 않기 때문에 작동하지 않습니다 . 404 HTTP 요청이 많이 발생하는 더 큰 CSS 파일로 끝납니다 ....
user3338098

최신 편집 내용이 단순히
seven-phases-max

246

처리하지 않고 CSS를 출력에 복사하려면 (inline)지시문을 사용할 수 있습니다 . 예를 들어

@import (inline) '../timepicker/jquery.ui.timepicker.css';

7
완전한. 이것은 일부 CSS 파일 (예 : ie7.less)을 연결하려고하지만 반드시 처리 할 필요는 없습니다 (예 : 부트 스트랩 -ie7은 LESS가 제대로 처리하지 않는 표현식을 사용함).
Joe

4
매우 도움이됩니다. @import (css) "styles.css";나를 위해 작동하지 않았다.
ivkremer

10
둘 다 다른 사용 사례를 다룹니다. 을 사용 (css)하면 @import지시문은 그대로 유지되며 결과적으로 브라우저는 CSS 파일을 런타임에로드합니다. 로 (inline)CSS 파일의 내용은 실제로 컴파일 된 스타일 시트로 가져옵니다. 파일을 @importing 할 때의 기본 동작 .css(css)플래그 와 동일 합니다. 자세한 정보 는 문서읽으십시오 :)
neemzy

따라서 css 파일에 @import"processing"이 필요한 지시문 이 있으면 분명히 작동하지 않습니다 .
user3338098

'인라인'은 모든 수입품이 인라인된다는 것을 의미합니까? 재귀 적으로 인라인하는 방법이 있습니까?
가로등

29

버전 1.7.4에서 다음을 사용해야했습니다.

@import (less) "foo.css"

허용 된 답변이 @import (css) "foo.css"있지만 작동하지 않는다는 것을 알고 있습니다. 새 적은 파일에서 CSS 클래스를 재사용하려면 사용 (less)하지 말아야 (css)합니다.

설명서를 확인하십시오 .


2
허용 된 대답은 (예, 처음에 올바른 옵션을 가지고 (less)는 IS 단지 당신이 CSS 파일의 일부 스타일을 다시 사용하려는 경우 옵션)하지만 어떤 이유로 @Fractalf는 그의 최신 편집과 올바른 부분을 제거했습니다.
최대 7 단계 :

1
"reference"와 "less"를 결합 할 수 있습니다 :@import (less, reference) "foo.css"
Skarllot

28

css 파일의 파일 확장자를로 변경하십시오 .less. LESS를 작성할 필요는 없습니다. 모든 CSS는 유효하지 않습니다 (MS 항목을 제외하고는 탈출해야하지만 다른 문제입니다).

Fractalf의 대답 이 v1.4.0이 고정되어


4
기술적으로는 CSS 파일을 가져 오지 않습니다.
nilskp

@nilskp 당신이 맞습니다; 그러나 다른 파일에서 클래스를 사용하려면 CSS가 아닌 LESS 파일이 필요합니다.
수학

1
@nilskp 당신은 파일을 LESS로 파싱하기 위해 확장명을 변경하는 것이 너무 요구된다고 말하는가?
수학

23
물론입니다. 모든 파일을 소유 한 작은 홈 프로젝트 외부에서 생각하십시오. 모든 사람이 LESS를 사용하지 않는 더 큰 다인종 프로젝트를 생각해보십시오. 파일 이름 변경이 불가능한 수많은 사용 사례가 있습니다.
nilskp

1
CSS에 다음이 포함되어 있는지주의해야합니다. calc (100 %-45px); 그리고 당신은 브라우저에서 그것을 원합니다. 적은 수의 파일 만 처리하면 최종 출력은 다음과 같습니다. calc (55 %); 종아리가 적기 때문입니다.
Christof Aenderl

8

로부터 LESS 웹 사이트 :

CSS 파일을 가져오고 LESS에서 처리하지 않으려면 .css 확장자를 사용하십시오.

@import "lib.css"; 지시문은 그대로 남겨두고 CSS 출력으로 끝납니다.

jitbit가 아래 주석에서 지적했듯이, 이것은 @import귀중한 대역폭을 불필요하게 소비 하고 싶지 않으므로 개발 목적으로 만 유용 합니다.


14
이것은 파일을 가져 오지 않고 @import 지시문을 그대로 둡니다. 그래도 작동하지만 CSS 가져 오기를 피해야합니다.이 developers.google.com/speed/docs/best-practices/…
Alex

5
정보 @jitbit에 감사드립니다. 개인적으로 @import개발 중에 사용하기가 더 쉽다는 것을 알고 생산으로 이동할 때 가져온 파일을 단일 스타일 시트로 결합하고 최소화합니다.
webdevkit

1
헤더 행뿐만 아니라 질문을주의 깊게 읽으면 OP가 CSS 파일의 클래스를 mixin으로 참조하려고한다는 것을 알 수 있습니다. 단순한 CSS 가져 오기로 구문 분석하면 불가능합니다.
awe

7

이 시도 :

@import "lib.css";

공식 문서에서 :

CSS 파일과 적은 파일을 모두 가져올 수 있습니다. 적은 파일 가져 오기 문만 처리되고 CSS 파일 가져 오기 문은 그대로 유지됩니다. CSS 파일을 가져오고 LESS에서 처리하지 않으려면 .css 확장자를 사용하십시오.


출처 : http://lesscss.org/


2
헤더 행뿐만 아니라 질문을주의 깊게 읽으면 OP가 CSS 파일의 클래스를 mixin으로 참조하려고한다는 것을 알 수 있습니다. 단순한 CSS 가져 오기로 구문 분석하면 불가능합니다.
awe

6

CSS 파일을 참조로 가져오고 싶지만 (예 : Mixins에서 클래스 사용) 결과에 전체 CSS 파일을 포함 시키지 않으 려면@import (less,reference) "reference.css"; .

내.없는

 @import (less,reference) "reference.css";
 .my-class{
     background-color:black;
     .reference-class;
     color:blue;
 }

reference.css

.reference-class{
    border: 1px solid red;
}

*와 결과 (my.css) lessc my.less out/my.css*

.my-class {
  background-color: black;
  border: 1px solid red;
  color: blue;
}

나는 사용하고있다 lessc 2.5.3


이것이 내가 필요한 것입니다. 그러나 확장 구문을 사용해야했습니다 &:extend(.reference-class all);. 클래스를 직접 참조하면 컴파일 오류가 발생했습니다.
Jens Neubauer

4

덜 줄어야하는 CSS 파일을 가져 오려면이 줄을 사용하십시오.

.ie {
  @import (less) 'ie.css';
}

3

1.5.0부터 u는 '인라인'키워드를 사용할 수 있습니다.

예 : @import (인라인) "not-less-compatible.css";

CSS 파일의 호환성이 떨어질 수있는 경우에 이것을 사용합니다. Less는 알려진 대부분의 표준 CSS를 지원하지만 일부 위치에서는 주석을 지원하지 않으며 CSS를 수정하지 않고 알려진 모든 CSS 핵을 지원하지 않기 때문입니다. 따라서 모든 CSS가 하나의 파일에 있도록 출력에 파일을 포함시키는 데 사용할 수 있습니다.

(출처 : http://lesscss.org/features/#import-directives-feature )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.