【问题标题】:Center a div with animation and vh units in css?在css中将带有动画和vh单位的div居中?
【发布时间】:2014-06-29 10:55:13
【问题描述】:

所以我有一个 div,假设是 width: 7vh; height: 7vh; background: black;,它在另一个 div 中,background: orange; height: 7vh; width: 100%;。我有一个动画,应该取消它的中心。目前我在内部 div 上使用left: 50%,但显然这接近居中,但不是真的。 margin: 0 auto;margin-left: auto; margin-right: auto; 不要动画。那我该怎么办?用JS计算距离是我唯一的办法吗?

JsFiddle http://jsfiddle.net/8e7dk/

这个例子没有居中,它只是接近这样做,通过使用left: 50%;

【问题讨论】:

  • 请在问题中包含您的代码,更好的是,请尝试一下。
  • 你能提供一个最小的演示,其中包含你到目前为止的任何代码,并解释你想要做什么......?

标签: html css css-animations viewport-units


【解决方案1】:

您可以在动画开始时使用margin-left:-3.5vh; 将正方形居中,并在关键帧动画中将其设置为 0:

DEMO

CSS:

#outer{
    background: orange;
    height: 7vh;
    width: 100%;
}
#logo{
    height: 7vh;
    position: absolute;
    left: 50%;
    margin-left:-3.5vh;
    width: 7vh;
    -webkit-animation: moveLeft 1s forwards ease-in-out;
    -moz-animation: moveLeft 1s forwards ease-in-out;
    -ms-animation: moveLeft 1s forwards ease-in-out;
    -o-animation: moveLeft 1s forwards ease-in-out;
    animation: moveLeft 1s forwards ease-in-out;
    background: black;
}

@-webkit-keyframes moveLeft {
    from {left: 50%;margin-left:-3.5vh;}
    to {left: 0;margin-left:0; -webkit-transform: rotate(360deg);}
}
@-o-keyframes moveLeft {
    from {left: 50%;margin-left:-3.5vh;}
    to {left: 0;margin-left:0; -webkit-transform: rotate(360deg);}
}
@-moz-keyframes moveLeft {
    from {left: 50%;margin-left:-3.5vh;}
    to {left: 0;margin-left:0; -webkit-transform: rotate(360deg);}
}
@keyframes moveLeft {
    from {left: 50%;margin-left:-3.5vh;}
    to {left: 0;margin-left:0; -webkit-transform: rotate(360deg);}
}

【讨论】:

  • 谢谢,没想到left和margin-left可以同时使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2013-03-31
  • 2014-05-15
  • 1970-01-01
  • 2013-07-20
相关资源
最近更新 更多