WEB小项目--自动轮播图

目录

目的

代码

技术细节

1. HTML结构

基本结构

具体内容

内容布局

2. CSS样式

3. JavaScript功能

小结


目的

为了在用户浏览网页时制造更好的视觉效果和交互体验


代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入Google Fonts中的Noto Serif SC字体 -->
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;700&display=swap" rel="stylesheet">
<style>
*{
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    font-family: 'Noto Serif SC', serif; /* 应用行书字体 */
}

.wrapper{
    width: 100%;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}
.container{
    height: 400px;
    display: flex;
    flex-wrap: nowrap;
    justify-content: start;
}
.card{
    width: 80px;
    border-radius: .75rem;
    background-size: cover;
    cursor: pointer;
    overflow: hidden;
    border-radius: 2rem;
    margin: 0 10px;
    display: flex;
    align-items: flex-end;
    transition: .6s cubic-bezier(.28,-0.03,0,.99);
    box-shadow: 0px 10px 30px -5px rgba(0,0,0,0.8);
}

.card > .row{
    color: white;
    display: flex;
    flex-wrap: nowrap;
}
.card > .row >.icon{
    background: #223;
    color: white;
    border-radius: 50%;
    width: 50px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 15px;
}
.card > .row > .description{
    display: flex;
    justify-content: center;
    flex-direction: column;
    overflow: hidden;
    height: 80px;
    width: 500px;
    opacity: 0;
    transform: translateY(30px);
    transition-delay: .3s;
    transition: all .3s ease;
}
.description p{
    color: #b0b0ba;
    padding-top: 5px;
}
.description h4{
    text-transform: uppercase;
}
input{
    display: none;
}
input:checked + label {
    width: 500px;
}
input:checked + label .description{
    opacity: 1 !important;
    transform: translateY(0) !important;
}
.card[for ="c1"]{
    background-image: url(./img/5.jpg);
}
.card[for ="c2"]{
    background-image: url(./img/1.jpg);
}
.card[for ="c3"]{
    background-image: url(./img/6.jpg);
}
.card[for ="c4"]{
    background-image: url(./img/4.jpg);
}
</style>
</head>

<body>
<div></div>
<hr width="2000px">

    <div class="cs3"></div>

    <div class="wrapper">
        <div class="container">
            <input type="radio" name="slide" id="c1" checked>
            <label for="c1" class="card">
                <div class="row">
                    <div class="icon">1</div>
                    <div class="description">
                        <h4>将进酒</h4>
                        <p>君不见黄河之水天上来,奔流到海不复回。</p>
                    </div>
                </div>
            </label>

            <input type="radio" name="slide" id="c2" >
            <label for="c2" class="card">
                <div class="row">
                    <div class="icon">2</div>
                    <div class="description">
                        <h4>关山月</h4>
                        <p>明月出天山,苍茫云海间</p>
                    </div>
                </div>
            </label>


            <input type="radio" name="slide" id="c3" >
            <label for="c3" class="card">
                <div class="row">
                    <div class="icon">3</div>
                    <div class="description">
                        <h4>月下独酌</h4>
                        <p>花间一壶酒,独酌无相亲</p>
                    </div>
                </div>
            </label>


            <input type="radio" name="slide" id="c4" >
            <label for="c4" class="card">
                <div class="row">
                    <div class="icon">4</div>
                    <div class="description">
                        <h4>江上吟</h4>
                        <p>木兰之枻沙棠舟,玉箫金管坐两头</p>
                    </div>
                </div>
            </label>


        </div>
    </div>

<script>
    // 获取所有的radio按钮
    const radios = document.querySelectorAll('input[name="slide"]');
    let current = 0;

    // 设置自动轮播
    setInterval(() => {
        radios[current].checked = false;
        current = (current + 1) % radios.length;
        radios[current].checked = true;
    }, 3000); // 3秒切换一次
</script>
</body>
</html>

配图的url需要是自己的路径,如果您需要可以联系我 


技术细节

1. HTML结构

基本结构
  • <!DOCTYPE html>: 声明文档类型为HTML5。
  • <html lang="en">: 根元素,语言设置为英语。
  • <head>: 包含文档的元数据,如字符集、视口设置、标题和样式表链接。
  • <body>: 包含网页的主要内容。
具体内容
  • <meta charset="UTF-8">: 设置字符编码为UTF-8。
  • <meta name="viewport" content="width=device-width, initial-scale=1.0">: 设置视口,使页面适应不同设备的屏幕宽度。
  • <title>Document</title>: 设置网页标题。
  • <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;700&display=swap" rel="stylesheet">: 引入Google Fonts中的“Noto Serif SC”字体。
