2013 年 1 月更新: 此类最佳实践 此处详细介绍。
2010 年 5 月更新: 我认为这篇文章已 **弃用**。我有一篇 更新的文章,其中涵盖了与本文相同类型的材料,但包含更多功能、更新的技术和更佳实践。
我对 jQuery 了解得越多,它就越自然。这可能是因为它与 CSS 密切相关。从设计的角度来看,jQuery 的语法是
“当我 **这样做** 时,让 **CSS 这样做**。”
更常见的口号是
找到某物,做某事。
…这也非常棒。
因此,现在您不必将 CSS 视为页面布局和页面加载时的样式方式,而是可以将其用于动画,并在页面发生事件时动态更改它以做出反应。例如,菜单。您可以使用点击菜单时发生的 “click” 事件来执行大量操作。
此示例页面包含三个菜单项和三个内容区域:首页、关于和联系。默认情况下,首页按钮处于选中状态,这意味着它的菜单图形处于完全不透明状态,并且显示了它的内容区域
#home {
display: block;
padding: 30px;
}
#home-button {
opacity: 1.0;
border-bottom: 1px solid black;
}
默认情况下,其他菜单项已淡出,并且其内容区域隐藏,如下所示
#about {
display: none;
padding: 30px;
}
#about-button {
opacity: 0.5;
border-bottom: 1px solid black;
}
使用 jQuery,我们可以监听该 click 事件,然后做出相应的操作。这是我们希望发生的事情
- 淡入被点击的菜单项。
- 淡出所有其他菜单项。
- 显示相应的内容区域。
- 隐藏所有其他内容区域。
由于首页按钮默认处于活动状态,因此让我们看一下 **关于按钮** 的 jQuery javascript
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#about-button").click(function(){
$(this).animate({
opacity: 1.0,
borderWidth: 5
}, 600 );
$("#home")
.css({
display: "none"
});
$("#about")
.css({
display: "block"
});
$("#contact")
.css({
display: "none"
});
$("#home-button").animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
$("#contact-button").animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
});
});
</script>
您的完整 javascript 代码将包含所有三个按钮的类似代码段。正如我之前提到的,我仍在学习,因此可能存在更智能的编写方式,但这只是基本知识,而且它们有效。
更新:这更智能。
$("#page-wrap div.button").click(function(){
$clicked = $(this);
// if the button is not already "transformed" AND is not animated
if ($clicked.css("opacity") != "1" && $clicked.is(":not(animated)")) {
$clicked.animate({
opacity: 1,
borderWidth: 5
}, 600 );
// each button div MUST have a "xx-button" and the target div must have an id "xx"
var idToLoad = $clicked.attr("id").split('-');
//we search trough the content for the visible div and we fade it out
$("#content").find("div:visible").fadeOut("fast", function(){
//once the fade out is completed, we start to fade in the right div
$(this).parent().find("#"+idToLoad[0]).fadeIn();
})
}
//we reset the other buttons to default style
$clicked.siblings(".button").animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
});
不错 Chris。在 FF 2 中,光标在悬停时是默认值。也许可以在 CSS 中快速添加一个 cursor:pointer。
我喜欢 jQuery
干杯,老兄
这真的太好了,Chris。
现在我必须想出一个新的项目来试验 jQuery。
这都是你的错。
…我感谢你 - 用大写字母 - 谢谢你这篇文章 :)
你好 Chris,
也许有一种更好的方法来执行您的动画
$(document).ready(function(){
$(“#page-wrap div.button”).click(function(){
if($(this).css(“opacity”) != “1”)
{
$(this).actualBtn.animate({
opacity: 1,
borderWidth: 5
}, 600 );
}
$(this).siblings().animate({
opacity: 0.5,
borderWidth: 1
}, 600 );
});
});
您可能需要进行一些增强来过滤显示的内容 div,但这对您来说应该不是什么大问题。
如果您愿意,我可以做。
太棒了。我正在学习 jQuery,很高兴你在这里做一些工作。
Chris,干得好。我唯一的建议是加快持续时间。不过,很棒!
jQuery 绝对是我最喜欢的 javascript 库,而这里又是另一个证明。干得好。
嗯,内容在 Firefox 中上下滑动,厚度与下面的黑色条一致。
感谢您分享另一篇关于 jQuery 的好文章。
Chris,帖子不错,我还建议可能将 jQuery 的历史插件绑定到一起,这样您仍然可以使用下一步和后退按钮。
您的技能正在提高 :)
有人知道如何在 LI 元素上鼠标悬停时淡入背景图像,并在鼠标移出时淡出背景吗?我一直在寻找 jQuery 代码,但我只找到一个处理颜色的代码。
第一次选择按钮时,FF 中的边框会 “跳动”。有什么想法可以解决这个问题吗?
Internet Explorer 怎么样?它在那里不能完全正常运行。您必须点击两次才能开始工作。
—
Jason
如果在 CSS 中更改了文本的颜色,则在 Firefox 和 Safari(可能还有 IE)中返回时,文本的不透明度会降低。有什么想法吗?
干得好!
我正在寻找动态内容的淡入效果。我的意思是,我从外部服务器端文件加载外部内容到 div 中,并且此加载应该在加载时淡入。是否有类似我想要的这样的工作?
Jquery 真的帮助了我们,伙计…我的意思是,对于像我这样的网页设计师来说…对 JAVA 一无所知,但嘿!~ Jquery 做了所有酷炫的效果和内容!!!
感谢您分享此内容… (敬礼)
我喜欢你在这里所做的一切,干得好,感谢分享。不过,我是一个新手,我想知道,当我将一个 div(Nivo Slider)放在 div id=”home” 中时,页面加载后会显示内容,但是当我点击 div id=”about” 然后再回到首页选项卡时,它不会显示内容。如何解决这个问题?
如果您愿意,我可以发送我的 html 和 css,这会有所帮助。