HTML+CSS:全景轮播

效果演示

37-全景轮播-min.gif

实现了一个简单的网页布局,其中包含了五个不同的盒子,每个盒子都有一个不同的背景图片,并且它们之间有一些间距。当鼠标悬停在某个盒子上时,它的背景图片会变暗,并且文字会变成白色。这些盒子和按钮都被放在一个容器中,整个页面看起来像一个画廊。

Code

<div class="container"><div id="slide"><div class="item" style="background-image:url('./img/章若楠01.jpg')"></div><div class="item" style="background-image:url('./img/鞠婧祎01.jpg')"></div><div class="item" style="background-image:url('./img/鞠婧祎02.jpg')"></div><div class="item" style="background-image:url('./img/鞠婧祎06.jpg')"></div><div class="item" style="background-image:url('./img/鞠婧祎04.jpg')"></div><div class="item" style="background-image:url('./img/鞠婧祎07.jpg')"></div></div><div class="buttons"><div class="left">< Prev</div><div class="center">下载壁纸</div><div class="right">Next ></div></div></div>
</div>
* {margin: 0;padding: 0;box-sizing: border-box;
}.container {width: 100vw;height: 100vh;position: relative;overflow: hidden;
}.item {width: 240px;height: 160px;position: absolute;top: 50%;left: 0;transform: translateY(-50%);border-radius: 10px;box-shadow: 0 30px 50px #505050;background-size: cover;background-position: center;transition: 1s;
}.item:nth-child(1),
.item:nth-child(2) {left: 0;top: 0;width: 100%;height: 100%;transform: translateY(0);box-shadow: none;border-radius: 0;
}.item:nth-child(3) {left: 70%;
}.item:nth-child(4) {left: calc(70% + 250px);
}.item:nth-child(5) {left: calc(70% + 500px);
}.item:nth-child(n+6) {left: calc(70% + 750px);opacity: 0;
}.buttons {width: 100%;position: absolute;bottom: 50px;margin-left: -50px;text-align: center;display: flex;justify-content: center;
}.buttons div {width: 120px;height: 50px;line-height: 50px;text-align: center;border-radius: 5px;margin: 0 25px;transition: .5s;cursor: pointer;user-select: none;font-size: 20px;color: #fff;background-color: rgba(0, 0, 0, 0.4);box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
}
const leftBtn = document.querySelector(".buttons .left")
const rightBtn = document.querySelector(".buttons .right")
const slide = document.querySelector("#slide")
let openClick = true // 节流处理 (保证动画执行过程,按钮不被重复点击)leftBtn.addEventListener("click", () => {if (openClick) {openClick = false // 触发点击后,禁用按钮const items = document.querySelectorAll(".item")slide.prepend(items[items.length - 1])setTimeout(() => openClick = true, 1000) // 1s 再开放按钮的点击}
})
rightBtn.addEventListener("click", () => {if (openClick) {openClick = falseconst items = document.querySelectorAll(".item")slide.appendChild(items[0])setTimeout(() => openClick = true, 1000)}
})

实现思路拆分

* {margin: 0;padding: 0;box-sizing: border-box;
}

这段代码是设置全局的CSS样式,包括设置元素的盒模型为border-box,即盒模型的宽度和高度包括了元素的边框和内边距,而不是只包括元素的内容。

.container {width: 100vw;height: 100vh;position: relative;overflow: hidden;
}

这段代码是设置容器的CSS样式,包括设置容器的宽度和高度为100vw和100vh,即视口的宽度和高度。同时,设置容器的定位为相对定位,即相对于其父元素进行定位。最后,设置容器的溢出属性为隐藏,即超出容器范围的元素不会被显示出来。

.item {width: 240px;height: 160px;position: absolute;top: 50%;left: 0;transform: translateY(-50%);border-radius: 10px;box-shadow: 0 30px 50px #505050;background-size: cover;background-position: center;transition: 1s;
}

这段代码是设置盒子的CSS样式,包括设置盒子的宽度和高度为240px和160px,即盒子的大小。同时,设置盒子的定位为绝对定位,即相对于其父元素进行定位。最后,设置盒子的边框半径为10px,即盒子的圆角。盒子的背景图片大小为cover,即覆盖整个盒子。背景图片的位置为居中对齐。最后,设置盒子的过渡效果为1秒,即过渡效果的时间为1秒。

.item:nth-child(1),
.item:nth-child(2) {left: 0;top: 0;width: 100%;height: 100%;transform: translateY(0);box-shadow: none;border-radius: 0;
}

这段代码是设置第一个和第二个盒子的CSS样式,包括将它们的位置设置为0,即它们覆盖在容器的最上层。同时,将它们的高度设置为100%,即它们覆盖在容器的整个高度。最后,将它们的变换属性设置为 translateY(0),即它们不会向下移动。同时,将它们的阴影和边框半径设置为0,即它们没有阴影和边框。

.item:nth-child(3) {left: 70%;
}

这段代码是设置第三个盒子的CSS样式,包括将它的位置设置为距离容器左侧70%的位置。

.item:nth-child(4) {left: calc(70% + 250px);
}

这段代码是设置第四个盒子的CSS样式,包括将它的位置设置为距离第三个盒子右侧250px的位置。

.item:nth-child(5) {left: calc(70% + 500px);
}

这段代码是设置第五个盒子的CSS样式,包括将它的位置设置为距离第三个盒子右侧500px的位置。

.item:nth-child(n+6) {left: calc(70% + 750px);opacity: 0;
}

这段代码是设置所有盒子的CSS样式,包括将它们的位置设置为距离第三个盒子右侧750px的位置。同时,将它们的不透明度设置为0,即它们不可见。

