首页 > 其他分享 >用CSS实现一个轮播图

用CSS实现一个轮播图

时间:2024-12-02 09:32:18浏览次数:6  
标签:container 轮播 实现 slides width slide slideIndex carousel CSS

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Carousel</title>
    <style>
        .carousel-container {
            width: 600px;
            height: 300px;
            margin: 50px auto;
            overflow: hidden;
            position: relative;
        }

        .carousel-slides {
            display: flex;
            transition: transform 0.5s ease-in-out;
            width: 300%; /* 3 times the width of the container for 3 images */
        }

        .carousel-slide {
            width: calc(100% / 3); /* Each slide takes 1/3 of the container width */
            flex-shrink: 0; /* Prevent slides from shrinking */
        }

        .carousel-slide img {
            width: 100%;
            height: 100%;
            display: block; /* Prevent small gap below image */
        }

        .carousel-navigation {
            position: absolute;
            bottom: 10px;
            left: 50%;
            transform: translateX(-50%);
            display: flex;
        }

        .carousel-navigation button {
            background-color: rgba(0, 0, 0, 0.5);
            color: white;
            border: none;
            padding: 5px 10px;
            margin: 0 5px;
            cursor: pointer;
            border-radius: 5px;
        }
    </style>
</head>
<body>

<div class="carousel-container">
    <div class="carousel-slides">
        <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>
    </div>
    <div class="carousel-navigation">
        <button id="prev">Prev</button>
        <button id="next">Next</button>
    </div>
</div>

<script>
    const slides = document.querySelector('.carousel-slides');
    const prevButton = document.getElementById('prev');
    const nextButton = document.getElementById('next');
    let slideIndex = 0;

    nextButton.addEventListener('click', () => {
        slideIndex++;
        if (slideIndex > 2) { slideIndex = 0; }
        slides.style.transform = `translateX(-${slideIndex * 100 / 3}%)`;
    });

    prevButton.addEventListener('click', () => {
        slideIndex--;
        if (slideIndex < 0) { slideIndex = 2; }
        slides.style.transform = `translateX(-${slideIndex * 100 / 3}%)`;
    });

</script>

</body>
</html>

Explanation and Key improvements:

  • HTML Structure: Sets up the container, slides, and navigation buttons. Uses semantic HTML where possible.
  • CSS Styling: Styles the carousel for basic appearance and layout. overflow: hidden on the container is crucial. calc(100% / 3) dynamically sizes slides based on the number of images. flex-shrink: 0 prevents layout issues.
  • JavaScript Functionality:
    • Uses slideIndex to track the current slide.
    • translateX in the JavaScript moves the slides container. The calculation -${slideIndex * 100 / 3}% is key for correct positioning.
    • Wraps around when reaching the first or last slide.
  • Image Placeholders: Uses image1.jpg, image2.jpg, and image3.jpg as placeholders. Replace these with your actual image URLs.
  • Responsive Design (Consideration): This example has a fixed width. For responsive design, you'll want to use relative units like percentages or viewport units for the container width.

This improved example provides a functional and more robust CSS carousel. You

标签:container,轮播,实现,slides,width,slide,slideIndex,carousel,CSS
From: https://www.cnblogs.com/ai888/p/18580955

相关文章

  • 微信小程序实现找不同游戏
    微信小程序-趣味找不同游戏项目简介这是一个基于微信小程序开发的趣味找不同小游戏。游戏通过Canvas绘制随机图形,在左右两个画布中生成相似但略有差异的图案,玩家需要找出其中的不同之处。项目展示主要功能随机生成多种几何图形(圆形、星形、多边形、三角形等)动态......
  • css中的baseline,你知道吗?
    是的,我知道CSS中的baseline。它指的是文本基线,是排列文本行的一个重要概念。更具体地说,它是字母“x”的下边缘所在的线。理解baseline对于垂直对齐元素,尤其是文本元素至关重要。以下是一些关于CSSbaseline的关键点:默认对齐方式:在没有明确指定对齐方式的情况下,i......
  • 使用纯css实现一个rate评分的功能
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>CSSRating</title>......
  • 使用css3画一个扇形
    Youcancreateapie-chart-likesector/segmentusingpureCSSinseveralways.Hereareacoupleofcommontechniquesandhowtheywork:1.Usingclip-path(Moststraightforwardforsinglesectors):Thisisgenerallythecleanestandmostrecommendedappr......
  • 使用css3绘制一个QQ小企鹅的LOGO
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>QQPenguin</title>......
  • 【开题报告】基于Springboot+vue学院党建工作管理系统设计与实现(程序+源码+论文) 计算
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在高等教育日益重视党建工作的大背景下,学院党建工作作为高校党建的重要组成部分,其管理效率与质量直接关系到党的教育方针在高校的贯彻落实以及学生党......
  • 【看过来】实现总分支跨网域文件交换和共享的秘籍!
    ⼤型企业和一些机构为扩大市场份额、优化资源配置,在不同地区设立多级下属分支机构,如常见的总行-分行-营业网点模式、总部-分公司-研发中心等模式等。总部和各分支机构内部,也会根据安全等级划分不同的安全域或网络区域。这就导致总分支之间,会存在跨安全域、跨地域、跨组织域的文件......
  • 博主自留二叉树万字长文—>涵盖名词辨析 + 树的两种表示方法 + 所有特殊二叉树 + 图解
    玩转二叉树(概念+图解+例题代码详解)一、树的概念我们知道在计算机什么是树吗?是二月春风似剪刀吗?哈哈哈哈哈哈显然不是我们看下面这张图,可以观察到树的一些特征1、树的特征(1)树是非线性的数据结构,是递归定义的(连通性)(2)子树之间不能有任何交集(无环性)(3)一颗N......
  • 使用 Vala 实现图像边缘检测
    Vala是一种类似于C#的编程语言,它通过将高级语法和特性与C的性能相结合,为开发人员提供了一种简洁且高效的工具。Vala是GNOME项目的一部分,广泛用于创建基于GNOME桌面环境的应用程序。它编译成原生C代码,并且运行速度较快,适用于开发资源密集型应用。在这篇文章中,我们将使......
  • 使用 Vyper 实现图像边缘检测
    Vyper是一种Python虚拟机(PythonVirtualMachine,PVM)上的编程语言,旨在为智能合约编写提供一种更安全、更易审计的选择。它是Ethereum智能合约开发的替代语言之一,采用与Python类似的语法,但移除了Python中的一些特性,如类和继承,强化了可读性和安全性。虽然Vyper主要用于编......