如何使这个旋转图像居中(CSS动画)

时间:2013-09-24 22:46:50

标签: css css3 animation

我的CodePen:http://codepen.io/leongaban/pen/wJAip

橙色齿轮为80x80,白色@徽标也是如此。

enter image description here

我添加了蓝色背景,因此您可以看到由于某种原因,橙色齿轮看起来像是在偏离中心。

这是在photoshop中排列的图像:

enter image description here

HTML:

<div id="spinner">
    <div id="logo">
        <img src="http://leongaban.com/_codepen/whoat/loader-logo.png"/>
    </div>
    <div id="gear" class="spin">
        <img src="http://leongaban.com/_codepen/whoat/loader-gear.png"/>
    </div>
</div>

CSS:

div#spinner {
  position: absolute;
  width: 80px;
  height: 80px;
  top: 35%;
  left: 50%;
  margin-left: -40px;
  background: blue;
}

div#logo {
    position: absolute;
    top: 0;
    left: 0;
    width: 80px;    
    height: 80px;
    z-index: 3;
}

#logo img {
    width: 100%;
    height:100%;
}

div#gear {
    position: absolute;
    top: 0;
    left: 0;
    -webkit-transition: -webkit-transform 0.1s;
    transition: transform 0.1s;
    -webkit-transform: translateX(100%) translateY(-100%) rotate(45deg);
    transform: translateX(100%) translateY(-100%) rotate(45deg);
    pointer-events: none;
    z-index: 2;
}

.spin {
    -webkit-animation: rotation 4.5s linear infinite;
    animation: rotation 4.5s linear infinite;
    -webkit-transform: translateX(100%) translateY(-100%) rotate(45deg);
    transform: translateX(100%) translateY(-100%) rotate(45deg);
}

2 个答案:

答案 0 :(得分:3)

使图像处于#gear div块级别。

#gear img{
    display:block;
}

http://codepen.io/anon/pen/rjfbl

答案 1 :(得分:1)

无论出于何种原因,您的齿轮元件的高度为84px。这将导致它离轴旋转。作为一项实验,您可能希望尝试将高度和#gear设置为非常小(例如0px)并观察它;就好像它绕着它边界框顶部的一个点旋转一样。

将齿轮的宽度和高度明确设置为80x或100%,它将起作用。

div#gear {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: -webkit-transform 0.1s;
  transition: transform 0.1s;
  pointer-events: none;
  z-index: 2;
}

Codepen(你的两条线,宽度和高度):http://codepen.io/anon/pen/LuBvI