freeCodeCamp/guide/chinese/miscellaneous/guide-to-build-a-sliding-im.../index.md

203 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Guide to Build a Sliding Image Gallery
localeTitle: 构建滑动图像库的指南
---
本教程将引导您使用[jQuery](https://jquery.com/)库构建图像滑块。
[![GIF显示Slider在行动](//discourse-user-assets.s3.amazonaws.com/original/2X/0/08d83a22c28da836a06853b1f1ea669b398326b9.gif)](https://codepen.io/atjonathan/pen/BKMxxq)
本教程将包含四个部分:
* [HTML](#html)
* [SCSS](#scss)
* [JS](#js)
* [参考](#references)
## HTML
我们将在本教程中使用[Bootstrap](http://getbootstrap.com/)来保持良好的外观,而无需花费大量时间。
我们的结构如下:
```
<div class="container">
<!-- The wrapper for our slider -->
<div class="slider">
<ul class="slides"><!-- Each image will be inside this unordered list --></ul>
</div>
<div class="buttons"><!-- Pause and play buttons will go in here --></div>
</div>
```
在我们的`ul`与`slides`类中,我们将有以下内容:
```
<li class="slide"><img src="#" /></li>
<li class="slide"><img src="#" /></li>
<li class="slide"><img src="#" /></li>
<li class="slide"><img src="#" /></li>
<li class="slide"><img src="#" /></li>
```
在我们的`.buttons`类中,你应该有以下内容:
```
<button type="button" class="btn btn-default pause">
<span class="glyphicon glyphicon-pause"></span>
</button>
<button type="button" class="btn btn-default play">
<span class="glyphicon glyphicon-play"></span>
</button>
```
以下是您的`html`应该是什么样子的示例:
> 注意您应该将image `src`属性替换为您自己的内容。
```
<div class="container">
<div class="slider">
<ul class="slides">
<li class="slide"><img src="https://unsplash.it/1280/720/?image=120" /></li>
<li class="slide"><img src="https://unsplash.it/1280/720/?image=70" /></li>
<li class="slide"><img src="https://unsplash.it/1280/720/?image=50" /></li>
<li class="slide"><img src="https://unsplash.it/1280/720/?image=170" /></li>
<li class="slide"><img src="https://unsplash.it/1280/720/?image=190" /></li>
</ul>
</div>
<div class="buttons">
<button type="button" class="btn btn-default pause">
<span class="glyphicon glyphicon-pause"></span>
</button>
<button type="button" class="btn btn-default play">
<span class="glyphicon glyphicon-play"></span>
</button>
</div>
</div>
```
## SCSS
我们使用[Sass](http://sass-lang.com/)和SCSS语法因此我们可以嵌套和使用变量![:heart_decoration:](//forum.freecodecamp.com/images/emoji/emoji_one/heart_decoration.png?v=2 "heart_decoration")
我们可以使用以下SCSS来定义我们的样式
```
// Variables
$width: 720px;
.slider {
width: $width;
height: 400px;
overflow: hidden;
margin: 0 auto;
text-align: center;
.slides {
display: block;
width: 6000px;
height: 400px;
margin: 0;
padding: 0;
}
.slide {
float: left;
list-style-type: none;
width: $width;
height: 400px;
img {
width: 100%;
height: 100%;
}
}
}
.buttons {
margin: 0;
width: $width;
position: relative;
top: -40px;
margin: 0 auto;
.play {
display: none;
}
.btn {
display: flex;
margin: 0 auto;
text-align: center;
}
}
```
## JS
#### 变量
_在下面的代码片段中我们定义了稍后在代码中使用的变量。_
```
var animationSpeed = 1000; // How quickly the next slide animates.
var pause = 3000; // The pause between each slide.
```
我们将使用一个空变量,我们将调用`setInterval`方法:
```
var interval;
```
#### 动画我们将滑块动画包装在一个函数中:
```
function startSlider() {}
```
我们使用`setInterval()`本机JavaScript方法在基于时间的触发器上自动化函数的内容。
```
interval = setInterval(function() {}, pause);
```
我们使用`pause`变量来查看再次调用函数之前要等待多少毫秒。在此处阅读有关本机`setInterval`方法的更多信息https//developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval。在我们的函数内部我们将使用jQuery在animationSpeed变量的速度之间淡入幻灯片
```
$('.slides > li:first')
.fadeOut(animationSpeed)
.next()
.fadeIn(animationSpeed)
.end()
.appendTo('.slides');
```
* 我们使用`$('.slides > li:first')`定位第一`$('.slides > li:first')` 。 - `.fadeOut(animationSpeed)`将淡出第一张幻灯片,然后使用`.next()` ,我们移动到下一张幻灯片。 - 一旦我们移动到下一张幻灯片,我们将淡入淡出: `.fadeIn(animationSpeed)` 。 - 此序列将一直持续到最后一张幻灯片( `.end()` ),然后我们停止动画。我们现在将调用`startSlider`函数来启动动画:
startSlider;
#### 播放和暂停_此功能是可选的但很容易实现。_我们将隐藏播放按钮因此我们看不到播放和暂停按钮
```
$('.play').hide(); // Hiding the play button.
```
我们现在将创建暂停按钮(在页面加载时自动显示):
```
$('.pause').click(function() {
clearInterval(interval);
$(this).hide();
$('.play').show();
});
```
* 每次使用jQuery单击暂停按钮时我们将调用我们的函数。 - 我们将使用`clearInterval`方法删除间隔,并使用我们的`interval`变量作为参数,指示要停止的间隔。 - 因为我们的滑块已暂停,我们将使用`$(this).hide();`隐藏暂停按钮`$(this).hide();` 。注意:我们正在使用`this` ,它将引用我们的父母正在调用的内容,即`.pause` 。 - 然后我们将显示我们的播放按钮,以便用户可以恢复动画: `$('.play').show();` 。以下代码设置我们的播放按钮(在页面加载时自动隐藏):
$'。play'。clickfunction{ startSlider; $(本).hide; $ '暂停')显示()。 };
* 每次使用jQuery单击播放按钮时我们将调用我们的函数。
* 我们将使用`startSlider`函数启动或重新启动间隔。
* 因为我们的滑块当前正在播放,我们将使用`$(this).hide();`隐藏播放按钮`$(this).hide();` 。注意:我们正在使用`this` ,它将引用我们的父母`.play` 。
* 然后我们将显示我们的暂停按钮,以便用户可以随意停止动画: `$('.pause').show();`
## 参考
* 查看本教程的[CodePen](https://codepen.io/atjonathan/pen/BKMxxq)上的源代码和示例。