一 . 结构分析
一个轮播图片主要包括三个部分:
☑ 轮播的图片
☑ 轮播图片的计数器
☑ 轮播图片的控制器
第一步:设计轮播图片的容器
在 Bootstrap 框架中采用 carousel 样式,并且给这个容器定义一个 ID 值,方便后面采用 data 属性来声明触发。
<div id="slidershow" class="carousel"></div>
第二步:设计轮播图片计数器
在容器 div.carousel 的内部添加轮播图片计算器,采用 carousel-indicators 样式,其主要功能是显示当前图片的播放顺序(有几张图片就放置几个li),一般采用有顺列表来制作:
<div id="slidershow" class="carousel"> <!-- 设置图片轮播的顺序 --> <ol class="carousel-indicators"> <li class="active">1</li> <li>2</li> <li>3</li> </ol> </div>
第三步:设计轮播图片播放区
轮播图整个效果中,播放区是最关键的一个区域,这个区域主要用来放置需要轮播的图片。这个区域使用 carousel-inner 样式来控制,而且其同样放置在 carousel 容器内,并且通过 item 容器来放置每张轮播的图片:
<div id="slidershow" class="carousel slide"> <!-- 设置图片轮播的顺序 --> <ol class="carousel-indicators"> …… </ol> <!-- 设置轮播图片 --> <div class="carousel-inner"> <div class="item active"> <a href="javascript:void(0)"><img src="images/banner-1.jpg"></a> </div> <div class="item"> <a href="javascript:void(0)"><img src="images/banner-2.jpg"></a> </div> <div class="item"> <a href="javascript:void(0)"><img src="images/banner-3.jpg"></a> </div> </div> </div>
第四步:设置轮播图片描述
很多轮播图片效果,在每个图片上还对应有自己的标题和描述内容。其实 Bootstrap 框架中的 Carousel 也提供类似的效果。只需要在 item 中图片底部添加对应的代码。
<div id="slidershow" class="carousel slide"> <!-- 设置图片轮播的顺序 --> <ol class="carousel-indicators"> …… </ol> <!-- 设置轮播图片 --> <div class="carousel-inner"> <div class="item active"> <a href="javascript:void(0)"><img src="images/banner-1.jpg"></a> <!-- 图片对应标题和描述内容 --> <div class="carousel-caption"> <h3>轮播图 1 </h3> <p>轮播图 1 的描述内容</p> </div> </div> …… </div> </div>
第五步:设计轮播图片控制器
很多时候轮播图片还具有一个向前播放和向后播放的控制器。在 Carousel 中通过 carousel-control 样式配合 left 和 right 来实现。其中left表示向前播放,right表示向后播放。其同样放在carousel容器内:
<div id="slidershow" class="carousel slide"> <!-- 设置图片轮播的顺序 --> <ol class="carousel-indicators"> …… </ol> <!-- 设置轮播图片 --> <div class="carousel-inner"> …… </div> <!-- 设置轮播图片控制器 --> <a class="left carousel-control" href=""> <span class="glyphicon glyphicon-chevron-left"></span> </a> <a class="right carousel-control" href=""> <span class="glyphicon glyphicon-chevron-right"></span> </a> </div>
二 . 声明式触轮播图的播放(无需JS)
<!-- 全部的代码 --> <div id="slidershow" class="carousel slide" data-ride="carousel"> <!-- 设置图片轮播的顺序 --> <ol class="carousel-indicators"> <li class="active" data-target="#slidershow" data-slide-to="0"></li> <li data-target="#slidershow" data-slide-to="1"></li> <li data-target="#slidershow" data-slide-to="2"></li> </ol> <!-- 设置轮播图片 --> <div class="carousel-inner"> <div class="item active"> <a href="javascript:void(0)"><img src="images/banner-1.jpg"></a> <!-- 图片对应标题和描述内容 --> <div class="carousel-caption"> <h3>轮播图 1 </h3> <p>轮播图 1 的描述内容</p> </div> </div> <div class="item"> <a href="javascript:void(0)"><img src="images/banner-2.jpg"></a> <div class="carousel-caption"> <h3>轮播图 2 </h3> <p>轮播图 2 的描述内容</p> </div> </div> <div class="item"> <a href="javascript:void(0)"><img src="images/banner-3.jpg"></a> <div class="carousel-caption"> <h3>轮播图 3 </h3> <p>轮播图 3 的描述内容</p> </div> </div> </div> <!-- 设置轮播图片控制器 --> <a class="left carousel-control" href="#slidershow" role="button" data-slide="prev"> <span class="glyphicon glyphicon-chevron-left"></span> </a> <a class="right carousel-control" href="#slidershow" role="button" data-slide="next"> <span class="glyphicon glyphicon-chevron-right"></span> </a> </div>
声明式方法是通过定义 data 属性来实现,data 属性可以很容易地控制轮播的位置。其主要包括以下几种:
data-ride 取值 carousel,并且将其定义在 carousel 上。 data-target 取值 carousel 定义的 ID 名或者其他样式识别符。 如前面示例所示,取值为“#slidershow”,并且将其定义在轮播图计数器的每个 li 上。 data-slide 取值包括 prev,next。定义在轮播图控制器的 a 链接上,同时设置控制器 href 值为容器。 prev 表示向后滚动 next 表示向前滚动 data-slide-to 用来传递某个帧的下标,可以直接跳转到这个指定的帧(下标从0开始计)。 比如 data-slide-to="2",定义在轮播图计数器的每个 li 上。
在这里需要注意可以为 #slidershow 层添加 slide 样式,使用图片与图片切换效果有平滑感。
除了data-ride="carousel"、data-slide、data-slide-to 以外,轮播组件还支持其他三个自定义属性:
属性名称 类型 默认值 描述 data-interval number 5000 幻灯片轮换的等待时间(毫秒)。如果为false,轮播将不会自动开始循环 data-pause string hover 默认鼠标悬停留在幻灯片区域即停止播放,离开即开始播放 data-wrap boolean true 轮播是否持续循环 data-keyboard boolean true 是否支持键盘事件响应,左右方向键控制如下代码实现“轮播不持续循环”和“轮播时间间隔为1秒”:
<div id="slidershow" class="carousel" data-ride="carousel" data-wrap="false" data-interval="1000"> ...... </div>
三 . JavaScript 触发方法图片轮播
HTML:
<div id="slidershow" class="carousel slide"> <!-- 设置图片轮播的顺序 --> <ol class="carousel-indicators"> <li class="active" data-target="#slidershow" data-slide-to="0"></li> <li data-target="#slidershow" data-slide-to="1"></li> <li data-target="#slidershow" data-slide-to="2"></li> </ol> <!-- 设置轮播图片 --> <div class="carousel-inner"> <div class="item active"> <a href="javascript:void(0)"><img src="images/banner-1.jpg"></a> <div class="carousel-caption"> <h3>轮播图 1 </h3> <p>轮播图 1 的描述内容</p> </div> </div> <div class="item"> <a href="javascript:void(0)"><img src="images/banner-2.jpg"></a> <div class="carousel-caption"> <h3>轮播图 2 </h3> <p>轮播图 2 的描述内容</p> </div> </div> <div class="item"> <a href="javascript:void(0)"><img src="images/banner-3.jpg"></a> <div class="carousel-caption"> <h3>轮播图 3 </h3> <p>轮播图 3 的描述内容</p> </div> </div> </div> <!-- 设置轮播图片控制器 --> <a class="left carousel-control" href="#slidershow" role="button"> <span class="glyphicon glyphicon-chevron-left"></span> </a> <a class="right carousel-control" href="#slidershow" role="button"> <span class="glyphicon glyphicon-chevron-right"></span> </a> </div>
JS:
$(function(){ $("#slidershow").carousel({ interval:2000 }); $("#slidershow a.left").click(function(){ $(".carousel").carousel("prev"); }); $("#slidershow a.right").click(function(){ $(".carousel").carousel("next"); }); });
在 carousel() 方法中可以设置具体的参数,如:
属性名称 类型 默认值 描述 interval number 5000 幻灯片轮换的等待时间(毫秒)。如果为false,轮播将不会自动开始循环 pause string hover 默认鼠标悬停留在幻灯片区域即停止播放,离开即开始播放 wrap boolean true 轮播是否持续循环 keyboard boolean true 是否支持键盘事件响应,左右方向键控制
Bootstrap 框架中的 carousel 插件还给使用者提供了几种特殊的调用方法,简单说明如下:
carousel("cycle"):从左向右循环播放;
carousel("pause"):停止循环播放;
carousel("number"):循环到指定的帧,下标从0开始,类似数组;
carousel("prev"):返回到上一帧;
carousel("next"):返回到下一帧
实例下载:Bootstrap 图片轮播.zip