内容布局
  • <div class="wrapper">: 包裹整个内容区域,使用Flexbox布局使其居中对齐。
  • <div class="container">: 包含卡片的容器,使用Flexbox布局使其水平排列。
  • <input type="radio" name="slide" id="c1" checked>: 单选按钮,用于控制卡片的显示。
  • <label for="c1" class="card">: 卡片的标签,包含图标和描述。

2. CSS样式

基本样式

  • *: 通配选择器,设置所有元素的盒模型为border-box,去除默认的marginpadding,设置默认字体。
  • .wrapper: 设置宽度为100%,高度为视口高度,使用Flexbox布局使其居中对齐。
  • .container: 设置高度为400px,使用Flexbox布局使其水平排列。
  • .card: 设置卡片的样式,包括宽度、边框半径、背景大小、鼠标指针样式、过渡效果和阴影。
  • .card > .row: 设置行的样式,包括颜色和Flexbox布局。
  • .card > .row > .icon: 设置图标的样式,包括背景颜色、文字颜色、边框半径、宽度、Flexbox布局和居中对齐。
  • .card > .row > .description: 设置描述的样式,包括Flexbox布局、溢出隐藏、高度、宽度、透明度、变换和过渡效果。
  • .description p: 设置段落的样式,包括颜色和内边距。
  • .description h4: 设置标题的样式,包括文本转换为大写。
  • input: 隐藏单选按钮。
  • input:checked + label: 当单选按钮被选中时,设置标签的宽度。
  • input:checked + label .description: 当单选按钮被选中时,设置描述的透明度和变换。
  • .card[for="c1"]: 设置特定卡片的背景图片。
  • .card[for="c2"]: 设置特定卡片的背景图片。
  • .card[for="c3"]: 设置特定卡片的背景图片。
  • .card[for="c4"]: 设置特定卡片的背景图片。

3. JavaScript功能

自动轮播

  • 获取所有单选按钮: 使用document.querySelectorAll('input[name="slide"]')获取所有具有相同name属性的单选按钮。
  • 设置当前索引: 初始化当前索引为0。
  • 设置定时器: 使用setInterval函数每隔3秒切换一次选中的单选按钮,实现自动轮播效果。

小结

本次分享是实现了一个带有自动轮播功能的卡片展示页面。通过使用HTML结构、CSS样式和JavaScript脚本,实现了卡片的切换和自动播放效果。具体功能包括:

  • HTML: 定义了页面的基本结构和内容。
  • CSS: 定义了页面的样式,包括布局、字体、颜色、过渡效果等。
  • JavaScript: 实现了自动轮播功能,通过定时器控制单选按钮的切换。

 最后感谢阅览,感谢您顺手三连

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967343.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW图像水印系统

图像水印技术在数字图像处理中起着重要作用&#xff0c;它能够保护图像的版权、确保图像的完整性&#xff0c;并提供额外的信息嵌入。本项目旨在利用LabVIEW开发一个图像水印系统&#xff0c;实现图像水印的嵌入和提取功能&#xff0c;为数字图像处理提供便捷的工具。 一、项目…

Mp4视频播放机无法播放视频-批量修改视频分辨率(帧宽、帧高)

背景 家人有一台夏新多功能 视频播放器(夏新多功能 视频播放器),用来播放广场舞。下载了一些广场舞视频, 只有部分视频可以播放,其他视频均无法播放,判断应该不是帧速率和数据速率的限制, 分析可能是播放器不支持帧高度大于720的视频。由于视频文件较多,需要借助视频编…

git rebase 和 git merge的区别

Rebase 可使提交树变得很干净, 所有的提交都在一条线上。 Merge 则是包含所有的调试记录&#xff0c;合并之后&#xff0c;父级的所有信息都会合并在一起 Rebase 修改了提交树的历史 比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的&#xf…

Day38-【13003】短文,二叉树,完全二叉树,二叉树的顺序存储,和链式存储

文章目录 第二节 二叉树二叉树的定义及重要性质n个结点&#xff0c;能组合成多少个不同的二叉树满二叉树、完全二叉树完全二叉树的性质二叉树的性质二叉树的结点数完全二叉树的高度 二叉树的存储顺序存储方式链式存储方式二叉链表的程序实现二叉链表空指针域计算 第二节 二叉树…

