요소에서 여러 CSS 전환을 수행하는 방법은 무엇입니까?


327

꽤 간단한 질문이지만 CSS 전환 속성에 대한 훌륭한 문서를 찾을 수 없습니다. CSS 스 니펫은 다음과 같습니다.

    .nav a
{
    text-transform:uppercase;
    text-decoration:none;
    color:#d3d3d3;
    line-height:1.5 em;
    font-size:.8em;
    display:block;
    text-align:center;
    text-shadow: 0 -1.5em 0 rgba(255, 255, 255, 0.15);
    -webkit-transition: color .2s linear;
    -moz-transition: color .2s linear;
    -o-transition: color .2s linear;
    transition: color .2s linear;
    -webkit-transition: text-shadow .2s linear;
    -moz-transition: text-shadow .2s linear;
    -o-transition: text-shadow .2s linear;
    transition: text-shadow .2s linear;
}

.nav a:hover
{
    color:#F7931E;
    text-shadow: 0 1.5em 0 rgba(247, 147, 30, 0.15);
}

보시다시피 전환 속성이 ​​서로 덮어 씁니다. 텍스트 그림자는 색상이 아닌 애니메이션으로 표시됩니다. 둘 다 동시에 애니메이션을 만들려면 어떻게해야합니까? 답변 주셔서 감사합니다.


transition: all사파리 /
아이 패드에

답변:


583

전환 속성은 전환을 지원하는 모든 브라우저에서 쉼표로 구분됩니다.

.nav a {
  transition: color .2s, text-shadow .2s;
}

ease기본 타이밍 기능이므로 지정할 필요가 없습니다. 정말로 원한다면 linear지정해야합니다.

transition: color .2s linear, text-shadow .2s linear;

이것은 반복적으로 시작되기 때문에 여러 속성에서 동일한 시간과 타이밍 함수를 사용 transition-*하려면 속기 대신 다양한 속성을 사용하는 것이 가장 좋습니다 .

transition-property: color, text-shadow;
transition-duration: .2s;
transition-timing-function: linear;

11
변환은 순서가 중요한 체인이기 때문에 기능 체인에 익숙하면 구문이 기분이
좋으며

1
CSS의 전환에 대한 일반적인 의견으로, 여러 전환 정의를 차례대로 사용하는 것은 효과가 없으며이를 달성하기 위해서는 동일한 정의에 있어야합니다 (여기서는 SA와 동일). CSS의 기본 규칙에 따라 "최신"규칙이 적용되므로 별도의 줄에 여러 정의가있는 경우 마지막 정의 만 적용됩니다. 참고
TheCuBeMan

37

다음과 같이 간단하게 크게 할 수도 있습니다.

.nav a {
    -webkit-transition: all .2s;
}

44
달리 지정하지 않는 한 'all'을 기본값으로 제거 할 수 있습니다.
joshnh

13
좋은 점은 +1이지만 특히 팀 전체의 일관성과 이해를 위해 유지하는 것이 유용하다고 생각합니다.
XML

4
이것을 조심하십시오! 하드웨어 가속 요소와 함께 모바일 용으로 개발하는 경우 새로운 장치가 고장 나고 오래된 장치를 사용할 수 없게됩니다.
Ilya Karnaukhov

2
감사합니다, @ CanerŞahin. 사람들이이 점을 이해하는 데 도움이되는 문서 나 벤치마킹 도구를 제공 할 수 있습니까? 또한 지정자를 사용하지 않는 것보다 '모두'가 더 나쁘다는 증거가 있습니까?
XML

3
@XML 설명 된 방식에는 두 가지 부정적인 영향이 있습니다. 1, 브라우저는 'all'사용으로 인해 추가 리소스를 추가합니다. 브라우저는 성능이 떨어지고 페이지 k을 생성 할 수있는 변경 사항을 기다리는 해당 요소를 자세히 청취합니다. 2, 개발자가 나중에 배경색을 넣어 예상하지 않거나 필요하지 않은 전환 될 경우 예기치 않은 효과를 만들 수 있습니다.
Stefan Burt

29

다음과 같은 것은 동시에 여러 전환을 허용합니다.

-webkit-transition: color .2s linear, text-shadow .2s linear;
   -moz-transition: color .2s linear, text-shadow .2s linear;
     -o-transition: color .2s linear, text-shadow .2s linear;
        transition: color .2s linear, text-shadow .2s linear;

예 : http://jsbin.com/omogaf/2


24

모든 속성을 동일하게 애니메이션으로 만들면 코드를 반복하지 않도록 각각을 개별적으로 설정할 수 있습니다.

 transition: all 2s;
 transition-property: color, text-shadow;

여기에 더 많은 것이 있습니다 : 여러 속성을 가진 CSS 전환 속기?

원치 않는 동작과 예기치 않은 성능 저하로 이어질 수 있으므로 all 속성 (전환 속성이 ​​'all'을 덮어 씁니다)을 사용하지 마십시오.



1

다음은 두 가지 속성을 한 번에 전환하기위한 LESS 믹스 인입니다.

.transition-two(@transition1, @transition1-duration, @transition2, @transition2-duration) {
 -webkit-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
    -moz-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
      -o-transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
          transition: @transition1 @transition1-duration, @transition2 @transition2-duration;
}

자동 접두사가 더 좋습니다!
다시 작성

자동 프리 픽서 + 스타일러스 FTW.
Jason Lydon

1

지속 시간, 지연 및 타이밍 기능에 대해 서로 다른 값으로 여러 전환을 설정할 수 있습니다. 다른 전환을 분할하려면,

button{
  transition: background 1s ease-in-out 2s, width 2s linear;
  -webkit-transition: background 1s ease-in-out 2s, width 2s linear; /* Safari */
}

참조 : https://kolosek.com/css-transition/


0

속성을 모두 지정하지 않아도됩니다.

#box {
  transition: 0.4s;
  position: absolute;
  border: 1px solid darkred;
  bottom: 20px; left: 20px;
  width: 200px; height: 200px;
  opacity: 0;
}

#box.on {
  opacity: 1;
  height: 300px;
  width: 500px;
 }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.