8.11.2 通过data-*属性激活轮播图

8.11.2 通过data-*属性激活轮播图

上面的静态轮播图并不能自动播放,也不能响应用户操作,这是因为该轮播图既没有使用data-*属性激活,也没有使用JS脚本触发。
使用data-*属性激活轮播图会涉及不少属性。下面先讲解这些属性的用法。

应用于轮播图容器的属性

可应用于轮播图容器的属性有如下几个。

属性 描述
data-ride 该属性用于激活轮播图容器。该属性的值固定为'carousel'字符串。
data-interval 设置轮播图开始自动轮播时的间隔时间,单位为毫秒,比如设置为1000,则意味着每隔1秒换一次图片。如果将该属性设置为false,那么该轮播图将永远不会自动轮播。
data-pause 该属性支持'hover'字符串或null值。如果将该属性设置为'hover'(默认值),则鼠标停留在轮播图上时将停止轮播,鼠标离开后则立即开始轮播。
data-wrap 该属性指定轮播到最后一张图片时是否自动重新开始
data-keyboard 该属性设置轮播图是否需要对键盘事件做出响应。

应用于轮播图显示器的列表项,控制按钮的属性

可应用于轮播图显示器内的列表项、控制按钮的属性有如下几个。

方法 描述
data-targethref 这两个属性都用于指定它们所控制的轮播图。这两个属性的值支持各种CSS选择器,通常会使用ID选择器,用于表示轮播图容器。通常链接会使用href属性,而其他元素则需要使用data-target属性。
data-slide-to 该属性通常应用于轮播图显示器内的列表项,指定单击该列表项时轮播图跳转到第几张图片。其中0代表第一张图片。
data-slide 该属性通常应用于轮播图底部的控制按钮。该属性值支持'prev''next'两个字符串,其中'prev'表示显示上一张图片,'next'表示显示下一张图片。

程序示例

下面的示例将会为前一个示例的静态轮播图添加data-*属性,从而实现真正的动态轮播图。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> 轮播图 </title>
<link rel="stylesheet" href="../bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="../bootstrap/css/bootstrap-theme.min.css">
<script type="text/javascript" src="../jquery-3.1.1.js"></script>
<script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script>
</head>

<body>
<div class="container">
<!-- 轮播图容器 -->
<!-- data-ride="carousel"一定要轮播图要设置该属性 -->
<!-- data-interval="1000"自动轮播时的间隔时间为1秒 -->
<!-- data-pause='hover'鼠标悬停在轮播图上是停止轮播 -->
<!-- 1号代码 -->
<div id="myCarousel" class="carousel" data-ride="carousel" data-interval="1000" data-pause='hover'>
<!-- 轮播图显示器 -->
<!-- 2号代码 -->
<ul class="carousel-indicators">
<!-- data-target="#myCarousel"指定 被控制的轮播图 -->
<!-- data-slide-to="0"点击该显示器时显示其 控制的轮播图 的第1张图片 -->
<li class="active" data-target="#myCarousel" data-slide-to="0"></li>
<li data-target="#myCarousel" data-slide-to="1"></li>
<li data-target="#myCarousel" data-slide-to="2"></li>
<li data-target="#myCarousel" data-slide-to="3"></li>
</ul>
<!-- 轮播图主体内容 -->
<div class="carousel-inner" role="listbox">
<!-- 每个class='item'的div元素代表一个轮播项 -->
<div class="item active">
<!-- 图片 -->
<img src="images/lijiang.jpg" alt="漓江">
<!-- 图片说明 -->
<div class="carousel-caption">
<h4>漓江</h4>
<div>漓江风光有山青、水秀、洞奇、石美“四胜”之誉。从桂林至阳朔的83公里漓江河段,集中了桂林山水的精华,令人有“舟行碧波上,人在画中游”之感。</div>
</div>
</div>
<div class="item">
<img src="images/shuangta.jpg" alt="双塔">
<!-- 图片说明 -->
<div class="carousel-caption">
<h4>金银双塔</h4>
<div>金银双塔白天和夜晚晚会呈现出截然不同的美景,白天让人觉得庄严、肃穆,而当夜幕降临,在灯光的映照下,则给人以亲切温馨的感觉。</div>
</div>
</div>
<div class="item">
<img src="images/qiao.jpg" alt="桥">
</div>
<div class="item">
<img src="images/xiangbi.jpg" alt="象鼻山">
</div>
</div>
<!-- 轮播图的前控制按钮 -->
<!-- href="#myCarousel"指明被控制的轮播图 -->
<!-- data-slide="prev"显示前一张图 -->
<!-- 2号代码 -->
<a class="left carousel-control" role="button" data-slide="prev" href="#myCarousel">
<span class="glyphicon glyphicon-chevron-left"></span>
</a>
<a class="right carousel-control" role="button" data-slide="next" href="#myCarousel">
<span class="glyphicon glyphicon-chevron-right"></span>
</a>
</div>
</div>
</body>

</html>

在上述程序中:

  • 1号代码就是在**轮播图容器**上的添加data-*属性,其中
    • data-ride="carousel"属性用于初始化轮播图组件。
    • data-interval="1000"指定自动轮播时每隔1秒就会更换一张图片;
    • data-pause='hover'指定当鼠标悬停在轮播图上时停止轮播。
  • 2号代码是在轮播图显示器的列表项上添加data-*属性,其中
    • data-slide-to="0"指定单击该列表项会跳转到哪张图片,
    • data-target="#myCarousel"指定该列表项所控制的轮播图。
  • 3代码是在轮播图控制按钮上添加data-*属性,其中
    • data-slide="prev"控制单击该链接时显示上一张图片,
    • href="#myCarousel"指定该列表项所控制的轮播图。

浏览该页面时可看到页面自动轮播的效果,如果将鼠标悬停在轮播图上,轮播将停止;也可用鼠标单击轮播显示器轮播控制按钮来切换轮播图片的显示。