echarts 3d中国地图飞行线

一、3D中国地图 1. 一定要使用 echarts 5.0及以上的版本; 2. echarts 5.0没有内置中国地图了。点击下载 china.json&#xff1b; 3. 一共使用了四层地图。 &#xff08;1&#xff09;第一层是中国地图各省细边框和展示南海诸岛&#xff1b; &#xff08;2&#xff09;第二层是…

傅里叶公式推导(一)

文章目录 三角函数系正交证明图观法数学证明法计算当 n不等于m当 n等于m&#xff08;重点&#xff09; 其它同理 首先要了解的一点基础知识&#xff1a; 三角函数系 { sin ⁡ 0 , cos ⁡ 0 , sin ⁡ x , cos ⁡ x , sin ⁡ 2 x , cos ⁡ 2 x , … , sin ⁡ n x , cos ⁡ n x ,…

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现

SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现 目录 SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来Matlab实现预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SSA-TCN麻雀算法优化时间卷积神经网络时间序列预测未来&#xff08;优…

DeepSeek 助力 Vue 开发:打造丝滑的步骤条

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

利用二分法进行 SQL 盲注

什么是sql注入&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是一种常见的 Web 安全漏洞&#xff0c;攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下&#xff0c;服务器不会直接返回查询结果&#xff0c;而是通过布尔值&#xff08;Tr…

USB子系统学习(四)用户态下使用libusb读取鼠标数据

文章目录 1、声明2、HID协议2.1、描述符2.2、鼠标数据格式 3、应用程序4、编译应用程序5、测试6、其它 1、声明 本文是在学习韦东山《驱动大全》USB子系统时&#xff0c;为梳理知识点和自己回看而记录&#xff0c;全部内容高度复制粘贴。 韦老师的《驱动大全》&#xff1a;商…

数据安全:守护数据的坚固防线

在数字化时代&#xff0c;数据已成为企业和组织的核心资产。然而&#xff0c;数据的安全性问题也日益凸显&#xff0c;数据泄露、数据滥用等事件频发&#xff0c;给企业和个人带来了巨大的损失。今天&#xff0c;让我们深入《DAMA数据管理知识体系指南&#xff08;第二版&#…

PyQt学习记录

0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序&#xff0c;然后新建一个目录用于学习&#xff0c;其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力&#xff0c;请改为国内源 pip install pyqt5 -i https://pypi.douban.com/simple然后安装pyqt相关…

对“云原生”的初印象

一、背景 最近因为在工作中以及一些技术博客中听的比较火的一个关键词 "云原生"&#xff0c;于是产生了好奇&#xff0c;云原生到底是什么东西&#xff1f;自己对云原生也是一个纯小白&#xff0c;于是带着这个问题去好好了解一下&#xff0c;什么是"云原生&qu…

SystemVerilog基础:disable fork语句

相关阅读 SystemVerilog基础https://blog.csdn.net/weixin_45791458/category_12517449.html?spm1001.2014.3001.5482 一、进程的概念 在学习disable fork语句之前&#xff0c;首先的了解SystemVerilog中的进程概念&#xff1a;进程是一系列可以独立执行的一个或多个表达式。…

富芮坤FR8003硬件:VDDIO供电有工作不正常的情况从VBAT供电正常

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统

案例:刀箱某一blade,例如 blade 5 安装 Hyper-V Server 2019 操作系统(安装进硬盘) 刀箱USB插入安装系统U盘,登录192.168... IBM BlandeCenter Restart Blande 5,如果Restart 没反应,那就 Power Off Blade 然后再 Power On 重启后进入BIOS界面设置usb存储为开机启动项 …

【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面

本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…

6、使用one-api管理统一管理大模型,并开始使用本地大模型

文章目录 本节内容介绍集中接入&#xff1a;将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型&#xff1a;如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…

绕组电感 - Ansys Maxwell 磁通链与电流

在本博客中&#xff0c;我将演示如何使用 Ansys Maxwell 中磁瞬态求解器的磁通链和电流结果来计算绕组电感。Ansys Maxwell 磁瞬态求解器在场计算中考虑了涡流效应&#xff0c;我将展示一种使用磁通链和电流结果来计算绕组电感的简单方法。 实际上&#xff0c;电感是非线性的…

【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案

建筑设计公司在项目执行过程中&#xff0c;会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求&#xff1a;为了方便内部管理和向客户交付完整的设计方案&#xff0c;公司需要将每个项目文件…