
本文将指导你如何使用 HTML、CSS 和 JavaScript 为图片轮播添加滑动切换效果。我们将通过动态添加和移除 CSS 类来实现图片的滑入和滑出动画,从而增强用户体验,使轮播图的切换更加流畅自然。本文提供了详细的代码示例和步骤,帮助你轻松实现这一效果。
核心思想是利用 CSS 的 animation 属性定义滑入 (slide-in) 和滑出 (slide-out) 动画,然后通过 JavaScript 在切换图片时动态地添加和移除这些 CSS 类。
HTML 结构:
首先,确保你的 HTML 结构包含一个容器,用于包裹轮播图的图片。每个图片都应该放在一个 div 元素中,例如 mySlides。
立即学习“Java免费学习笔记(深入)”;
<div class="slideshow-container">
<div class="mySlides slide-in" style="display: block;">
<center>
<div class="numbertext">1 / 6</div>
<img src="image1.jpg" style="width:100%">
<div class="text">Image 1 Description</div>
</center>
</div>
<div class="mySlides slide-in" style="display: none;">
<center>
<div class="numbertext">2 / 6</div>
<img src="image2.jpg" style="width:100%">
<div class="text">Image 2 Description</div>
</center>
</div>
</div>CSS 样式:
定义 slide-in 和 slide-out 动画。确保你的 CSS 文件包含以下内容:
.slide-in {
-webkit-animation-name: slide-in-right;
-webkit-animation-duration: 1.5s;
animation-name: slide-in-right;
animation-duration: 1.5s;
}
.slide-out {
-webkit-animation-name: slide-out-left;
-webkit-animation-duration: 1.5s;
animation-name: slide-out-left;
animation-duration: 1.5s;
}
@keyframes slide-in-right {
from {
transform: translateX(100%);
}
to {
transform: translateX(0%);
}
}
@keyframes slide-out-left {
from {
transform: translateX(0%);
}
to {
transform: translateX(-100%);
}
}JavaScript 代码:
修改 JavaScript 代码,在显示新图片和隐藏旧图片时,动态添加和移除 CSS 类。
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides");
if (n > slides.length) {
slideIndex = 1
}
if (n < 1) {
slideIndex = slides.length
}
// 找到当前显示的 slide 和即将显示的 slide
let slideToHide = document.querySelector(".mySlides[style='display: block;']");
let slideToShow = slides[slideIndex - 1];
// 移除所有 slides 的显示样式
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
// 添加动画类
if (slideToHide) {
slideToHide.classList.remove("slide-in");
slideToHide.classList.add("slide-out");
}
slideToShow.classList.remove("slide-out");
slideToShow.classList.add("slide-in");
// 显示 slide
slideToShow.style.display = "block";
}<!DOCTYPE html>
<html>
<head>
<style>
* {
box-sizing: border-box
}
body {
font-family: nunito sans;
margin: 0
}
.mySlides {
display: none;
}
center > img {
vertical-align: middle;
height: 75vh;
width: auto !important;
}
.slideshow-container {
max-width: 1250px;
position: relative;
margin: auto;
}
/* Next & previous buttons */
.prev,
.next {
cursor: pointer;
position: absolute;
top: 50%;
width: auto;
padding: 16px;
margin-top: -22px;
color: white;
font-weight: bold;
font-size: 18px;
transition: 0.6s ease;
border-radius: 0 3px 3px 0;
user-select: none;
}
/* Position the "next button" to the right */
.next {
right: 0;
border-radius: 3px 0 0 3px;
}
/* On hover, add a black background color with a little bit see-through */
.prev:hover,
.next:hover {
background-color: rgba(0, 0, 0, 0.8);
}
/* Caption text */
.text {
color: #FFFFFF;
font-size: 22px;
position: absolute;
margin: 5px 0px;
width: 100%;
text-align: center;
}
/* Number text (1/3 etc) */
.numbertext {
color: #ffffff;
font-size: 12px;
padding: 8px 12px;
position: absolute;
top: 0;
}
/* Fading animation */
.slide-in {
-webkit-animation-name: slide-in-right;
-webkit-animation-duration: 1.5s;
animation-name: slide-in-right;
animation-duration: 1.5s;
}
.slide-out {
-webkit-animation-name: slide-out-left;
-webkit-animation-duration: 1.5s;
animation-name: slide-out-left;
animation-duration: 1.5s;
}
@keyframes slide-in-right {
from {
transform: translateX(100%);
}
to {
transform: translateX(0%);
}
}
@keyframes slide-out-left {
from {
transform: translateX(0%);
}
to {
transform: translateX(-100%);
}
}
/* On smaller screens, decrease text size */
@media only screen and (max-width: 300px) {
.prev,
.next,
.text {
font-size: 11px
}
}
</style>
</head>
<body>
<div class="slideshow-container" width="100%">
<div class="mySlides slide-in" style="display: block;">
<center>
<div class="numbertext">1 / 6</div>
<img src="https://www.midstory.org/wp-content/uploads/2022/07/theave1896.16.jpeg" style="width:100%">
<div class="text">HR Koopman postcard of 112th and Michigan, facing north, in 1896.</div>
</center>
</div>
<div class="mySlides slide-in" style="display: none;">
<center>
<div class="numbertext">2 / 6</div>
<img src="https://www.midstory.org/wp-content/uploads/2022/07/theave1900.34-1.jpeg" style="width:100%">
<div class="text">HR Koopman photograph of workmen digging sewer system on 111th and Michigan in 1900.</div>
</center>
</div>
<div class="mySlides slide-in" style="display: none;">
<center>
<div class="numbertext">3 / 6</div>
<img src="https://www.midstory.org/wp-content/uploads/2022/07/theave1903.13.jpeg" style="width:100%">
<div class="text">111th and Michigan in 1903 taken by HR Koopman.</div>
</center>
</div>
<div class="mySlides slide-in" style="display: none;">
<center>
<div class="numbertext">4 / 6</div>
<img src="https://www.midstory.org/wp-content/uploads/2022/07/theave1904.18.jpeg" style="width:100%">
<div class="text">HR Koopman postcard showing a busy section of South Michigan Avenue on 113th street in 1904.</div>
</center>
</div>
<div class="mySlides slide-in" style="display: none;">
<center>
<div class="numbertext">5 / 6</div>
<img src="https://www.midstory.org/wp-content/uploads/2022/07/theave1909.12.jpeg" style="width:100%">
<div class="text">Roseland celebrates its 60th anniversary with a huge parade on July 5th, 1909.</div>
</center>
</div>
<div class="mySlides fade" style="display: none;">
<center>
<div class="numbertext">6 / 6</div>
<img src="https://www.midstory.org/wp-content/uploads/2022/07/theave1910.24.jpeg" style="width:100%">
<div class="text">HR Koopman photograph of 115th and Michigan in 1910 showing horse and buggies, a streetcar, and bicycles.</div>
</center>
</div>
</div>
<br>
<script>
var slideIndex = 0;
showSlides();
function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {slideIndex = 1}
// 找到当前显示的 slide 和即将显示的 slide
let slideToHide = document.querySelector(".mySlides[style='display: block;']");
let slideToShow = slides[slideIndex - 1];
// 添加动画类
if (slideToHide) {
slideToHide.classList.remove("slide-in");
slideToHide.classList.add("slide-out");
}
slideToShow.classList.remove("slide-out");
slideToShow.classList.add("slide-in");
slides[slideIndex-1].style.display = "block";
setTimeout(showSlides, 2000); // Change image every 2 seconds
}
</script>
</body>
</html>通过本文的教程,你已经学会了如何使用 HTML、CSS 和 JavaScript 为图片轮播添加滑动切换效果。这种方法简单易懂,可以有效地提升用户体验。希望你能将这些知识应用到你的项目中,创造出更具吸引力的网页。
以上就是使用 HTML/JavaScript 实现滑动切换效果的图片轮播的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号