여러 속성을 가진 CSS 전환 속기?


519

여러 속성이 있는 CSS 전환 속기 의 올바른 구문을 찾을 수없는 것 같습니다 . 이것은 아무것도하지 않습니다 :

.element {
  -webkit-transition: height .5s, opacity .5s .5s;
     -moz-transition: height .5s, opacity .5s .5s;
      -ms-transition: height .5s, opacity .5s .5s;
          transition: height .5s, opacity .5s .5s;
  height: 0;
  opacity: 0;
  overflow: 0;
}
.element.show {
  height: 200px;
  opacity: 1;
}

javascript로 show 클래스를 추가합니다. 요소가 높아지고 표시되며 전환되지 않습니다. 최신 Chrome, FF 및 Safari에서 테스트합니다.

내가 무엇을 잘못하고 있지?

편집 : 분명히하기 위해 CSS를 축소 할 수있는 속기 버전을 찾고 있습니다. 모든 공급 업체 접두사로 충분히 팽창했습니다. 예제 코드도 확장했습니다.


2
이 설명서를 확인하십시오. developer.mozilla.org/en/CSS/CSS_transitions
websymphony

3
실제로 높이와 불투명도의 값을 변경합니까? 그렇지 않으면 변경되지 않습니다
yunzen

CSS 트랜지션에 익숙하지 않습니다. 의도 .5s한 후의 이중 값 opacity입니까?
BoltClock

이 설명서에는 여러 속성이있는 속기 버전을 사용하는 예가 나와 있지 않습니다. 높이는 0에서 200px로, 불투명도는 0에서 1로 변경됩니다. 두 번째 0.5는 불투명도 전환 지연입니다. 나는 요소가 키가
커지길 원

2
예, 지연 값입니다.
BoltClock

답변:


752

통사론:

transition: <property> || <duration> || <timing-function> || <delay> [, ...];

지연 시간이 지정된 경우 지속 시간이 지연 시간보다 높아야합니다.

속기 선언으로 결합 된 개별 전환 :

-webkit-transition: height 0.3s ease-out, opacity 0.3s ease 0.5s;
-moz-transition: height 0.3s ease-out, opacity 0.3s ease 0.5s;
-o-transition: height 0.3s ease-out, opacity 0.3s ease 0.5s;
transition: height 0.3s ease-out, opacity 0.3s ease 0.5s;

또는 모두 전환하십시오.

-webkit-transition: all 0.3s ease-out;
-moz-transition: all 0.3s ease-out;
-o-transition: all 0.3s ease-out;
transition: all 0.3s ease-out;

다음은 간단한 예 입니다. delay 속성을 가진 또 다른 것이 있습니다 .


편집 : 이전에 여기에 나열된 호환성 및 알려진 문제는 다음과 같습니다 transition. 가독성을 위해 제거되었습니다.

결론 : 그냥 사용하십시오. 이 속성의 특성은 모든 응용 프로그램에 영향을 미치지 않으며 호환성은 전 세계적으로 94 %를 훨씬 상회합니다.

여전히 확인하려면 http://caniuse.com/css-transitions를 참조하십시오 .


1
이것을 시도 했습니까? 그것은 나를 위해 작동하지 않습니다. 또한 두 번째 속성이 지연되어 모든 속성을 사용할 수 없습니다.
Gregory Bolkenstijn

3
all특정 속성을 나열하는 대신 성능 / 메모리 / 기타 관련 사항이 있습니까? 예, 내가 전환 계획입니다 경우 backgroundcolor전용 - 나는 내가 더 나은 모두 지정하거나 개시 all? 또한 IE6-9는 전환을 지원하지 않으며 IE10은 접두사를 지원하지 않습니다. ms-transition:지시문 을 포함하는 것에 대한 단점이 있습니까?
mattstuehler

9
단순히 필요한 속성 대신 모든 속성을 전환 할 때 성능에 영향을 미칩니다. 모든 속성을 동시에 전환 하는 요소가 많은 경우 심각한 손상을 일으킬 수 있습니다 . 에 대해 ms-transition, 나는 IE10이 나왔기 때문에 어떤 이유를 모른다. 왜 ms-transition표준이 아닌 다른 사람이 여전히 사용 하는가 transition. 두 가지 모두 문제를 일으키지 않지만 특히 전환이 많은 스타일 시트에서 CSS를 부 풀릴 것입니다. 더 중요한 것은 파일 크기도 적중한다는 것입니다.
Rémi Breton

