原生js写的最简单的轮播

原生js写的最简单的轮播

文章目录

  • 原生js写的最简单的轮播
    • 概述
    • 静态效果图
    • 动态效果图(待添加)
    • 在线预览
    • HTML 代码
    • js代码
    • Less代码
    • css代码
    • 资源文件

概述

核心采用原生js的面向对象的方式编写;
样式使用的less生成的css。
自带自动轮播,轮播到最后时,再回到最前面,不带循环。

静态效果图

原生js写的最简单的轮播_第1张图片

动态效果图(待添加)

在线预览

在线预览demo

HTML 代码


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>最简单的轮播title>
    <link rel="stylesheet" href="css/css.css">
    <script crossorigin="anonymous" integrity="sha384-6ePHh72Rl3hKio4HiJ841psfsRJveeS+aLoaEf3BWfS+gTF0XdAqku2ka8VddikM" src="https://lib.baomitu.com/jquery/1.11.3/jquery.min.js">script>
    <script src="js/js.js">script>
head>
<body>
    <div class="slider">
        <ul class="slider__list">
            <li class="slider__list__item">
                <div>
                    <p>1p>
                    <p>haleyp>
                div>
            li>
            <li class="slider__list__item">
                <div>
                    <p>2p>
                    <p>haleyp>
                div>
            li>
            <li class="slider__list__item">
                <div>
                    <p>3p>
                    <p>haleyp>
                div>
            li>
            <li class="slider__list__item">
                <div>
                    <p>4p>
                    <p>haleyp>
                div>
            li>
            <li class="slider__list__item">
                <div>
                    <p>5p>
                    <p>haleyp>
                div>
            li>
            <li class="slider__list__item">
                <div>
                    <p>6p>
                    <p>haleyp>
                div>
            li>
        ul>
        <div class="slider__btns">
            <span class="slider__btns__prev">span>
            <span class="slider__btns__next">span>
        div>
    div>
body>
html>

js代码

$(()=>{
    let slider={
        el:'.slider',
        numSlide:0,//slide个数
        width:0,// 容器总宽度
        wItem:300,// 每个slide的宽度
        left:0,//list的左侧位置
        index:0,//当前index
        speed:1000,// 速度
        init(){
            let $list=$(this.el).find('.slider__list');
            this.numSlide=$list.children().size()
            this.width=this.numSlide*this.wItem;
            $list.css({width:this.width})
            this.setLeft()
        },
        //设置左侧位置
        setLeft(index){
            let i=index||this.index
            this.left=-i*this.wItem
            $('.slider__list').css({left:this.left})
        },
        setBtns(){
            if(slider.index>0){
                $('.slider__btns__prev').removeClass('disabled')
            }else{
                $('.slider__btns__prev').addClass('disabled')
            }
            if(slider.index<slider.numSlide-1){
                $('.slider__btns__next').removeClass('disabled')
            }else{
                $('.slider__btns__next').addClass('disabled')
            }
        },
        // 向左移动
        moveLeft(){
            if(this.index<this.numSlide-1){
                this.index++
                this.setLeft()
            }
        },
        // 向右移动
        moveRight(){
            if(this.index>0){
                this.index--
                this.setLeft()
            }
        }
    }
    slider.init();
    $('.slider__btns__next').on('click',function(){
        slider.moveLeft()
        slider.setBtns()
    })
    $('.slider__btns__prev').on('click',function(){
        slider.moveRight()
        slider.setBtns()
    })
    // // 自动切换
    setInterval(()=>{
        slider.setLeft(slider.index<slider.numSlide?slider.index++:slider.index=0)
    },slider.speed)
})

Less代码

// 轮播核心代码
.border(@c: #f00) {
    border: 1px solid @c;
}
.bgc(@b: #f3f4f5) {
    background-color: @b;
}
.slider {
    *,&{
        box-sizing: border-box;
    }
    .border(#f1f2f3);
    @w: 300px;
    @h: 200px;
    width: @w;;
    overflow: hidden;
    &__list {
        margin:0;
        padding:0;
        width:@w;
        position: relative;
        transition: left 0.3s ease-in-out;
        display: flex;
        &__item {
            list-style: none;
            width: @w;
            height: @h;
            font-size: 30px;
            text-align: center;
        }
    }

    &__btns {
        text-align: center;
        padding-top:4px;
        &__prev,
        &__next {
            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAPCAYAAAAoAdW+AAAAlUlEQVQYlXXRPWqCYRAE4Oe1EazS2VqIhcQmiAfQwguInXYSvIDnSZkuENBCG282Fn4g348LWywzw87OCt9JdHUPX0o56aokwk84NpWvgd+wfQcOwl9Yt8EnYRiuYdEGn4RRteKzJGm7LOWAZZdyViknTWAc7mHadDsMtzCvu+UjXMKqfif9cA6bdkL8h11X8ML+3VcefRfggZp7/V8AAAAASUVORK5CYII=) center center / 7px 15px no-repeat;
            width: 14px;
            height: 30px;
            display: inline-block;
            cursor: pointer;
            .bgc(#f9f6f3);
            &.disabled{
                background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAPCAYAAAAoAdW+AAAAfUlEQVQYlXXPsQqBYRSA4ScGq7Ip/yClWGyS7R+UxcRiMrowpWwGGZALchOSb/q+87/jeTp1Dhw01EKNY8z/LtgX01QHV6wLSfVww7KQ1BAvTApJTXHGqB3g5wfYRpsLnDDIYYY3quiYJ8Y59PHAPIduglV0wB2bpr924RRfm4QN/eQ8+0wAAAAASUVORK5CYII=);
                opacity: 0.3;
            }
        }

        &__prev {
            transform: rotate(180deg);
        }
        &__next {}
    }
}

css代码

.slider {
  border: 1px solid #f1f2f3;
  width: 300px;
  overflow: hidden;
}
.slider *,
.slider {
  box-sizing: border-box;
}
.slider__list {
  margin: 0;
  padding: 0;
  width: 300px;
  position: relative;
  transition: left 0.3s ease-in-out;
  display: flex;
}
.slider__list__item {
  list-style: none;
  width: 300px;
  height: 200px;
  font-size: 30px;
  text-align: center;
}
.slider__btns {
  text-align: center;
  padding-top: 4px;
}
.slider__btns__prev,
.slider__btns__next {
  background: url(../img/arrowSmall_canClick.png) center center / 7px 15px no-repeat;
  width: 14px;
  height: 30px;
  display: inline-block;
  cursor: pointer;
  background-color: #f9f6f3;
}
.slider__btns__prev.disabled,
.slider__btns__next.disabled {
  background-image: url(../img/arrowSmall_gray.png);
  opacity: 0.3;
}
.slider__btns__prev {
  transform: rotate(180deg);
}

资源文件

原生js写的最简单的轮播

你可能感兴趣的:(#,前端各种插件,js)