我有一个小动画的问题。我有一组垂直显示的图标,当你把鼠标移到每个图标上时,每个图标都会显示一个相关的文本。
问题是,如果您将鼠标移动到第四个图标上,然后移动到第三个图标上,您会注意到文本大小调整了两次。我的意思是,它首先结束动画,然后调整包含文本的段落的大小以适应实际宽度。虽然不太明显,但问题也出现在第一个图标上。
我所能理解的不是一个单一的浏览器错误,因为它发生在所有的浏览器。
你知道为什么浏览器会以这种方式运行以及如何修复吗?
我的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;
}
此外,您可以查看我创建的jsfile来查看问题:
http://jsfiddle.net/mt7ny/把你的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/基本上它仍然试图计算宽度的东西,而它正在缩小标签和扩大其他。它只是不能这么快地思考,除非给事物设置固定的宽度
最简单的解决方法就是改变你好的思维方式
#social-bar a:hover, #social-bar a:focus {
width: 100%;
}
#social-bar a:hover, #social-bar a:focus {
width: 135px;
}
问题解决了,也许不像原来那么好:)