CSS3 변환이 작동하지 않음


122

메뉴 항목을 10도 회전하여 변형하려고합니다. 내 CSS는 Firefox에서 작동하지만 Chrome 및 Safari에서 효과를 복제하지 못했습니다. IE가이 CSS3 속성을 지원하지 않는다는 것을 알고 있으므로 문제가되지 않습니다.

다음 CSS를 사용했습니다.

li a {
   -webkit-transform:rotate(10deg);
   -moz-transform:rotate(10deg);
   -o-transform:rotate(10deg); 
}

아무도 내가 어디로 잘못 가고 있는지 제안 해 주시겠습니까?

감사.


2
참고로, IE는이 CSS3 속성을 지원합니다, 당신은 단지 접두사가 필요합니다-ms-transform:rotate(10deg);
여호수아 핀터


2
아직 아무도 이것을 언급하지 않았기 때문에 2016 년이되었으므로 이제 CSS 규칙의 접두사가없는 버전 (예 transform: rotate(10deg);:)을 지원하기로 선택한 접두어 버전 아래에 배치해야합니다.
Maximillian Laumeister

답변:


301

이것은 HTML / CSS의 나머지 부분을 보지 않고 교육을받은 추측 일뿐입니다.

당신이 적용된 display: blockdisplay: inline-blockli a? 그렇지 않다면 시도하십시오.

그렇지 않으면 CSS3 변환 규칙을 li대신 적용 해보십시오 .


22
사랑해! display: inline-block도움 이 되었습니다.
Bugs Bunny

2
설명이 도움이 될 것입니다 :)
scitronboy

56

웹킷 기반 브라우저 (Safari 및 Chrome)에서는 -webkit-transform 인라인 요소에서 무시됩니다. . 설정 display: inline-block;하기 그것이 작동되도록 . 데모 / 테스트 목적으로 음의 각도를 사용하거나 transformation-origin텍스트가 보이는 영역 밖으로 회전하지 않도록 할 수도 있습니다 .


나를 위해 완벽하게 작동했습니다. 감사합니다! 카피 레프트 기호를 만들기 위해 <span> & copy </ span>에서 사용했습니다.
Elisabeth 2011

@Elisabeth 훌륭한 응용 프로그램입니다. <span>&copy;</span>대부분의 브라우저는 두 가지 방식으로 렌더링하지만 엔티티 참조는 세미콜론으로 종료해야합니다 (에서와 같이 ).
phihag 2011

또 다른 참고 사항 : 상호 작용 상태 (예 : :hover또는 :active)에 대한 변환을 적용하는 경우 inline-block기본 상태 (예 :)의 요소 에을 적용해야합니다 a { display: inline-block; } a:active { transform: translateY(0.125em); }. inline-block상호 작용 상태에만 적용 하는 것은 작동하지 않는 것 같습니다. 적어도 Chrome에서는 Firefox에서 잘 작동합니다.
Paul d' Aoust 2013 년

1
-webkit-transform인라인 항목에서 작동하지 않는 사실을 지적 해 주셔서 감사 합니다. 이전에 이것에 붙어 있었다.
pbojinov

@phihag 훌륭한 지적, 당신은 나에게 큰 머리카락을 잡아 당기는 것을 구했습니다! 이로 인해 애니메이션이 실행 된 후 요소가 사라질 수 있습니다.
texelate

21

아무도 관련 문서를 참조하지 않았기 때문에 :

CSS 변환 모듈 레벨 1-용어-변환 가능한 요소

변형 가능한 요소는 다음 범주 중 하나의 요소입니다.

  • 레이아웃이 블록 수준 또는 원자 인라인 수준 요소 인 CSS 상자 모델에 의해 제어 되거나 표시 속성 이 테이블 행, 테이블 행 그룹, 테이블 머리글 그룹, 테이블 바닥 글로 계산되는 요소 -그룹, 테이블 셀 또는 테이블 캡션
  • SVG 네임 스페이스의 요소이며 transform, 'patternTransform'또는 gradientTransform 속성이있는 CSS 상자 모델에 의해 관리되지 않습니다.

귀하의 경우 <a>요소는 inline기본적으로 있습니다.

display속성 값을 변경하여 inline-block요소를 원자 인라인 수준 요소 로 렌더링 하므로 요소가 정의에 따라 '변환 가능'하게 됩니다.

li a {
   display: inline-block;
   -webkit-transform: rotate(10deg);
   -moz-transform: rotate(10deg);
   -o-transform: rotate(10deg); 
   transform: rotate(10deg);
}

위에서 언급했듯이 이것은 -webkitIE / FF에서 작동하는 것처럼 보이므로 기반 브라우저 에서만 적용되는 것으로 보입니다 .


0

특별히 링크 만 회전하려고합니까? LI 태그에서 수행하는 것이 잘 작동하는 것 같기 때문입니다.

Snook 변환 에 따르면 영향을받는 요소는 블록이어야합니다. 그는 또한 필터를 사용하여 IE에서이 작업을 수행 할 수 있도록 몇 가지 코드를 가지고 있습니다 (값에 대한 제한이있는 것처럼 보이지만).


-4

-webkit-transform 더 이상 필요하지 않습니다

ms는 이미 회전을 지원합니다 ( -ms-transform: rotate(-10deg);).

이 시도:

li a {
   ...

    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -sand-transform: rotate(10deg);
    display: block;
    position: fixed;
    }

1
오늘 테스트 중에 -webkit-transformChrome에서 더 이상 필요하지 않다는 것을 알았습니다 . 그러나, 여전히 사파리 8에 필요했다
존 Slegers에게

-sand-transform은 무엇입니까? 간단한 Google 검색에서 아무것도 나타나지 않았습니다.
Pete

질문과 관련이 있으며 일을 더 쉽게 만들 수있는 google 'CSS Sandpaper'. 이 구현은 IE의 이전 버전에 대한 변환 표준 CSS에 대한 지원을하는 해킹
페드로 그래서 우린
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.