是的,可以使用纯 HTML 标记和 CSS 在任何元素上添加悬停动画。
.animated
{
transition: prop;
prop: value1;
}
.animated:hover
{
prop: value2;
}
prop
您不想动画的 CSS 属性在哪里。这在大多数浏览器中都非常有效。此外,也可以使用脚本创建此行为。
使用您的标记,最好和最简单的无脚本动画解决方案是使用:hover
和transition
. 这是一个如何制作动画的小提琴:http margin-left
: //jsfiddle.net/9kpfW/
您可以使用数字度量为任何属性设置动画。(12px、12em、12% 等) 也可以使用非数字属性(即text-align
)添加悬停效果,但不能应用过渡。此外,还可以使用 为同一元素上的多个属性设置动画transition
。
因此,您可以纯粹使用 CSS 创建非常丰富的效果。不需要 JavaScript。:hover
效果几乎适用于所有浏览器,包括旧版本的 Internet Explorer。但是,如果您需要支持具有相同动画过渡效果的过时浏览器,则需要使用几乎所有浏览器都支持和启用的 JavaScript。我推荐使用 jQuery JavaScript 库来简化你的脚本。
根据luckamit 的回答,这里有一个margin-left
使用jQuery 的相同动画的简单示例。这几乎适用于任何网络浏览器,包括古代版本。
$(".nav li").hover(
function()
{
$(this).find("a").stop().animate({"margin-left" : "40px"});
},
function()
{
$(this).find("a").stop().animate({"margin-left": "5px"});
}
);
小提琴:http: //jsfiddle.net/LxAva/1/
但是,如果您不需要在那些稀有的浏览器中提供相同的体验,我推荐纯 CSS 解决方案,因为它具有将标记、样式和逻辑解耦的原则。丰富的过渡效果更多地与样式相关而不是逻辑,因此应该使用 CSS 而不是 JavaScript 来解决它们。此外,在大多数情况下,CSS 更容易和更快地实现。