FlexSlider 使用教程
FlexSlider 是一个由 WooThemes 开发、维护的轻量级、响应式的 jQuery 滑块插件,它功能强大,易于使用,并且免费开源,非常适合快速为网站创建图片轮播、内容展示等效果。

准备工作:下载与引入
你需要从 FlexSlider 的官方网站下载最新版本。
- 下载地址:https://woocommerce.com/flexslider/
- 下载后解压,你会看到以下关键文件和文件夹:
flexslider.css: 滑块的样式文件。jquery.flexslider.js: 滑块的核心功能脚本文件。jquery.flexslider-min.js: 压缩版的脚本文件,推荐在生产环境中使用以提升加载速度。images/: 文件夹包含了导航箭头和播放/暂停按钮的默认图标。fonts/: 文件夹包含了导航点(圆点)的图标字体。
基础使用:创建你的第一个滑块
这是最简单的步骤,只需三行代码即可让滑块运行起来。
步骤 1: 引入必要的文件
在你的 HTML 文件中,首先引入 jQuery 库(FlexSlider 依赖它),然后引入 FlexSlider 的 CSS 和 JS 文件,建议将它们放在 <head> 标签内或页面底部的 </body> 标签之前。
<!-- 在 <head> 中引入 CSS --> <link rel="stylesheet" href="path/to/flexslider.css" type="text/css"> <!-- 在页面底部引入 JS,并确保在 jQuery 之后 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="path/to/jquery.flexslider.js"></script>
最佳实践:为了避免加载顺序问题,通常建议将所有 JavaScript 代码放在 </body> 标签之前。

