0

我制作的一个小动画有问题。我有一组垂直显示的图标,当您将鼠标移到它上面时,每个图标都会显示一个相关的文本。

问题是,如果您将鼠标移到第四个图标上,然后再移到第三个图标上,您会注意到文本大小调整了两次。我的意思是它首先结束动画,然后调整包含文本的段落的大小以适应实际宽度。虽然不太明显,但第一个图标也会出现问题。

据我所知,这不是一个浏览器错误,因为它发生在所有浏览器上。

你知道为什么浏览器会以这种方式运行以及如何解决吗?

我的 HTML 如下:

<aside id="social-bar">
   <div id="facebook">
      <a href="#">
         <img src="icon.png" alt="Facebook icon" />
         <p>Like us on Facebook</p>
      </a>
      <br class="clear-both" />
   </div>
   <div id="twitter">
      <a href="#">
         <img src="icon.png" alt="Twitter icon" />
         <p>Follow us on Twitter</p>
      </a>
      <br class="clear-both" />
   </div>
   <div id="googleplus">
      <a href="#">
         <img src="icon.png" alt="Google+ icon" />
         <p>+1 us on Google+</p>
      </a>
      <br class="clear-both" />
   </div>
   <div id="usergroup">
      <a href="#">
         <img src="icon.png" alt="Wordpress icon" />
         <p>Read our User Group</p>
      </a>
      <br class="clear-both" />
   </div>
</aside>

虽然我的 CSS 是:

.clear-both {
    clear: both;
}
#social-bar {
    float: left;
    position: absolute;
    z-index: 1;
}
#social-bar > div {
    position: relative;
    margin-bottom: 0.3em;
}
#social-bar a {
    float: left;
    width: 32px;
    height: 32px;
    text-decoration: none;
    overflow: hidden;
    background-color: #333333;
    -webkit-border-radius: 16px;
    -moz-border-radius: 16px;
    border-radius: 16px;
    -webkit-transition: width 0.3s;
    -moz-transition: width 0.3s;
    -o-transition: width 0.3s;
    transition: width 0.3s;
}
#social-bar a:hover, #social-bar a:focus {
    width: 100%;
}
#social-bar img {
    vertical-align: middle;
    float: left;
    padding-right: 0.2em;
}
#social-bar p {
    float: right;
    line-height: 32px;
    font-size: 0.6em;
    color: #FFFFFF;
    margin: 0em;
    padding-right: 1em;
}

此外,您可以查看我创建的 jsfiddle 看到的问题:

http://jsfiddle.net/mt7ny/

4

2 回答 2

2

将您的 CSS 动画放在悬停上,并在正常样式上删除它们。

#social-bar a:hover, #social-bar a:focus {
    width: 100%;
    -webkit-transition: width 0.3s;
    -moz-transition: width 0.3s;
    -o-transition: width 0.3s;
    transition: width 0.3s;
}

http://jsfiddle.net/mt7ny/3/

基本上它仍在尝试计算事物的宽度,同时它正在缩小标签并扩展其他标签。除非为事物设置了恒定的宽度,否则它无法想得那么快。

于 2013-04-29T00:42:53.840 回答
1

最简单的解决办法是改变你好的思维方式

#social-bar a:hover, #social-bar a:focus {
    width: 100%;
}

经过

#social-bar a:hover, #social-bar a:focus {
    width: 135px;
}

问题解决了,可能没有以前那么好了:)

于 2013-04-29T00:19:08.730 回答