3
나는 같은 문제가 있었고 "전환 : 불투명도 1.5s 0.5s, 최대 높이 0.5s 0"을 사용하는 것이 작동하지 않는 반면 "전환 : 불투명도 1.5s 0.5s, 최대 높이 0.5s 0s"는 작동하지 않는 것으로 나타났습니다. 처음으로 CSS에서 0 값에 필요한 단위를 봅니다!
mlarcher

5
'all'을 사용하는 것이 특정 속성을 지정하는 것보다 느리다는 것을 지적 할 가치가 있습니다.
Nathan

433

같은 방식으로 전환하려는 몇 가지 특정 속성이있는 경우 (예 : 전환 하지 않으려 속성이 있기 때문에 opacity) 다른 옵션은 다음과 같은 작업을 수행하는 것입니다 (간단히 생략).

.myclass {
    transition: all 200ms ease;
    transition-property: box-shadow, height, width, background, font-size;
}

두 번째 선언은 all위의 속기 선언을 무시하고 간혹 더 간결한 코드를 만듭니다.

/* prefixes omitted for brevity */
.box {
    height: 100px;
    width: 100px;
    background: red;
    box-shadow: red 0 0 5px 1px;
    transition: all 500ms ease;
    /*note: not transitioning width */
    transition-property: height, background, box-shadow;
}

.box:hover {
  height: 50px;
  width: 50px;
  box-shadow: blue 0 0 10px 3px;
  background: blue;
}
<p>Hover box for demo</p>
<div class="box"></div>

데모


4
유용합니다! transition-property재정의 때문이 아니라 예를 들어 transition-delay속기 후에 지정해야합니다 (적어도 웹킷에서는). 즉, 속기는 a transition-delay의 0을 의미 하고 속기는 다시 0으로 설정하기 전에 독립형 지연을 적용합니다.
duncanwilcox

@duncanwilcox 당신은 transition: [props] [duration] [easing] [delay] 모든 최신 브라우저에서 할 수 있습니다
Jason

9
이 답변을 허용되는 답변보다 훨씬 많이 선호하십시오.
Erutan409

3
아름다운! 정말 접근 방식을 좋아합니다!
wasddd_

36

나는 이것으로 일한다.

element{
   transition : height 3s ease-out, width 5s ease-in;
}

이것은 내가 찾고있는 것입니다-여러 속성의 약자. 감사!
Adam Moisa

2

불투명도 전이에 0.5 초 지연을 가짐으로써, 높이가 전이되는 전체 시간 동안 요소는 완전히 투명하게되어 보이지 않습니다. 따라서 실제로 보게 될 것은 불투명도 변화뿐입니다. 따라서 높이 속성을 전환에서 제외하는 것과 동일한 효과를 얻을 수 있습니다.

"전환 : 불투명도 .5s .5s;"

그것이 당신이 원하는 것입니까? 그렇지 않은 경우 높이 전환을보고 싶은 경우 전체 전환 시간 동안 불투명도를 0으로 설정할 수 없습니다.


불투명도를 전환하는 동안 높이가 0으로 유지되므로 작동하지 않습니다.
Xesau

0

이를 통해 애니메이션에 필요한 것만 이해하고 능률화했습니다.

// SCSS - Multiple Animation: Properties | durations | etc.
// on hover, animate div (width/opacity) - from: {0px, 0} to: {100vw, 1}

.base {
  max-width: 0vw;
  opacity: 0;

  transition-property: max-width, opacity; // relative order
  transition-duration: 2s, 4s; // effects relatively ordered animation properties
  transition-delay: 6s; // effects delay of all animation properties
  animation-timing-function: ease;

  &:hover {
    max-width: 100vw;
    opacity: 1;

    transition-duration: 5s; // effects duration of all aniomation properties
    transition-delay: 2s, 7s; // effects relatively ordered animation properties
  }
}

~ '.base'클래스 내의 모든 전환 속성 (지속 시간, 전환 타이밍 기능 등)에 적용됩니다.


-4

나는 이것과 함께 일한다고 생각한다.

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