原生JS制作自动+手动轮播图,附带二级分类菜单

原生JS制作自动+手动轮播图,附带二级分类菜单

包含以下功能:

1、鼠标移开自动轮播

2、鼠标移入停止自动轮播

3、点击左右按钮可手动切换图片

4、点击索引小圆点可手动切换图片

5、鼠标移入一级菜单展开二级菜单

 

 

演示图

 

 

HMTL部分




    
    Title
    





 

 

CSS部分(style.css)

/*公共样式*/
* {
    margin: 0;
    padding: 0;
}
body {
    font-family: "微软雅黑",Arial,sans-serif;
    color: #14191e;
}
@font-face {
    font-family: "iconfont";
    src:url("../img/font/iconfont.eot");  /*字体文件请自行下载*/
    src:url("../img/font/iconfont.eot") format('embedded-opentype'),  /*字体文件请自行下载*/
    url("../img/font/iconfont.woff") format('woff'),  /*字体文件请自行下载*/
    url("../img/font/iconfont.ttf") format('truetype'),  /*字体文件请自行下载*/
    url("../img/font/iconfont.svg#iconfont") format('svg');  /*字体文件请自行下载*/
}
a {
    text-decoration: none;
}
a:link,a:visited {
    color: #5e5e5e;
}
.bold {
    font-weight: bold;
}
.mr10 {
    margin-right: 10px;
}
.ml10 {
    margin-left: 10px;
}
.hide {
    display: none;
}

/*总容器*/
.main {
    width: 1130px;
    height: 380px;
    margin: 30px auto;
    overflow: hidden;
    position: relative;
    border-radius: 10px;
}


/*轮播图*/
.banner {
    width: 1130px;
    height: 380px;
    overflow: hidden;
}
.banner-slide {
    width: 1130px;
    height: 380px;
    float: left;
    background-repeat: no-repeat;
    display: none;
}
.slide-active {
    display: block;
}
.slide1 {
    background: url("../img/bg1.jpg");   /*轮播图请自行替换*/
}
.slide2 {
    background: url("../img/bg2.jpg");  /*轮播图请自行替换*/
}
.slide3 {
    background: url("../img/bg3.jpg");  /*轮播图请自行替换*/
}
.button {
    position: absolute;
    width: 40px;
    height: 80px;
    left: 244px;
    background: url("../img/arrow.png") center center no-repeat;    /*左右按钮背景图,请自行替换*/
    transform: rotate(180deg);
    top: 50%;
    margin-top: -40px;
}
.button:hover {
    background-color: #333;
    opacity: 0.8;
    filter: alpha(opacity=80);   /*兼容IE浏览器*/
}
.next {
    left: auto;
    right: 0;
    transform: rotate(0deg);
}
.dots {
    position: absolute;
    right: 24px;
    bottom: 24px;
    line-height: 12px;
}
.dots span {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: rgba(7,17,27,.4);
    margin-left: 8px;
    cursor: pointer;
}
.dots span.active {
    background: #fff;
}


/*菜单栏*/
.menu-box {
    position: absolute;
    left: 0;
    top: 0;
    width: 244px;
    height: 460px;
    background: rgba(7,17,27,.5);
    z-index: 1;
}
.menu-content {
    position: absolute;
    left: 0;
    top: 0;
    width: 244px;
    height: 460px;
    z-index: 2;
}
.menu-item {
    height: 64px;
    line-height: 64px;
    cursor: pointer;
    padding: 0 24px ;
}
.menu-item:hover {
    background: rgba(0,0,0,.2);
    filter: alpha(opacity=0.2);
}
.menu-item a {
    display: block;
    color: #fff;
    font-size: 16px;
    border-bottom: 1px solid rgba(255,255,255,.2);
    height: 63px;
    padding: 0 8px;
    position: relative;
}
.menu-item:last-child a {
    border-bottom: none;
}

.menu-item i {
    position: absolute;
    right: 32px;
    top: 2px;
    color: rgba(255,255,255,.5);
    font-style: normal;
    font-weight: normal;
    font-family: "iconfont";
    font-size: 24px;
}

.sub-menu {
    width: 730px;
    height: 458px;
    position: absolute;
    left: 244px;
    top: 0;
    background: #fff;
    z-index: 500;
    border: 1px solid #d9dde1;
    box-shadow: 0 4px 8px 0 rgba(0,0,0,.2);
}
.inner-box {
    width: 100%;
    height: 100%;
    background: url("../img/fe.png") no-repeat;  /*二级菜单背景,请自行替换*/
    display: none;
}
.sub-inner-box {
    width: 652px;
    margin-left: 40px;
    overflow: hidden;
}
.title {
    font-size: 16px;
    color: #f01414;
    line-height: 16px;
    font-weight: bold;
    margin: 28px 0 30px 0;
}
.sub-row {
    margin-bottom: 25px;
}

 

 

JS部分(index.js)

//声明全局变量
var index = 0,  //当前显示图片的索引值,默认为0
    timer = null,  //定时器
    main = byId("main"),
    prev = byId("prev"),   //上一张
    next = byId("next"),   //下一张
    pics = byId("banner").getElementsByTagName("div"),
    dots = byId("dots").getElementsByTagName("span"),
    size = pics.length,
    menuContent = byId("menu-content"),
    menuItems = menuContent.getElementsByClassName("menu-item"),
    subMenu = byId("sub-menu"),
    innerBox = subMenu.getElementsByClassName("inner-box"),
    banner = byId("banner");


// 封装getElementById()
function  byId(id) {
    return typeof(id) ==="string" ? document.getElementById(id):id;
}


//封装通用事件绑定函数,兼容性写法
function addHandler(element,type,handler) {
    if(element.addEventListener) {
        element.addEventListener(type,handler,false);
    } else if(element.attachEvent) {
        element.attachEvent("on" + type, handler);
    } else {
        element["on" + type] = handler
    }
}


//封装改变图片函数
function changeImg(){
    //遍历所有图片,将图片隐藏,将圆点上的类清除
    for (var i=0;i=size){
            index=0
        }
        changeImg();
    },2000)
}


//封装清除定时器函数,停止自动轮播
function stopAutoPlay(){
    if (timer){
        clearInterval(timer)
    }
}


//点击下一张按钮显示下一张图片
addHandler(next,"click",function () {
    index++;
    if (index>=size) {
        index=0;
    }
    changeImg();
});


//点击上一张按钮显示上一张图片
addHandler(prev,"click",function () {
    index--;
    if (index<0) {
        index=size-1;
    }
    changeImg();
});


//点击圆点索引切换图片
for (var d=0;d

 

你可能感兴趣的:(JS)