【问题标题】:CSS3 - Animation Scale/Rotate on HoverCSS3 - 悬停时动画缩放/旋转
【发布时间】:2015-12-12 02:50:03
【问题描述】:

我尝试并编写了这段代码,但它有一个问题,第一个问题是 div 内的文本会模糊(蓬松)!第二个缩放动画不能轻柔地播放,我想要的只是轻柔地播放动画,缩放一次然后在悬停时无限旋转。

@-webkit-keyframes socialspin {
  from {
    -webkit-transform: scale(2) rotate(0deg);
    -moz-transform: scale(2)rotate(0deg);
    -ms-transform: scale(2) rotate(0deg);
    -o-transform: scale(2) rotate(0deg);
    transform: scale(2) rotate(0deg);
  }

   to {
    -webkit-transform: scale(2) rotateY(90deg);
    -moz-transform: scale(2) rotateY(90deg);
    -ms-transform: scale(2) rotateY(90deg);
    -o-transform: scale(2) rotateY(90deg);
    transform: scale(2) rotateY(90deg);
  }
}

这里是JSFiddle演示

【问题讨论】:

  • 规模有点模糊是的
  • 动画的from部分的比例值不应该是1吗?
  • 我对这个问题感到非常困惑。文本是模糊的,因为您正在使用动画,这样做是为了使过渡看起来更平滑。你在玩什么比例的动画?您的问题中只有一个,并且是不变的:不会有过渡。
  • 抱歉我的英语不好(可能),第 1 期:div 内的文字模糊不清,有什么解决方案可以解决这个问题吗?第二期:没有任何动画的规模运行(轻柔地)。 @jaunt 过渡无助于使其顺利。

标签: css css-animations


【解决方案1】:

获得平滑结果的最佳方法不是放大 (scale=2),而是缩小 (scale=0.5),当然是相反的状态。

而且我不相信你想要的可以通过一个动画来实现。我使用了 2 个元素,一个处理旋转,另一个处理缩放

#container {
    width: 400px;
    height: 400px;
}

#container:hover {
  -webkit-animation: socialspin 5s linear 0s infinite alternate;
}


@-webkit-keyframes socialspin {
  from {    -webkit-transform: rotate(0deg);  }
   to {    -webkit-transform: rotateY(90deg);  }
}
@keyframes socialspin {
  from {    transform: rotate(0deg);  }
   to {    transform: rotateY(90deg);  }
}

#base {
    width: 400px;
    height: 400px;
    background: yellow;
    transform: scale(0.5);
    transition: transform 5s;
    transform-origin: top left;
    font-size: 200%;
}

#container:hover #base {
    transform: scale(1);
 
}
<div id="container">
<div id="base">
    
<br>
<br>
<br>    
HELLLLOOOO!!!
</div>
    </div>

【讨论】:

    【解决方案2】:

    到目前为止,我们还不能完全清除字体。这是因为您正在使用动画。如果没有旋转,文字就不会模糊。但是,我们可以尝试使用几个字体平滑属性来尝试解决这个问题。它们都不是很好,但它们确实略微提高了易读性。

    不管怎样,这里是第二部分的修复:

    我发现了一个黑客。这将在旋转过程中消除模糊,但在放大过程中不会。

    .square {
      width:100px;
      height: 100px;
      background-color:black;
      margin: 50px;
    }
    p {
      -webkit-font-smoothing: antialiased;
      color:white;
      text-align: center;
      padding-top: 35px;
    }
    .square:hover {
      -webkit-animation: scale 1s linear 0s 1, spin 1s linear 1s infinite alternate;
    }
    .square:hover p{
     -webkit-animation: scaletext 1s linear 0s 1;
    }
    @-webkit-keyframes scale {
      from {transform:  scale(1); }
      to{transform:  scale(2);}
    }
    @-webkit-keyframes scaletext {
      from {transform:  scale(1); }
      to{transform:  scale(1);}
    }
    @-webkit-keyframes spin {
      from {transform:  rotateY(0deg) scale(2) ;}
      to {transform:  rotateY(90deg) scale(2);}
    }
    <div class="square">
      <p>Some text</p>                        
    </div>

    (我删除了前缀以浓缩答案)

    【讨论】:

      【解决方案3】:

      here 是示例,重点是首先将主 div 中的所有功能描述为默认值,因为动画使用主元素规则来计算时间等。 第二点在这里您使用了 90 度转弯,但是可以通过 180 度完成完全的转弯,这是一条线的角度 这是代码

      --更新-- here 是您可以看到缩放动画的示例,问题在于您的动画缩放从 2 开始并以 2 结束,因此没有动画 - 更新 - 如果你先运行过渡,然后在过渡运行时让动画等待动画的延迟时间,它工作正常,你可以看到 here

       div {
          width: 200px;
          height: 200px;
          background: yellow;
          -webkit-transform:scale(1) rotate(0);
                  transform:scale(1) rotate(0);
          margin-left:200px;
          margin-top:50px;
          transition:-webkit-transform .5s linear;
          transition:transform .5s linear;
      }
      
      div:hover {
          -webkit-transform:scale(2) rotate(0);
                  transform:scale(2) rotate(0);
        -webkit-animation: socialspin 5s linear .5s infinite alternate;
        -moz-animation: socialspin 5s linear .5s infinite alternate;
      }
      
      
      @-webkit-keyframes socialspin {
        from {
          -webkit-transform: scale(2) rotate(0deg);
          transform:scale(2)  rotate(0deg);
        }
      
         to {
          -webkit-transform: scale(2) rotateY(180deg);
          transform: scale(2) rotateY(180deg);
        }
      }
      

      【讨论】:

      • 不,我的朋友,我想在悬停时缩放(2)!不默认。在你的小提琴仍然有问题。比例不顺畅,文字仍然模糊。
      • 关于模糊文本我不认为你可以做一些尝试通过缩短时间来使动画更快,这个问题可能会稍微不可见
      • 好的,我看到了你的更新,但仍然有一个问题,正如我所说的,我想运行一次缩放动画,然后无限运行旋转。
      • 检查解决方案,如果解决请标记为解决方案@ITSolution
      猜你喜欢
      • 2012-09-12
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 2023-03-23
      • 2013-08-24
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多