.buttons {width: 100%;position: absolute;bottom: 50px;margin-left: -50px;text-align: center;display: flex;justify-content: center;
}

这段代码是设置按钮的CSS样式,包括设置按钮的宽度为100%,即按钮的大小与容器相同。同时,将按钮的位置设置为距离容器底部50px的位置。最后,将按钮的对齐方式设置为居中对齐,即按钮在水平方向上居中对齐。

.buttons div {width: 120px;height: 50px;line-height: 50px;text-align: center;border-radius: 5px;margin: 0 25px;transition:.5s;cursor: pointer;user-select: none;font-size: 20px;color: #fff;background-color: rgba(0, 0, 0, 0.4);box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
}

这段代码是设置按钮的CSS样式,包括设置按钮的宽度为120px,高度为50px,即按钮的大小。同时,设置按钮的行高为50px,即按钮的高度。按钮的文本对齐方式为居中对齐,即文本在水平方向上居中对齐。按钮的边框半径为5px,即按钮的圆角。按钮的外边距为0 25px,即按钮在水平方向上左右两侧的距离为25px。按钮的过渡效果为0.5秒,即过渡效果的时间为0.5秒。按钮的光标属性为pointer,即鼠标悬停在按钮上时,鼠标的形状会变成手型。按钮的用户选择属性为none,即用户不能选中按钮中的文本。按钮的字体大小为20px,即按钮的文本大小。按钮的文本颜色为白色,即按钮的文本颜色。按钮的背景颜色为rgba(0, 0, 0, 0.4),即按钮的背景颜色为黑色,透明度为0.4。按钮的阴影属性为2px 2px 2px rgba(0, 0, 0, 0.2),即按钮的阴影为2px 2px 2px黑色,透明度为0.2。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】【SSE】【VUE】实现调用千帆大模型,实现打字效果

没有废话。只有演示、和源码地址 效果演示 源码地址 qianfan-sse-demo: 基于https://gitee.com/codinginn/chatgpg-sse-demo-springboot-vue改动

电动汽车充放电V2G模型(matlab代码)

目录 1 主要内容 1.1 模型背景 1.2 目标函数 1.3 约束条件 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消…

MySQL之谈谈MySQL里的日志

文章目录 前言一、SQL是如何做更新操作的二、MySQL中的redo log三、MySQL中的binlog四、聊聊两阶段提交总结 前言 上一章我们讲了一条SQL是如何做查询的&#xff0c;其中经历了许多步骤。这次来讲讲一条SQL是如何做更新操作的。 常有大佬说他可以把MySQL恢复到半个月内任意一秒…

openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围

文章目录 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围214.1 性能因素214.2 调优范围确定 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围 数据库性能调优通常发生在用户对业务的执行效率不满意&#xff0c;期望通过调优加快业务执行的情况下。正…

linux搭建jupyter

查看虚拟环境 conda info --envs进入虚拟环境 conda activate my_env pip install jupyter pip install ipykernel1. jupyter notebook启动 1.1 创建临时jupyter notebook任务 jupyter notebook --ip0.0.0.0 --no-browser --allow-root --notebook-dir/home/xxx1.2 jupyter…

[嵌入式AI从0开始到入土]5_炼丹炉的搭建(基于wsl2_Ubuntu22.04)

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

【Springcloud篇】学习笔记四(九章):Hystrix—服务降级、熔断、限流

第九章_Hystrix服务降级 1.Hystrix简介 1.1分布式系统面临的问题 服务雪崩 1.2Hystrix是什么 1.3Hystrix能干嘛 服务降级服务熔断接近实时的监控 1.4官网资料 官网资料&#xff1a;https://github.com/Netflix/Hystrix/wiki/How-To-Use Hystrix官宣&#xff0c;停更进维…

C#用正则表达式验证密码长度vs用Char.IsLetterOrDigit方法遍历字符数组验证密码长度

目录 一、使用的方法 1.正则表达式 2.Char.IsLetterOrDigit方法 二、源码 1.源代码 2.生成效果 一、使用的方法 1.正则表达式 在注册用户时&#xff0c;经常需要填写密码信息&#xff0c;为保证用户信息的安全性&#xff0c;密码一般情况下要求输入6位或6位以上。本…

如何写好论文——(15)如何写研究目标之实例讲解

写好研究目标一要有方向、二要有边界。 定边界的时候要有方法和结论。 下面的例子为目标的两种写法&#xff0c;第二种提供了更明确可以测量的目标。 下面的第二个例子更有方向性。第一个例子的本质是去验证一种假说&#xff0c;这种假说如果成立完全可以支撑第二种写法中的目…

如何在Windows系统使用Plex部署影音服务与公网访问本地资源【内网穿透】

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通…

【Spring】Spring 启示录

一、OCP 开闭原则 核⼼&#xff1a;在扩展系统功能时不需要修改原先写好的代码&#xff0c;就是符合OCP原则的&#xff0c;反之修改了原先写好的代码&#xff0c;则违背了OCP原则的 若在扩展系统功能时修改原先稳定运⾏程序&#xff0c;原先的所有程序都需要进⾏重新测试&…

户外没有电源和网络,但需要安装监控系统,怎么办?太阳能智能监控系统给你解决

近期有粉丝给小编求助&#xff1a;需要在没网没电的户外进行智能监控的安装&#xff0c;不知道如何解决。收到粉丝的问题&#xff0c;小编立刻联系了技术人员给出方案。针对野外、户外等场景只需使用太阳能供电模组4G摄像机视频监控EasyCVR平台智能分析网关V4的架构&#xff0c…