2012-09-21 3 views
7

브라우저 간 호환성을 위해 업체별 확장과 표준 CSS3 구문을 모두 사용하는 경향이 있습니다. CSS3는 여전히 초안이지만 아직 사용하기 시작했습니다.하지만 문제는 어디에서 발생하는지 순서가 중요합니까?공급 업체 기반 CSS3 대 표준 CSS3 구문의 주문

예를 들어,이 border-radius 특정 브라우저를 적용한 다음 다시 표준 방법에 떨어지면 여기

-moz-border-radius: 10px; 
border-radius: 10px; 

볼 수 있습니다, 나중에 의지의 희망은 여전히 ​​무시할 수.

마찬가지로, 지금의 순서

border-radius: 10px; 
-moz-border-radius: 10px; 

전환이 먼저 표준 문법을 시도하고 브라우저 기반의 확장에 다시 떨어진다.

주문에 따른 차이가 있습니까? 실적 또는 다른면에서 볼 수 있습니다.

+0

__P.S .__ 중복되지 않습니다. http://stackoverflow.com/questions/8131846/why-do-browsers-create-vendor-prefixes-for-css-properties – Starx

답변

2

CSS3 속성을 작성할 때 현대의 지혜는 "실제"속성을 마지막에 나열하고 공급 업체 접두사를 먼저 나열하는 것입니다.

접두어가 아닌 속성을 추가 할 때 고려해야 할 또 다른 사항은 공급 업체 접두사 버전 뒤에 붙여 넣는 것입니다. 브라우저가 관련 CSS3 사양에 지정된대로 표준 버전의 속성을 구현할 때 실험용 브라우저 특정 버전 대신 해당 구현을 사용하기를 원할 가능성이 높습니다 (하위 호환성을 유지할 가능성이 여전히 높습니다) . 마지막에 놓으면 공급 업체 접두사 구현을 재정의해야합니다.

Ordering CSS3 Properties

페이지를 참조하십시오 Remember non-vendor-prefixed CSS 3 properties (and put them last)

+0

예, 알고 있습니다. 그. 그러나 질문은, 왜입니까 ?? 이 현대의 지혜 뒤에있는 이유는 무엇입니까? – Starx

+0

업데이트 된 답변보기 .. –

+0

내 견해 중 하나 인 견적에서 '공급 업체 접두사 구현을 재정의하십시오'. 이로 인해 성능 문제가 발생합니까? – Starx

2

만큼 당신이 같은 마지막으로 미래의 표준 버전을 유지으로, 중요하지 않습니다 접두사의 순서.

브라우저가 접두사에 대한 지원을 중단하면 규칙을 무시하고 표준 버전을 실행합니다.

ps : A.K.와 동일합니다. 간단하지만 모든 페이지를 읽을 필요가 없습니다.

+0

이 질문은 구체적으로 표준 대 공급 업체 속성의 순서에 대해 설명합니다. 그래서, 왜 * 표준 버전이 마지막이어야합니까? 또한 브라우저는 대개 특정 시간 동안 벤더 특정 버전과 표준 버전을 모두 지원합니다. * 지원을 중단 한 경우 해당 속성의 순서는 중요하지 않습니다. – 0b10011

+0

CSS는 계단식 (cascading)을 기반으로하므로 마지막 규칙은 이전 규칙을 무효화합니까? 따라서 표준 버전은 접두어 뒤에 붙어야합니다. – Mark

+1

나는 나를 (나는 대답을 쓰는 사람이었을 것이다.) 다른 질문에 대한 답은 이미 쓰지 않았다. 나는 이것이 당신의 대답에 분명히 밝혀 져야한다고 믿습니다. 특히 그것이 OP가 요구했던 것이기 때문입니다. 당신의 대답은 무엇을해야할 지 말합니다. – 0b10011

6

이제 표준 구문을 시도한 다음 브라우저 기반 확장으로 되돌아갑니다.

이 내용은 잘못된 내용 일 수 있습니다. 호환 브라우저는 이지만 인 경우 표준 접두사가 붙지 않은 속성을 먼저 지원하지만 해당 접두사도 마찬가지로 적용됩니다. 이것은 일반적으로 표준 선언이 접두어로 선언되고 브라우저의 잠재적으로 비표준 속성 구현에 의해 무시되어 처음부터 표준 속성을 갖는 목적을 무효로 만듭니다.

접두어가 붙지 않는 속성을 마지막으로 선언해야하는 이유는 규칙에서 속성이 캐스케이드되는 방식이기 때문입니다. 브라우저는 항상 마지막으로 적용되는 속성을 사용합니다.접두사 및 접두어가없는 속성 버전은 캐스케이드와 동일한 속성으로 처리되므로 브라우저가 해당 속성을 적용 할 때 표준을 준수하기 위해 최선을 다할 수 있습니다.

브라우저가 표준이 아니지만 표준을 구현하는 경우에는 문제가 없지만 두 가지를 모두 구현하는 경우 표준을 사용하는 것이 좋습니다. 표준 속성을 마지막으로 선언하여이 작업을 수행합니다. 지금까지 내가이이 규격에 의해 결정되지 알고 있어요으로

1


, 지금까지의 사양은 해당 벤더 확장 표준이 아닌 때문에 구현이 설명되지 않을 수 있습니다대로 때문이다. syntax of vendor prefixes이 사양에 설명되어 있지만 구현은 전적으로 공급 업체의 재량에 달려 있습니다.

그러나 대부분의 브라우저 개발자는 표준화 된 속성 또는 규칙의 접두어 버전을 구현할 때 합의한 규칙에 따라 접두사 및 접두어가 붙지 않은 버전을 항상 별칭으로 처리합니다.

+0

"Vendor-specific extensions"는 오랫동안 CSS 사양의 일부였습니다. http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords – Rob

+0

1) CSS2.1 사양 2) 구현 만이 아니라 구문을 설명합니다. 구문은 비표준 속성을 만들 때 구현자가 정의하도록 정의됩니다. 이 접두어로 붙은 속성은 표준의 일부가 아니며 구현하려는 공급 업체에 완전히 의존합니다. 이 스펙은 접두어 붙은 속성 자체를 어떻게 구현해야 하는지를 말하지 않습니다. – BoltClock

+0

구문이있는 곳에서는 구현이 있어야합니다. 편집 : 아, 잠깐. 알 겠어. 아마도 구현이 비표준이며 공급 업체 접두사가 아니라는 말입니다. – Rob