尽管我看到元素跳跃(和返回)更快,但我也可以在 Chrome 中重现该问题。我相信这是由于浮点舍入错误造成的,但老实说 HTML、CSS 和 JavaScript 过于复杂,我认为更简单的解决方案不仅仅涉及舍入某些长度值。因此,尽管它可能不是您所追求的,但我在 Firefox 和 Chrome 中看到了预期的行为。不幸的是,我无法测试 IE。
jsFiddle 演示
我整理/弄乱了 HTML 和 CSS 来解决问题,只使用:hover
悬停效果的伪类并四舍五入所有百分比长度,因此它不会是完全相同的布局。
此外,这可以在没有任何 JavaScript 的情况下解决!
HTML
<ul class="lvl3">
<li>
<a href="1" target="_self">
<div class="lvl3-normal">
<div class="lvl3-pic"></div>
<div class="lvl3-title">Test</div>
<div class="lvl3-subtitle">Frankfurt</div>
</div>
<div class="lvl3-hover"></div>
<div class="lvl3-projektdetails">→ Projektdetails</div>
</a>
</li>
<li>
<a href="1" target="_self">
<div class="lvl3-normal">
<div class="lvl3-pic"></div>
<div class="lvl3-title">Test</div>
<div class="lvl3-subtitle">Munich</div>
</div>
<div class="lvl3-hover"></div>
<div class="lvl3-projektdetails">→ Projektdetails</div>
</a>
</li>
<li>
<a href="1" target="_self">
<div class="lvl3-normal">
<div class="lvl3-pic"></div>
<div class="lvl3-title">Test</div>
<div class="lvl3-subtitle">Cologne</div>
</div>
<div class="lvl3-hover"></div>
<div class="lvl3-projektdetails">→ Projektdetails</div>
</a>
</li>
<li>
<a href="1" target="_self">
<div class="lvl3-normal">
<div class="lvl3-pic"></div>
<div class="lvl3-title">Test</div>
<div class="lvl3-subtitle">Hamburg</div>
</div>
<div class="lvl3-hover"></div>
<div class="lvl3-projektdetails">→ Projektdetails</div>
</a>
</li>
</ul>
CSS
html,
body {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
}
img {
max-width: 100%;
width: 100%;
height: auto;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
.lvl3 a {
text-decoration: none;
padding: 0;
margin: 0;
display:block;
}
.lvl3 li {
float: left;
margin-left: 0.83%;
margin-right: 0.83%;
margin-bottom: 0.83%;
width: 31%;
position: relative;
}
.lvl3-normal {
background-color: #f0f0f5;
width: 100%;
height: 0;
padding-bottom: 83%;
}
.lvl3-hover {
background-color:#ee7029;
width: 100%;
height: 0;
padding-bottom: 53%;
display: none;
opacity:.8;
position:absolute;
top:0;
}
.lvl3-pic {
width: 100%;
height: 0;
padding-bottom: 53%;
background-image:url(http://p183853.webspaceconfig.de/uploads/media/objekt_10.jpg);
}
.lvl3-title {
margin-left: 2%;
margin-top: 3%;
line-height: 30px;
font-size: 14px;
color: #ee7029;
text-decoration: none;
font-weight: bold;
}
.lvl3-subtitle {
margin-left: 2%;
font-size: 12px;
color: #022236;
text-decoration: none;
}
.lvl3-projektdetails {
width: 80%;
height: 30px;
position: absolute;
top: 0;
margin: 20% 10% 0 10%;
line-height: 30px;
background-color: #333;
text-align: center;
font-size: 14px;
color: #FFF;
display:none;
}
a:hover .lvl3-hover, a:visited .lvl3-hover, a:hover .lvl3-projektdetails, a:visited .lvl3-projektdetails {
display: block;
}
a:hover .lvl3-normal, a:visited .lvl3-normal {
background-color:#ee7029;
}
a:hover .lvl3-title, a:visited .lvl3-title {
color:#fff;
}
另请注意,标记将受益于进一步的整理,我也希望使用更具语义的标记,例如使用标题元素而不是<div>
样式作为标题。
希望这可以帮助。