步骤 2: 编写 HTML 结构
FlexSlider 需要一个特定的 HTML 结构,最基本的结构是:
- 一个外层的
<div>,并赋予flexslider类。 - 内层是一个
<ul>列表,列表中的每一个<li>就是滑块的一张幻灯片(图片或其他内容)。
<div class="flexslider">
<ul class="slides">
<li>
<img src="images/image1.jpg" alt="Slide 1">
</li>
<li>
<img src="images/image2.jpg" alt="Slide 2">
</li>
<li>
<img src="images/image3.jpg" alt="Slide 3">
</li>
</ul>
</div>
注意:<ul> 的类名 slides 是必需的,它告诉 FlexSlider 这个列表是用来存放幻灯片的。
步骤 3: 初始化 FlexSlider
在页面加载完成后,使用 jQuery 来初始化 .flexslider 这个元素。
<script>
$(window).load(function() {
$('.flexslider').flexslider();
});
</script>
为什么用 $(window).load()?
$(document).ready():在 DOM 结构加载完毕后就会执行。$(window).load():在整个页面(包括所有图片、资源)都加载完毕后才执行。
使用 $(window).load() 可以确保所有图片都已经加载完成,这样 FlexSlider 就能正确计算图片尺寸,避免布局错乱,这是官方推荐的做法。
进阶配置:使用选项参数
FlexSlider 的强大之处在于其丰富的配置选项,你可以在初始化时传入一个对象来自定义滑块的行为。
$(window).load(function() {
$('.flexslider').flexslider({
animation: "slide", // 动画效果: "fade" (淡入淡出) 或 "slide" (滑动)
direction: "horizontal", // 方向: "horizontal" (水平) 或 "vertical" (垂直)
controlNav: true, // 是否显示导航圆点
directionNav: true, // 是否显示导航箭头
slideshow: true, // 是否自动播放
slideshowSpeed: 7000, // 自动播放速度 (毫秒)
animationSpeed: 600, // 切换动画速度 (毫秒)
pauseOnHover: true, // 鼠标悬停时是否暂停
touch: true // 是否支持触摸滑动
});
});
常用选项详解:
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
animation |
String | "slide" | 切换动画效果,可选 "fade" (淡入淡出) 或 "slide" (滑动)。 |
animationLoop |
Boolean | true |
是否循环播放,设为 false 时,滑块到最后一项会停止。 |
direction |
String | "horizontal" | 滑动方向,可选 "horizontal" (水平) 或 "vertical" (垂直)。 |
reverse |
Boolean | false |
是否反向滑动,当 direction 为 "vertical" 时很有用。 |
smoothHeight |
Boolean | false |
如果为 true,滑块高度会随内容高度变化而平滑过渡,适用于高度不固定的幻灯片。 |
start |
Function | - | 滑块初始化后执行的回调函数,参数:slider (滑块对象)。 |
before |
Function | - | 每次切换幻灯片之前执行的回调函数,参数:slider。 |
after |
Function | - | 每次切换幻灯片之后执行的回调函数,参数:slider。 |
end |
Function | - | 播放到最后一项时执行的回调函数(仅在 animationLoop: false 时有效),参数:slider。 |
slideshow |
Boolean | true |
是否自动播放。 |
slideshowSpeed |
Integer | 7000 | 自动播放的间隔时间(毫秒)。 |
animationSpeed |
Integer | 600 | 切换动画的持续时间(毫秒)。 |
pauseOnHover |
Boolean | true |
鼠标悬停在滑块上时是否暂停自动播放。 |
controlNav |
Boolean/"thumbnails" |
true |
是否显示导航点(小圆点),如果设置为 "thumbnails",则使用 <li> 中的 <img> 作为缩略图。 |
directionNav |
Boolean | true |
是否显示左右导航箭头。 |
prevText |
String | "Previous" | 左侧箭头的文本。 |
nextText |
String | "Next" | 右侧箭头的文本。 |
keyboard |
Boolean | true |
是否支持键盘方向键控制。 |
multipleKeyboard |
Boolean | false |
是否支持键盘方向键连续快速切换。 |
mousewheel |
Boolean | false |
是否支持鼠标滚轮控制。 |
touch |
Boolean | true |
是否支持触摸滑动(移动端)。 |
video |
Boolean | false |
是否启用视频支持。 |
完整示例代码
下面是一个包含 CSS 和 JS 的完整 HTML 页面示例,你可以直接复制保存为 .html 文件在浏览器中打开查看效果。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">Flexslider 完整示例</title>
<!-- 1. 引入 FlexSlider CSS -->
<link rel="stylesheet" href="flexslider.css" type="text/css">
<style>
/* 自定义样式,可选 */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 40px 20px;
background-color: #f4f4f4;
}
.flexslider {
width: 80%;
max-width: 1000px;
margin: 0 auto;
border: 1px solid #ddd;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.flexslider img {
width: 100%; /* 让图片宽度自适应容器 */
height: auto; /* 保持图片原始比例 */
display: block; /* 去除图片下方的小间隙 */
}
.flex-caption {
background: rgba(0,0,0,0.5);
color: #fff;
padding: 10px;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
text-align: center;
}
</style>
</head>
<body>
<h1>Flexslider 演示</h1>
<!-- 2. 编写 HTML 结构 -->
<div class="flexslider">
<ul class="slides">
<li>
<img src="http://placehold.it/1000x400&text=Slide 1" alt="Slide 1">
<p class="flex-caption">这是第一张幻灯片的标题</p>
</li>
<li>
<img src="http://placehold.it/1000x400&text=Slide 2" alt="Slide 2">
<p class="flex-caption">这是第二张幻灯片的标题</p>
</li>
<li>
<img src="http://placehold.it/1000x400&text=Slide 3" alt="Slide 3">
<p class="flex-caption">这是第三张幻灯片的标题</p>
</li>
<li>
<img src="http://placehold.it/1000x400&text=Slide 4" alt="Slide 4">
<p class="flex-caption">这是第四张幻灯片的标题</p>
</li>
</ul>
</div>
<!-- 3. 引入 jQuery 和 FlexSlider JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="jquery.flexslider.js"></script>
<!-- 4. 初始化 FlexSlider 并配置选项 -->
<script>
$(window).load(function() {
$('.flexslider').flexslider({
animation: "fade", // 使用淡入淡出效果
animationLoop: true, // 循环播放
slideshowSpeed: 5000, // 5秒切换一张
animationSpeed: 1000, // 动画持续1秒
controlNav: true, // 显示导航圆点
directionNav: true, // 显示导航箭头
pauseOnHover: true, // 鼠标悬停时暂停
useCSS: true // 使用 CSS3 过渡效果(默认为 true)
});
});
</script>
</body>
</html>
常见问题与解决方案 (FAQ)
Q1: 图片加载后,布局错乱或高度不正确?
A: 这是最常见的问题,原因是图片还未加载完成,FlexSlider 无法获取其正确高度。
- 解决方案: 始终使用
$(window).load()来初始化 FlexSlider,如步骤 3 所示,这样可以确保所有资源都已加载。
Q2: 如何添加幻灯片标题或描述(Caption)?
A: 你可以在 <li> 标签内添加任何 HTML 元素,然后通过 CSS 来定位它们。
- 示例:
<li> <img src="image.jpg" alt="Slide"> <p class="flex-caption">这是一张美丽的风景。</p> </li>
- CSS:
.flexslider .flex-caption { position: absolute; bottom: 20px; left: 0; width: 100%; text-align: center; color: white; background-color: rgba(0,0,0,0.5); padding: 10px; }
Q3: 如何控制导航箭头和圆点的样式?
A: FlexSlider 的默认样式在 flexslider.css 中,你可以直接修改这个文件,或者在你的自定义 CSS 中使用更高优先级的选择器来覆盖它。
- 示例: 隐藏导航箭头
.flex-direction-nav { display: none; } - 示例: 修改导航圆点的样式
/* 默认圆点 */ .flex-control-paging li a { background: #ccc; /* 修改背景色 */ } .flex-control-paging li a.flex-active { background: #000; /* 修改激活状态的背景色 */ }
Q4: 如何在 JavaScript 中动态添加幻灯片?
A: 这是一个比较高级的用法,你需要先操作 DOM 添加新的 <li>,然后调用 FlexSlider 的 addSlide 方法。
- 示例:
// 假设你有一个按钮,点击后添加新幻灯片 $("#add-slide-btn").on("click", function() { var newSlide = '<li><img src="new-image.jpg" alt="New Slide"></li>'; // 获取 FlexSlider 实例 var slider = $('.flexslider'); // 调用 addSlide 方法 slider.flexslider("addSlide", newSlide); });
Q5: FlexSlider 还在维护吗?
A: 官方已经停止维护,WooThemes (现在是 Automattic 的一部分) 已经将 FlexSlider 标记为 "Archived",这意味着它不会再有新功能或官方的安全更新。
建议:
- 对于新项目,可以考虑使用其他更现代、仍在积极维护的滑块插件,
- Swiper.js: 功能极其强大,性能优秀,对移动端支持非常好。
- Slick: 配置简单,效果丰富,社区活跃。
- Owl Carousel 2: 另一个经典且仍在维护的选择。
- 对于维护旧项目,FlexSlider 仍然是一个稳定可靠的解决方案,只要你不依赖最新的浏览器特性或需要官方支持,它完全可以继续使用。
