50天50个前端小项目(纯html+css+js)第十八天(背景轮播图)
创始人
2024-04-03 00:18:59
0

今天要做的是一个轮播图,不过是属于全屏类型的轮播图,先来看看效果:
在这里插入图片描述
在这里插入图片描述
点击左右按钮能切换背景,达到轮播图效果

来看代码实现部分,首先是html:


Background Slider

这里面没啥,就是几张图片,以及左右两个按钮的布局。

再来看css:
这里面的重点是蒙层,以及图片在默认的时候不显示,而在到它的时候就赋上active值让其显示。

* {box-sizing: border-box;
}body {display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;overflow: hidden;margin: 0;background-position: center center;background-size: cover;transition: 0.4s;
}/* 添加一个蒙层 */
body::before {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100vh;background-color: rgba(0, 0, 0, 0.7);/* 防止覆盖住按钮 */z-index: -1;
}/* 小的滑框 */
.slider-container {box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);height: 70vh;width: 70vw;position: relative;/* 溢出内容隐藏 */overflow: hidden;
}/* 默认的时候背景图片 */
.slide {opacity: 0;height: 100vh;width: 100vw;background-position: center center;background-size: cover;position: absolute;top: -15vh;left: -15vw;transition: 0.4s ease;z-index: 1;
}.slide.active {opacity: 1;
}/* 按钮 */
.arrow {position: fixed;background-color: transparent; color: #fff;padding: 20px;font-size: 30px;border: 2px solid orange;top: 50%;transform: translateY(-50%);cursor: pointer;
}/* 去掉轮廓 */
.arrow:focus {outline: 0;
}/* 左右按钮的位置 */
.left-arrow {left: calc(15vw - 65px);
}.right-arrow {right: calc(15vw - 65px);
}

再来看JavaScript部分:

const body = document.body
const slides = document.querySelectorAll('.slide')
const leftBtn = document.getElementById('left')
const rightBtn = document.getElementById('right')// 一开始默认下标为0,即显示第一张
let activeSlide = 0// 左边的滑块,下标++,即下一张图片
rightBtn.addEventListener('click', () => {activeSlide++//   最后一张再往后就直接到第一张if (activeSlide > slides.length - 1) {activeSlide = 0}setBgToBody()setActiveSlide()
})// 右边的滑块,下标--,即上一张图片
leftBtn.addEventListener('click', () => {activeSlide--//   到第一张之后再上一张就到最后一张if (activeSlide < 0) {activeSlide = slides.length - 1}setBgToBody()setActiveSlide()
})setBgToBody()// 改变背景图片
function setBgToBody() {body.style.backgroundImage = slides[activeSlide].style.backgroundImage
}// 到哪个图片的下标后就给它加上active,就能让图片opacity为1显示
/* 当前opacity为1显示之后其他的就为0了 */
function setActiveSlide() {slides.forEach((slide) => slide.classList.remove('active'))slides[activeSlide].classList.add('active')
}

注释写的比较清楚,大家如果有不懂的直接评论区问就行,这些分开来看还是很基础的。

今天的小demo就到这里了,大家加油!

项目gitee地址

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...