jQuery 曾经是网页特效的王者,虽然现在原生 JavaScript (ES6+) 和现代框架(如 Vue, React)已经非常强大,但 jQuery 依然因其简洁、兼容性好、插件生态丰富而广受欢迎。

下面我将 jQuery 的网页特效分为几个大类,并附上详细的说明和代码示例,让你能快速理解和使用。


基础视觉特效

这是 jQuery 最核心、最常用的功能,主要通过 .show(), .hide(), .toggle(), .fadeIn(), .fadeOut(), .slideUp(), .slideDown(), .slideToggle() 等方法实现。

显示与隐藏

  • .show() / .hide(): 直接设置元素的 display 属性为 blocknone,没有过渡效果。
  • .toggle(): 在 .show().hide() 之间切换。
// 点击按钮时,显示或隐藏一个盒子
$("#toggleBtn").on("click", function() {
  $("#myBox").toggle();
});

淡入与淡出

  • .fadeIn() / .fadeOut(): 通过改变元素的透明度来实现显示和隐藏,效果更平滑。
  • .fadeToggle(): 在 .fadeIn().fadeOut() 之间切换。
  • .fadeTo(duration, opacity): 将元素淡出到指定的透明度(0 到 1 之间)。
// 点击按钮时,淡入或淡出一个盒子
$("#fadeBtn").on("click", function() {
  $("#myBox").fadeToggle(1000); // 1000毫秒 = 1秒
});

滑动

  • .slideDown() / .slideUp(): 通过改变元素的高度来实现显示和隐藏,就像卷帘门一样。
  • .slideToggle(): 在 .slideDown().slideUp() 之间切换。
// 点击按钮时,向下滑动或向上滑动一个盒子
$("#slideBtn").on("click", function() {
  $("#myBox").slideToggle("slow"); // 也可以用 "fast" 或毫秒数
});

自定义动画

jQuery 的核心魅力在于其强大的 .animate() 方法,可以创建几乎任何你能想象到的 CSS 属性动画。

基本用法

.animate(properties, duration, easing, complete)

  • properties: 一个对象,包含要变化的 CSS 属性和目标值。
  • duration: 动画持续时间(毫秒或 "slow"/"fast")。
  • easing: 动画缓动函数(如 "swing" 或 "linear")。
  • complete: 动画完成后执行的回调函数。
// 点击按钮,让盒子移动并改变大小
$("#animateBtn").on("click", function() {
  $("#myBox").animate({
    left: "250px", // 注意:需要元素有 position 属性,如 relative, absolute
    opacity: 0.5,
    height: "150px",
    width: "150px"
  }, 1500, "swing", function() {
    alert("动画完成!");
  });
});

相对值

你可以在值前加上 或 来进行相对变化。

// 每次点击,盒子宽度增加50px
$("#growBtn").on("click", function() {
  $("#myBox").animate({
    width: "+=50px"
  }, "slow");
});

队列动画

默认情况下,多个 .animate() 调用会按顺序执行(排队),形成复杂的动画序列。

// 先向右移动,然后改变颜色,最后淡出
$("#sequenceBtn").on("click", function() {
  $("#myBox")
    .animate({ left: "200px" }, 500)
    .animate({ backgroundColor: "blue" }, 500)
    .fadeOut(500);
});

属性与 CSS 操作

获取和设置 CSS 属性

  • .css(propertyName): 获取指定 CSS 属性的值。
  • .css(propertyName, value): 设置单个 CSS 属性的值。
  • .css(propertiesObject): 一次性设置多个 CSS 属性。
// 获取盒子的背景色
console.log($("#myBox").css("background-color"));
// 设置盒子的边框
$("#myBox").css("border", "2px solid red");
// 同时设置多个样式
$("#myBox").css({
  "font-size": "20px",
  "color": "white",
  "text-align": "center"
});

操作类名

  • .addClass(): 添加一个或多个类。
  • .removeClass(): 移除一个或多个类。
  • .toggleClass(): 切换类(有则移除,无则添加)。
  • .hasClass(): 检查是否包含某个类。
// 点击按钮,为盒子添加一个高亮类
$("#highlightBtn").on("click", function() {
  $("#myBox").toggleClass("highlight");
});
.highlight {
  background-color: yellow;
  font-weight: bold;
}

事件处理

jQuery 让事件处理变得异常简单。

常用事件方法

  • .click(): 点击事件。
  • .hover(): 鼠标悬停事件(包含进入和离开)。
  • .on(): 通用事件绑定方法,功能最强大,推荐使用。
  • .off(): 解除事件绑定。
