【问题标题】:Microsoft Logo Animation v2微软徽标动画 v2
【发布时间】:2015-08-18 16:00:21
【问题描述】:

我更新了我的animation 的 Microsoft 徽标。它可以在CodePen 上找到。总的来说,除了一件事,我现在对它还是很满意的。

我似乎无法弄清楚如何停止动画以使徽标看起来正确。我尝试将延迟设置为 6000 毫秒 = 6 秒 = 动画长度,但它看起来很遥远。现在它设置为5900ms。这方面有什么建议吗?

我想知道的另一件事是,您如何让 YouTube 视频在一定时间后播放,比如文本何时出现?谢谢!

var playState = '-webkit-animation-play-state';

$(".boxes").css(playState, "running");
setTimeout(function() {
  $(".boxes").css(playState, "paused");
}, 5900);
body {
  background: hsl(30, 20%, 20%);
  color: #fff;
  font-family: 'Open Sans', sans-serif;
}

.boxes {
  -webkit-animation: logo 6s 1 forwards;
  animation: logo 6s 1 forwards;
  position: absolute;
}

.box {
  -webkit-animation: scaling 1.5s cubic-bezier(.1,.95,.7,.8) 4;
  animation: scaling 1.5s cubic-bezier(.1,.95,.7,.8) 4;
  height: 50px;
  width: 50px;
}

.brand {
  -webkit-animation: fadein 2s ease 4.5s forwards;
  animation: fadein 2s ease 4.5s forwards;
  display: inline;
  font-size: 36px;
  margin: 24px 0 0 0;
  opacity: 0;
  position: relative;
  top: -36px;
  text-align: center;
  z-index: 0;
}

.flex {
  display: -webkit-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  min-height: 100vh;
  -webkit-flex-direction: column;
  flex-direction: column;
  justify-content: center;
}

.intro {
  text-align: center;
}

.logo {
  -webkit-animation: moveLeft .5s linear 4.5s forwards;
  animation: moveLeft .5s linear 4.5s forwards;
  display: inline-block;
  height: 100px;
  left: 100px;
  margin: 0 auto;
  position: relative;
  width: 100px;
  z-index: 1;
}

.player {
  display:none;
}

#green {background: #7cbb00;}
#yellow {background: #ffbb00;}
#blue {background: #00a1f1;}
#red {background: #f65314;}

#animateGreen {animation-delay: 4.5s;}
#animateYellow {animation-delay: 3s;}
#animateBlue {animation-delay: 1.5s;}
#animateRed {animation-delay: 0s;}

@keyframes fadein {
  from {opacity: 0;}
  to {opacity: 1;}
}

@keyframes logo {
  0% {left: 0px; top: 0px; transform: rotate(0deg)}
  25% {left: 50px; top: 0px; transform: rotate(-180deg)}
  50% {left: 50px; top: 50px; transform: rotate(-360deg)}
  75% {left: 0px; top: 50px; transform: rotate(-540deg)}
  100% {left: 0px; top: 0px; transform: rotate(-720deg)}
}

@keyframes moveLeft {
  from {padding-right: 0; left: 100px;}
  to {padding-right: 50px; left: 0;}
}

@keyframes scaling {
  0%, 100% {transform: scale(1)}
  50% {transform: scale(.5)}
}
<head><script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script></head>

<div class="flex">
  <div class="intro">
    <div class="logo">
      <div class="boxes" id="animateGreen">
        <div class="box" id="green">
        </div>
      </div>
      <div class="boxes" id="animateYellow">
        <div class="box" id="yellow">
        </div>
      </div>
      <div class="boxes" id="animateBlue">
        <div class="box" id="blue">
        </div>
      </div>
      <div class="boxes" id="animateRed">
        <div class="box" id="red">
        </div>
      </div>
    </div>
    <div class="brand">
      Microsoft
    </div>
  </div>
</div>

<iframe width="560" height="315" src="https://www.youtube.com/embed/I3Ak5VgyEoc?autoplay=1" class="player"></iframe>

【问题讨论】:

    标签: javascript jquery html css animation


    【解决方案1】:

    与其使用 jQuery/JavaScript 来停止动画,更好的方法是为每个以它们结尾的框指定不同的动画。

    Example CodePen

    至于在文本出现时播放 YouTube 视频,如果您参考 YouTube API Docs 在 jQuery 中会是这样的:

    setTimeout(function(){
        //play the youtube video (#playerId) is the id of your youtube video element
        $('#playerId').get(0).playVideo();
    } , 4500); //4500 is the delay in ms
    

    【讨论】:

    • 非常感谢伙计!我想我是因为不写额外的动画而试图变得太高效。谢谢
    猜你喜欢
    • 2023-02-22
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2012-12-07
    • 1970-01-01
    • 2019-06-06
    相关资源
    最近更新 更多