问题1:跳转
虽然所有其他答案都是有效的(边框显然有罪),但我想我会提供另一种解决方案,即imo更容易更好地跨浏览器(轮廓和阴影没有得到很好的支持,边框是)。我认为仅删除边框不是一个有效的选择,因为它是设计的一部分。奇怪的是被接受为答案(这是一种解释,而不是解决方案)。
我要做的是默认在图像上添加边框,但将颜色设置为透明。然后,您可以在悬停时更改边框颜色。像这样的东西:
.lrow > img {
border: 1px solid transparent;
...
}
.lrow > img.LHover {
border-color: #000;
}
要查看实际代码:http: //jsfiddle.net/Pevara/44jQa/80/
问题 2:淡入淡出
而不是使用 javascript 来实现这一点,我会选择一个完整的 css 解决方案。我同意并非所有浏览器都支持这一点,但它会优雅地降级,并且有人可以争辩说并非所有用户都启用了 js,然后它根本不会降级,而只是失败。而且css解决方案在快速移动时不会造成任何问题...
我改变了什么:
- 重组 html 使其在语义上更正确 IMO 将描述与人员信息一起放在列表中。这样,屏幕阅读器或爬虫也可以理解您的页面
- 重命名了一些类。不是真的 nessacary,但它让你的 css 更容易阅读(尤其是一年之后),而当我在它的时候......
- 删除了 data-id,因为它不再需要
- 添加 css 过渡以获得 .photo 淡入淡出效果
- 添加 css 过渡以获得 .description 淡入淡出效果
HTML 现在看起来像这样:
<div id="tabs">
<ul class='clearfix'>
<li class="person">
<img class='photo' src="http://unclesmiley.files.wordpress.com/2010/01/smiley1.jpg" alt="Smiley face" height="42" width="42" />
<p class="name">A</p>
<p class='title'>Co-Director</p>
<p class='description'>1 Lorem ipsum</p>
</li>
...
</ul>
</div>
和CSS:
#tabs ul {
position: relative; /* to act as reference for the .description */
}
.description {
opacity: 0; /* we use opacity to hide, because we want to be able to fade */
position: absolute;
top: 100%;
left: 0;
width: 100%;
transition: opacity .4s; /* we want to fade opacity on hover */
}
.person {
float: left;
width: 135px;
}
.photo {
opacity: .5;
border: 1px solid transparent;
transition: opacity .4s, border-color .6s; /* we want to fade opacity and bordr */
}
.person:hover .photo {
border-color: #000;
opacity: 1;
}
.person:hover .description {
opacity: 1;
}
(对于 clearfix 类,如果你不明白,我建议你检查谷歌,那里有很多信息)
可以在这里找到一个工作示例:http:
//jsfiddle.net/Pevara/44jQa/81/
更新
要保留状态,您需要一些 javascript。我会通过向悬停的人添加一个类来简化它,并在另一个人收到悬停时将其删除。
您只需要在 :hover 样式中添加一些额外的选择器。在你看到的任何地方,.person:hover [something]
你都会添加一个额外的选择器,像这样.person.active [something]
,用逗号分隔。
javascript 将变得非常简单,看起来像这样:
$('#tabs .person').hover(function() {
// remove the previous active
$('#tabs .person.active').removeClass('active');
// add the active class to the current
$(this).addClass('active');
});
这就是它的全部。
我更新了我的小提琴:http:
//jsfiddle.net/Pevara/44jQa/115/