准备工作:引入 jQuery

在使用任何 jQuery 特效之前,请确保你的 HTML 文件中已经引入了 jQuery 库,最简单的方式是通过 CDN:

jquery 特效模板
(图片来源网络,侵删)
<!-- 在 <head> 或 <body> 的底部引入 -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

页面元素淡入淡出

这是最基础也是最常用的特效之一。

功能描述

让元素以动画的方式平滑地显示或隐藏。

核心代码

$(document).ready(function(){
    // 点击按钮淡入元素
    $("#fadeInBtn").click(function(){
        $("#myBox").fadeIn();
    });
    // 点击按钮淡出元素
    $("#fadeOutBtn").click(function(){
        $("#myBox").fadeOut();
    });
    // 点击按钮切换元素的显示/隐藏状态
    $("#fadeToggleBtn").click(function(){
        $("#myBox").fadeToggle();
    });
});

HTML 结构

<button id="fadeInBtn">淡入</button>
<button id="fadeOutBtn">淡出</button>
<button id="fadeToggleBtn">切换</button>
<div id="myBox" style="width:100px; height:100px; background-color:red; display:none;"></div>

可调整参数

jQuery 提供了 speed(速度)和 callback(回调函数)参数。

  • speed: 可以是 "slow", "fast" 或毫秒数(如 1000)。
  • callback: 动画完成后执行的函数。
// 示例:1秒内淡入,完成后弹出提示
$("#myBox").fadeIn(1000, function(){
    alert("淡入完成!");
});

使用场景

  • 图片加载时的渐显效果。
  • 模态框(弹窗)的显示与隐藏。
  • 广告或通知的平滑出现与消失。

元素滑动

通过改变元素的高度来实现平滑的展开、收起或滑动效果。

jquery 特效模板
(图片来源网络,侵删)

功能描述

让元素上下滑动显示或隐藏。

核心代码

$(document).ready(function(){
    // 点击按钮向下滑动显示元素
    $("#slideDownBtn").click(function(){
        $("#mySlideBox").slideDown();
    });
    // 点击按钮向上滑动隐藏元素
    $("#slideUpBtn").click(function(){
        $("#mySlideBox").slideUp();
    });
    // 点击按钮切换元素的滑动状态
    $("#slideToggleBtn").click(function(){
        $("#mySlideBox").slideToggle();
    });
});

HTML 结构

<button id="slideDownBtn">向下滑动</button>
<button id="slideUpBtn">向上滑动</button>
<button id="slideToggleBtn">切换</button>
<div id="mySlideBox" style="width:100%; background-color:lightblue; padding:20px; display:none;">
    这是一个可以滑动的内容区域。
</div>

可调整参数

同样支持 speedcallback 参数,用法与 fade 系列相同。

// 示例:快速滑动,完成后改变背景色
$("#mySlideBox").slideDown("fast", function(){
    $(this).css("background-color", "lightgreen");
});

使用场景

  • 手风琴(Accordion)菜单。
  • 可折叠的问答列表(FAQ)。
  • 下拉导航菜单。

自定义动画

这是 jQuery 动画的精髓,可以同时改变多个 CSS 属性。

功能描述

让元素以动画方式移动、改变大小、颜色等。

jquery 特效模板
(图片来源网络,侵删)

核心代码

$(document).ready(function(){
    $("#animateBtn").click(function(){
        // 让方块移动并改变大小
        $("#myAnimatedBox").animate({
            left: "250px",       // 向右移动 250px
            opacity: 0.5,        // 透明度变为 0.5
            height: "150px",     // 高度变为 150px
            width: "150px"       // 宽度变为 150px
        }, 1000); // 动画持续 1 秒
    });
});

HTML 结构

<button id="animateBtn">开始动画</button>
<div id="myAnimatedBox" style="width:100px; height:100px; background-color:purple; position:relative;"></div>

可调整参数

  • 第一个参数:一个对象,包含要改变的 CSS 属性和最终值。
  • 第二个参数:speed(速度)。
  • 第三个参数:easing(缓动函数,如 "linear", "swing")。
  • 第四个参数:callback(回调函数)。
// 示例:使用 "linear" 缓动,并在动画结束后重置
$("#myAnimatedBox").animate({
    left: "250px",
    width: "150px"
}, 2000, "linear", function(){
    alert("动画结束!");
    $(this).css("left", "0").css("width", "100px"); // 重置样式
});

使用场景

  • 游戏或交互式界面中的元素移动。
  • 复杂的页面过渡效果。
  • 加载动画(如进度条、旋转图标)。

停止动画

当需要中断一个正在进行的动画时非常有用。

功能描述

立即停止当前正在执行的动画。

核心代码

$(document).ready(function(){
    // 开始一个无限循环的动画
    $("#startLoopBtn").click(function(){
        $("#loopBox").animate({left: "200px"}, 1000)
                    .animate({left: "0px"}, 1000);
    });
    // 停止所有动画
    $("#stopBtn").click(function(){
        $("#loopBox").stop(); // 停止当前正在运行的动画
    });
    // 停止动画,并跳转到动画的最终状态
    $("#stopAndFinishBtn").click(function(){
        $("#loopBox").stop(true, true); // 第一个 true 清空动画队列,第二个 true 跳到最终状态
    });
});

