18-background-slider

 

 

 

 

 

 

 

html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"
      integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog=="
      crossorigin="anonymous"
    />
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="slider-container">
        <div
        class="slide active"
        style="
          background-image: url('https://images.unsplash.com/photo-1549880338-65ddcdfd017b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2100&q=80');
        "
      ></div>
      <div
        class="slide"
        style="
          background-image: url('https://images.unsplash.com/photo-1511593358241-7eea1f3c84e5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1934&q=80');
        "
      ></div>

      <div
        class="slide"
        style="
          background-image: url('https://images.unsplash.com/photo-1495467033336-2effd8753d51?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2100&q=80');
        "
      ></div>

      <div
        class="slide"
        style="
          background-image: url('https://images.unsplash.com/photo-1522735338363-cc7313be0ae0?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2689&q=80');
        "
      ></div>

      <div
        class="slide"
        style="
          background-image: url('https://images.unsplash.com/photo-1559087867-ce4c91325525?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2100&q=80');
        "
      ></div>

      <button class="arrow left-arrow" id="left">
            <i class="fas fa-arrow-left"></i>
      </button>

      <button class="arrow right-arrow" id="right"> 
            <i class="fas fa-arrow-right"></i>
      </button>
    
    </div>

    <script src="./script.js"></script>
</body>
</html>
复制代码

 

 

 

css

复制代码
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');

* {
  box-sizing: border-box;
}

body{
    font-family: 'Roboto',sans-serif;
    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-size: cover;
    background-position: center center;
    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 - 60px);
}
.right-arrow{
    right: calc(15vw - 65px);
}
复制代码

 

 

 

js

复制代码
const body=document.body
const slides =document.querySelectorAll('.slide')
const leftBtn = document.getElementById('left')
const rightBtn = document.getElementById('right')

let activeSlide = 0;
console.log(slides.length)
rightBtn.addEventListener('click',()=>{
    activeSlide++;
    
    if(activeSlide > slides.length-1){
        activeSlide =0;
    }

    setAcriveSlide()
    setBgToBody()


})


leftBtn.addEventListener('click',()=>{
    activeSlide--
    if(activeSlide<0){
        activeSlide = slides.length-1
    }
    setAcriveSlide()
    setBgToBody()
})
setBgToBody()

function setBgToBody(){
    body.style.backgroundImage = slides[activeSlide].style.backgroundImage
}


function setAcriveSlide(){
    slides.forEach((slide)=>slide.classList.remove('active'))
    slides[activeSlide].classList.add('active');
}
复制代码

 

posted @   漫漫长路</>  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示