乐于分享
好东西不私藏

Js带小图的轮播大图效果!!附源码!!

Js带小图的轮播大图效果!!附源码!!

  效果展示  

  完整源码  

HTML
<!DOCTYPE html><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=device-width, initial-scale=1.0">  <title>展示轮播图</title>  <linkrel="stylesheet"href="index.css"></head><body>  <!-- 容器 -->  <divclass="container">    <!-- 图片容器 -->    <divclass="slide">      <divclass="item item1">        <divclass="content">          <divclass="name">Lorem Ipsum</div>          <divclass="des">Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>          <button>See more</button>        </div>      </div>      <divclass="item item2">        <divclass="content">          <divclass="name">Lorem Ipsum</div>          <divclass="des">Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>          <button>See more</button>        </div>      </div>      <divclass="item item3">        <divclass="content">          <divclass="name">Lorem Ipsum</div>          <divclass="des">Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>          <button>See more</button>        </div>      </div>      <divclass="item item4">        <divclass="content">          <divclass="name">Lorem Ipsum</div>          <divclass="des">Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>          <button>See more</button>        </div>      </div>      <divclass="item item5">        <divclass="content">          <divclass="name">Lorem Ipsum</div>          <divclass="des">Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>          <button>See more</button>        </div>      </div>      <divclass="item item6">        <divclass="content">          <divclass="name">Lorem Ipsum</div>          <divclass="des">Lorem ipsum dolor sit amet consectetur adipisicing elit.</div>          <button>See more</button>        </div>      </div>    </div>    <!-- 按钮 -->    <divclass="btns">      <divclass="s-btn left">&lt;</div>      <divclass="s-btn right">&gt;</div>    </div>  </div>  <scriptsrc="./index.js"></script></body></html>
CSS
* {    margin0;    padding0;    box-sizing: border-box;}:root {    background-color#150c1a;    overflow: hidden;}.container {    width1100px;    height700px;    position: absolute;    top50%;    left50%;    transformtranslate(-50%, -50%);    padding50px;    filterdrop-shadow(0 0 10px #dbdbdb);}.slide {    /* 设置内容最大宽度 */    width: max-content;    display: flex;}.item {    background-repeat: no-repeat;    width200px;    height300px;    background-position: center;    background-size: cover;    position: absolute;    top50%;    /* 位移过渡导致动画卡顿 */    /* transform: translateY(-50%); */    /* 更换为 */    margin-top: -150px;    border-radius20px;    transition0.5s;}.item:nth-child(1),.item:nth-child(2) {    top0;    left0;    width100%;    height100%;    margin-top0;    /* 覆盖上述y轴平移 */    /* transform: translateY(0); */    border-radius4px;    box-shadow: none;}.item:nth-child(3) {    left50%;}.item:nth-child(4) {    leftcalc(50% + 220px);}.item:nth-child(5) {    leftcalc(50% + 440px);}/* n为自然数 初值为0 依次+1递增 */.item:nth-child(n + 6) {    opacity0;    leftcalc(50% + 660px);}.item .content {    position: absolute;    width300px;    left100px;    top50%;    transformtranslateY(-50%);    color#eee;    display: none;}.item:nth-child(2.content {    display: block;}.item .name {    font-size40px;    font-weight900;    opacity0;    /* 动画名 执行时间 动画曲线 执行1次 保持最后执行的状态 */    animation: show 1s ease-in-out 1 forwards;}.item .des {    margin20px 0;    opacity0;    /* 动画名 执行时间 动画曲线 延时 执行1次 保持最后执行的状态 */    animation: show 1s ease-in-out 0.3s 1 forwards;}.item button {    padding10px 20px;    border: none;    opacity0;    animation: show 1s ease-in-out 0.6s 1 forwards;}.btns {    width100%;    position: absolute;    bottom50px;    margin-left: -50px;    display: flex;    justify-content: center;}.s-btn {    width50px;    height50px;    line-height50px;    text-align: center;    color: gray;    background-color#fff;    font-size25px;    border-radius50%;    margin0 25px;    cursor: pointer;    font-weight900;    border1px solid #555;    transition0.5s;}.s-btn:hover {    background-color#ccc;}.item1 {    background-imageurl('./images/1.jpg');}.item2 {    background-imageurl('./images/2.jpg');}.item3 {    background-imageurl('./images/3.jpg');}.item4 {    background-imageurl('./images/4.jpg');}.item5 {    background-imageurl('./images/5.jpg');}.item6 {    background-imageurl('./images/6.jpg');}@keyframes show {    from {        opacity0;        transformtranslateY(100px);        filterblur(10px);    }    to {        opacity1;        transformtranslateY(0);        filterblur(0);    }}
JS
// 获取domconst left = document.querySelector('.left')const right = document.querySelector('.right')const slide = document.querySelector('.slide')right.addEventListener('click'function () {    // 每次更改后需要重新获取图片数组    const items = document.querySelectorAll('.item')    // 将第一位dom元素放置最后    slide.appendChild(items[0])})left.addEventListener('click'function () {    // 每次更改后需要重新获取图片数组    const items = document.querySelectorAll('.item')    // 将最后一位元素放置最前    slide.prepend(items[items.length - 1])})
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Js带小图的轮播大图效果!!附源码!!

评论 抢沙发

3 + 1 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