gpt4 book ai didi

javascript - 使用 slider 控制幻灯片放映速度

转载 作者:行者123 更新时间:2023-11-28 15:01:16 30 4
gpt4 key购买 nike

我想创建一个放置在 Canvas 内的自动幻灯片放映,并且我可以使用 slider 控制幻灯片放映的速度。在考虑 Canvas 之前,我想先关注 slider 。

如何让我的 slider 与我的幻灯片一起工作,以便我可以控制速度,在 1 秒到 5 秒之间延迟?

This is my code.

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {box-sizing: border-box;}
body {
font-family: Verdana, sans-serif;
}
.mySlides {
display: none;
}

img {
vertical-align: middle;
}

/* Slideshow container */
.slideshow-container {
max-width: 1000px;
position: relative;
margin: auto;
}

.dot {
height: 10px;
width: 10px;
margin: 0 2px;
background-color: #bbb;
border-radius: 50%;
display: inline-block;
transition: background-color 0.6s ease;
}

.active {
background-color: #717171;
}

/* Fading animation */
.fade {
-webkit-animation-name: fade;
-webkit-animation-duration: 1.5s;
animation-name: fade;
animation-duration: 1.5s;
}

@-webkit-keyframes fade {
from {opacity: .4}
to {opacity: 1}
}

@keyframes fade {
from {opacity: .4}
to {opacity: 1}
}

</style>
</head>
<body>


<div class="slideshow-container">

<div class="mySlides fade">
<img src="1.png" style="width:100%">
</div>

<div class="mySlides fade">
<img src="2.png" style="width:100%">
</div>

<div class="mySlides fade">
<img src="3.png" style="width:100%">
</div>

<div class="mySlides fade">
<img src="4.png" style="width:100%">
</div>

<div class="mySlides fade">
<img src="5.png" style="width:100%">
</div>

<div class="mySlides fade">
<img src="6.png" style="width:100%">
</div>
</div>

<div style="text-align:center">
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
</div>

<div style="text-align:right">
<input id="speed" name="speed" type="range" min="1" max="5" value="3">
<p style="color: black">Value: <span id="speedValue"></span></p>
<script>
var slider = document.getElementById("speed");
var output = document.getElementById("speedValue");
output.innerHTML = slider.value;// Display the default slider value
// Update the current slider value (each time you drag the slider handle)
slider.oninput = function() {
output.innerHTML = this.value;
}
</script>
</div>

<script>
var slideIndex = 0;
showSlides();

function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {slideIndex = 1}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex-1].style.display = "block";
dots[slideIndex-1].className += " active";
setTimeout(showSlides, 2000);
}
</script>

</body>
</html>

最佳答案

您已经接近这个了,您只需要使 showSlides() 函数中的 setTimeout 以 slider 的值为基础。

这是我在您的 JSFiddle 中的做法:

SpeedMod 变量

var speedMod = 3

创建一个新的全局变量,我将其命名为 speedMod 但您可以随意命名。我还将该值默认为 3,因为这是您的 slider 默认值,但您也可以更改它。

slider.oninput = function()

现在我们要添加代码以在 slider 变化时修改我们的全局变量。在您的 slider.oninput = function() 中添加以下行 speedMod = this.value;。您的整个函数将如下所示:

slider.oninput = function() {
output.innerHTML = this.value;
speedMod = this.value;
}

showSlides 函数

最后一部分是根据我们的 speedMod 值设置超时。这可以通过替换来完成:

setTimeout(showSlides, 2000); 

setTimeout(showSlides, speedMod*1000); 

请记住包含 *1000,因为 setTimeout() 的工作单位是毫秒,而不是整秒。

如果您需要更多帮助,请告诉我。

Full JSFiddle with changes

关于javascript - 使用 slider 控制幻灯片放映速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50106989/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com