// 使用 .on() 绑定事件,更灵活
$("#myButton").on("click", function() {
  $(this).text("你点击了我!"); // $(this) 指向触发事件的当前元素
});
// 使用 .hover() 实现悬停效果
$("#myBox").hover(
  function() {
    $(this).css("background-color", "lightblue"); // 鼠标进入
  },
  function() {
    $(this).css("background-color", "lightgray"); // 鼠标离开
  }
);

DOM 操作

内容操作

  • .html(): 获取或设置元素的 HTML 内容(类似 innerHTML)。
  • .text(): 获取或设置元素的纯文本内容(类似 textContent)。
  • .val(): 获取或设置表单元素的值。
// 点击按钮,改变盒子里的HTML
$("#changeContentBtn").on("click", function() {
  $("#myBox").html("<strong>新的HTML内容</strong>");
});

插入元素

  • .append() / .prepend(): 在元素内部末尾/开头插入内容。
  • .after() / .before(): 在元素外部后面/前面插入内容。
  • .appendTo() / .prependTo(): 将元素插入到另一个元素的内部末尾/开头。
// 创建一个新元素并添加到盒子后面
$("<p>这是新添加的段落。</p>").insertAfter("#myBox");

删除元素

  • .remove(): 从 DOM 中完全移除元素及其所有事件。
  • .empty(): 清空元素的所有子节点。
$("#removeBtn").on("click", function() {
  $("#myBox").remove();
});

实战案例:图片轮播

这是一个综合运用了 jQuery 特效的经典案例。

HTML 结构:

<div class="slider">
  <div class="slides">
    <img src="img1.jpg" alt="Slide 1">
    <img src="img2.jpg" alt="Slide 2">
    <img src="img3.jpg" alt="Slide 3">
  </div>
  <button class="prev">&lt;</button>
  <button class="next">&gt;</button>
</div>

CSS:

.slides { position: relative; width: 600px; height: 400px; overflow: hidden; }
.slides img { position: absolute; width: 100%; height: 100%; opacity: 0; transition: opacity 1s; }
.slides img.active { opacity: 1; }
button { position: absolute; top: 50%; transform: translateY(-50%); z-index: 10; }
.prev { left: 10px; }
.next { right: 10px; }

jQuery 代码:

$(document).ready(function() {
  let currentIndex = 0;
  const $slides = $(".slides img");
  const totalSlides = $slides.length;
  // 显示第一张图片
  $slides.eq(currentIndex).addClass("active");
  // 下一张
  $(".next").on("click", function() {
    $slides.eq(currentIndex).fadeOut(500).removeClass("active");
    currentIndex = (currentIndex + 1) % totalSlides;
    $slides.eq(currentIndex).fadeIn(500).addClass("active");
  });
  // 上一张
  $(".prev").on("click", function() {
    $slides.eq(currentIndex).fadeOut(500).removeClass("active");
    currentIndex = (currentIndex - 1 + totalSlides) % totalSlides;
    $slides.eq(currentIndex).fadeIn(500).addClass("active");
  });
  // 自动播放
  setInterval(function() {
    $(".next").click();
  }, 3000);
});

插件生态

jQuery 最大的优势之一是其庞大的插件生态系统,你可以轻松集成各种复杂的特效,而无需自己编写代码。

使用插件示例 (以 Slick 为例):

  1. 引入 CSS 和 JS 文件。
  2. 写好 HTML 结构。
  3. 用一行代码初始化。
<!-- 引入文件 -->
<link rel="stylesheet" type="text/css" href="slick/slick.css"/>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="slick/slick.min.js"></script>
<!-- HTML 结构 -->
<div class="your-class">
  <div>your content</div>
  <div>your content</div>
  <div>your content</div>
</div>
<!-- 初始化插件 -->
<script>
$(document).ready(function(){
  $('.your-class').slick({
    dots: true,
    infinite: true,
    speed: 300,
    slidesToShow: 3,
    slidesToScroll: 1
  });
});
</script>
特效类别 核心方法/功能 描述
基础视觉 .show(), .hide(), .fadeIn(), .fadeOut(), .slideToggle() 快速实现元素的显示、隐藏、淡入淡出、滑动等效果。
自定义动画 .animate() 创建复杂的、自定义的 CSS 属性动画,是 jQuery 的灵魂。
CSS/属性操作 .css(), .addClass(), .toggleClass() 动态修改样式和类名,实现动态样式变化。
事件处理 .on(), .click(), .hover() 简化绑定和处理用户交互事件。
DOM 操作 .html(), .append(), .remove() 动态地创建、修改、移动和删除页面元素。
插件 第三方库 利用强大的插件生态,快速集成轮播、弹窗等高级功能。

虽然前端技术日新月异,但 jQuery 的思想——“写更少的代码,做更多的事情”——依然影响着一代开发者,掌握 jQuery 特效,不仅能让你快速开发项目,也能帮助你更好地理解 DOM 操作和事件处理的底层逻辑。