前言

项目需求背景

  • 自动轮播,定时切换图片或图文块。
  • 手动切换,允许用户通过点击按钮来切换图片或图文块。
  • 图片或图文块的缩略图显示,提供直观的预览。

CSS3 3D基础知识介绍

1. 什么是CSS3 3D?

CSS3引入了3D变换功能,允许我们通过rotateX、rotateY等属性在三维空间中对元素进行操作。这对于实现轮播特效中的3D效果非常有用。

2. 主要使用的CSS属性

  • transform: 用于应用2D或3D变换。
  • transition: 用于定义元素过渡效果的时长和性质。
  • animation: 用于定义复杂动画的序列。

使用HTML和CSS搭建轮播结构

HTML结构

<div class="carousel">
    <div class="carousel-slide">
        <img src="image1.jpg" alt="Image 1">
    </div>
    <div class="carousel-slide">
        <img src="image2.jpg" alt="Image 2">
    </div>
    <div class="carousel-slide">
        <img src="image3.jpg" alt="Image 3">
    </div>
    <a class="carousel-prev" onclick="changeSlide(-1)">&#10094;</a>
    <a class="carousel-next" onclick="changeSlide(1)">&#10095;</a>
</div>

CSS样式

.carousel {
    position: relative;
    width: 100%;
    max-width: 600px;
    margin: auto;
    overflow: hidden;
}

.carousel-slide {
    width: 100%;
    display: none;
}

.carousel-slide img {
    width: 100%;
    height: auto;
}

.carousel-prev, .carousel-next {
    cursor: pointer;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 18px;
    color: white;
    background-color: rgba(0,0,0,0.5);
    padding: 10px;
}

.carousel-prev {
    left: 10px;
}

.carousel-next {
    right: 10px;
}

让轮播动起来:CSS3动画

CSS动画

.carousel-slide {
    transition: opacity 1s ease-in-out;
}

.carousel-slide.active {
    display: block;
    opacity: 1;
}

JavaScript控制

let slideIndex = 0;
showSlides();

function showSlides() {
    let i;
    let slides = document.getElementsByClassName("carousel-slide");
    for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";  
    }
    slideIndex++;
    if (slideIndex > slides.length) {slideIndex = 1}    
    slides[slideIndex-1].style.display = "block";  
    setTimeout(showSlides, 3000); // Change image every 3 seconds
}

function changeSlide(n) {
    showSlides(slideIndex += n);
}

随机交换与相邻格子的逻辑

项目总结与完整代码

总结