HTML 结构

<button id="startLoopBtn">开始循环动画</button>
<button id="stopBtn">停止动画</button>
<button id="stopAndFinishBtn">停止并跳到终点</button>
<div id="loopBox" style="width:50px; height:50px; background-color:orange; position:relative;"></div>

使用场景

  • 用户点击导航时,停止页面上其他的动画。
  • 在动画执行过程中,用户又触发了新的动作,需要中断旧动画。

延迟与队列控制

控制多个动画的执行顺序和时间间隔。

功能描述

让动画一个接一个地执行,或者在它们之间插入延迟。

核心代码

$(document).ready(function(){
    $("#queueBtn").click(function(){
        var box = $("#queueBox");
        // 链式调用,动画会按顺序执行
        box.animate({height: "300px"}, 500)
           .delay(1000) // 在第一个动画后等待 1 秒
           .animate({width: "300px"}, 500)
           .delay(500)  // 再等待 0.5 秒
           .animate({fontSize: "30px"}, 500);
    });
});

HTML 结构

<button id="queueBtn">执行队列动画</button>
<div id="queueBox" style="width:100px; height:100px; background-color:coral; font-size:16px;">
    队列动画
</div>

使用场景

  • 复杂的多步骤动画效果。
  • 模拟真实的物理运动,如先移动,再停顿,再改变大小。

滚动事件与视差效果

监听用户滚动页面,并据此触发特效,如视差滚动。

功能描述

当用户滚动页面时,让不同元素以不同速度移动,创造出深度感。

核心代码

$(document).ready(function(){
    $(window).scroll(function(){
        // 获取当前滚动位置
        var scrollTop = $(this).scrollTop();
        // 让背景图片以较慢的速度滚动(视差效果)
        $("#parallax-bg").css("background-position-y", scrollTop / 2 + "px");
        // 当滚动到某个位置时,让元素淡入
        if (scrollTop > 200) {
            $("#fadeInOnScroll").fadeIn("slow");
        } else {
            $("#fadeInOnScroll").fadeOut("slow");
        }
    });
});

HTML 结构

<div id="parallax-bg" style="height:800px; background-image:url('your-image.jpg'); background-attachment:fixed; background-size:cover;"></div>
<div style="height:1500px; background-color:#f0f0f0;">滚动页面...</div>
<div id="fadeInOnScroll" style="width:100%; height:200px; background-color:yellow; display:none; text-align:center; line-height:200px;">
    我在滚动后出现了!
</div>

使用场景

  • 网站的首页Banner,背景图片滚动速度比内容慢。
  • 滚动到特定区域时才加载或显示某些内容,优化性能。
  • 无限滚动加载更多内容。

悬停效果

通过 mouseentermouseleave 事件(或 hover 方法)实现交互反馈。

功能描述

当鼠标移入或移出元素时,触发相应的动画或样式变化。

核心代码

$(document).ready(function(){
    // 方法一:使用 hover
    $("#hover-box").hover(
        function() {
            // 鼠标移入时
            $(this).animate({width: "200px"}, 200);
        },
        function() {
            // 鼠标移出时
            $(this).animate({width: "100px"}, 200);
        }
    );
    // 方法二:使用 on 绑定
    $("#hover-box-2").on({
        mouseenter: function() {
            $(this).css("background-color", "lightgreen");
        },
        mouseleave: function() {
            $(this).css("background-color", "lightblue");
        }
    });
});

HTML 结构

<div id="hover-box" style="width:100px; height:100px; background-color:lightblue; cursor:pointer;">
    鼠标悬停我
</div>
<div id="hover-box-2" style="width:100px; height:100px; background-color:lightblue; cursor:pointer; margin-top:10px;">
    我也可以悬停
</div>

使用场景

  • 按钮的放大、变色效果。
  • 卡片式布局中,鼠标悬停时显示更多信息。
  • 导航菜单项的交互反馈。

总结与建议

  1. 从简单开始:先掌握 fadeIn, slideUp, animate 这几个核心方法。
  2. 性能考虑:对于大量元素或复杂的动画,考虑使用 CSS3 动画(transitionanimation),它们通常性能更好,jQuery 动画最终也会转换为 style 属性的改变,但 CSS3 动画能利用 GPU 加速。
  3. 保持代码整洁:使用链式调用(如 $("#el").fadeIn().slideUp();)可以使代码更简洁。
  4. 善用回调:在动画完成后执行后续操作,避免逻辑混乱。
  5. 现代替代品:虽然 jQuery 依然强大,但现代前端框架(如 React, Vue, Svelte)和原生 JavaScript API(如 requestAnimationFrame)提供了更强大和灵活的动画解决方案,对于新项目,请根据需求权衡选择。

希望这些模板能帮助你快速实现各种炫酷的网页特效!