轮播图js实现

 

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>华为</title>
    <link rel="stylesheet" href="index.css">
    <script src="index.js"></script>
</head>
<body>
    <div class="main">
        <!-- 焦点图 -->
        <div class="banner" id="banner">
            <a href="#">
                <div class="banner-slide slide1 " id="slide1"></div>
            </a>
            <a href="#">
                <div class="banner-slide slide2" id="slide2"></div>
            </a>
            <a href="#">
                <div class="banner-slide slide3" id="slide3"></div>
            </a>
        </div>

        <!-- 下一页按钮 -->
        <div class="button prev" id="button-prev"><img src="./img/jiantouyou.png" alt="" class="button-img"></div>
        <div class="button next" id="button-next"><img src="./img/jiantouyou.png" alt="" class="button-img"></div>

        <!-- 下标小点 -->
        <div class="button2" id="button2">
            <span></span>
            <span></span>
            <span></span>
        </div>

        <!-- 菜单 -->
        <ul class="meua">
            <li>
                <div class="meua-head"><a href="">手机</a></div>
                <a href="">荣耀</a>
                <a href="">HUAWEI P系列</a>
                <ul class="meua-second">
                    <li><a href="#"><img src="img/手机1.png" alt=""><span>荣耀</span></a></li>
                    <li><a href="#"><img src="img/手机1.png" alt=""><span>荣耀</span></a></li>
                    <li><a href="#"><img src="img/手机1.png" alt=""><span>荣耀</span></a></li>
               </ul>
            </li>
            <li>
                <div class="meua-head"><a href="">笔记本 & 平板</a></div>
                <a href="">平板电脑</a>
                <a href="">笔记本电脑</a>
            </li>
            <li>
                <div class="meua-head"><a href="">智能穿戴</a></div>
                <a href="">手环</a>
                <a href="">手表</a>
                <a href="">VR</a>
            </li>
            <li>
                <div class="meua-head"><a href="">智能家居</a></div>
                <a href="">路由器</a>
                <a href="">电视盒子</a>
                <a href="">照明</a>
            </li>
            <li>
                <div class="meua-head"><a href="">热销配件</a></div>
                <a href="">保护壳</a>
                <a href="">移动电源</a>
                <a href="">耳机</a>
            </li>
            <li>
                <div class="meua-head"><a href="">增值服务 & 其他</a></div>
                <a href="">服务器</a>
                <a href="">AI计算平台</a>
            </li>
        </ul>   

    </div>
</body>
</html>

 

css代码

*{
    margin: 0;
    padding: 0;

}
body{
    font-family: "微软雅黑";
    width: 1349px;

}
ul{
    list-style: none;
}
a{
    text-decoration:none;
    color: #a6a6a6;
    font-size: 14px;
}

.main{
    width: 100%;
    height: 550px;
    margin: 0px auto;
    position: relative;
}
/* 焦点图 */
.banner{
    width: 100%;
    height: 550px;
    overflow: hidden;
}
.banner-slide{
    width: 100%;
    height: 550px;
    background-repeat: no-repeat;
    background-position: center;
    display: none;
    
}

.slide1{
    background-image: url('./img/1.jpg');
    display: block;
}
.slide2{
    background-image: url('./img/2.jpg');
}
.slide3{
    background-image: url('./img/3.jpg');
}

/* 下一页按钮 */
.button{
    position: absolute;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background-color: rgba(2, 14, 10, 0.1);
    top: 275px;
    margin-top: -30px;
    right: 1003px;
    text-align: center;
    line-height: 65px;
}
.prev{
    transform:rotate(180deg);
    margin-bottom: -30px;

}
.next{
    right: 75px;
}
.button-img{
    width: 20px;
    height: 20px;
}
.button:hover{
    background-color: rgba(2, 14, 10, 0.5);
}

/* 下标图 */
.button2{
    position: absolute;
    bottom: 70px;
    right: 80px;

}
.button2 span{
    display: inline-block;
    margin-left: 5px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: 1px solid #fff;

}
.button2 :nth-child(1){
    background-color: #fff;
}

/* 菜单一级 */
.meua{
    position: absolute;
    top: 18px;
    left: 77px;
    background-color:rgb(255,255,255,0.95);
    border-radius: 10px;
    width: 197px;
    height: 443px;
}
.meua li{
    margin:0 20px;
    height: 48px;
    padding: 13px 0 12px 0;
    border-bottom: 1px solid rgba(0,0,0,0.06);
}
.meua > li:nth-child(6){
    border-bottom: 0px;

}
.meua-head{
    margin-bottom: 2px;
}
.meua-head >a{
    font-size: 16px ;
    color: #848484;
}
.meua a{
    display: inline-block;
    padding-right: 5px;
}

/* 二级菜单 */
.meua-second{
    position: absolute;
    width: 200px;
    height: 443px;
    background-color: #fff;
    border-radius: 0 10px 10px 0;
    left:197px;
    top: 0px;
    display: none;
    
    
}
.meua-second li{
    height: 70px;
    width: 160px;
    margin: 20px;

    
}
.meua-second img{
    width: 56px;
    height: 56px;
    float: left;

}
/* 点击变化 */
.meua >li:nth-child(1):hover  .meua-second{
    display: block;

}

js代码

window.onload =function(){

var index = 0,  //当前图片的索引
    button_next = byId("button-next"),
    button_prev = byId("button-prev"),
    pics = byId("banner").getElementsByTagName("div"),//这里是个数组
    size = pics.length,
    spans = byId("button2").getElementsByTagName("span");
    

//封装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; 
    }
}
//图片变化
var qie = function(index){
    for(var i = 0;i<size;i++){
        pics[i].style.display = "none";
        spans[i].style.backgroundColor = 'transparent' ;
    }
    pics[index].style.display = 'block';
    spans[index].style.backgroundColor = '#fff';
}
//点击下一张显示下一张图片,以及下标小圆点的变化
addHandler(button_next,"click",function(){
    index++;
    if(index>=size) index = 0; 
    qie(index);

});

//点击prev按钮显示上一张图片,以及下标小圆点的变化
addHandler(button_prev,"click",function(){
    index--;
    if(index<0)index = size-1;
    qie(index);
});

//鼠标滑动到小圆点图片就会变化

for(var j = 0;j<size;j++){
    spans[j].setAttribute("id", j);
    addHandler(spans[j],"mouseover",function(){
        switch (this.id) {
            case "0":
                qie(0);
                break;
            case "1":
                qie(1);
                break;
            case "2":
                qie(2);
                break;
        }
    })
}

}  

----------------------------------------------------------------------------------------------------------------

总结:

这可以算是第一个js代码练习了。看了很多遍知识点,不如动手敲几遍代码。

没有教学视频的帮助下我可能想不到要怎么利用dom那些操作

我是先写下一页功能按钮,然后再写上一页功能按钮,再写下标点随着图片变化的功能,最后再写鼠标移到下标小圆点就会发生图片变化的功能。

再写按钮跳转背景图的思路大概是:

因为我的背景图是直接放在div的ccs background-image中,所以每按一下个的案件,下一个的display就要显示出来,其他的设置为不显示。

问题:怎么去设计每按一下按钮,我的会按顺序显示下一个呢?

A:先设置一个图片索引(index)变量,每按一次next按键,我的index就加一。如果我的索引大于图片数就变为第一张图的索引值。

Q:怎么知道我有多少张图片?

A:由于图片都是在div中的,所以可以获取div元素的来知道我们的图片数。获取getElementByTagName。.length来知道有多少图。

Q:然后呢?

A:现在可以操控我们每一个图片了。由于我们已经获取到我们的div了。

先把所有的图片都显示为none,然后当按下一个是,就可以通过div数组【index】.display去控制block

相同的方法去写上一页和点的变化。

(中间有练到这些属性的应用,函数的封装,以及跨浏览器的封装函数,虽然现在应该没什么人会用ie8以下的。学到最重要的是一个设计思路的流程,这是最难想到的。)

(哪些东西是变化的,这个功能会通过什么在变化。)

第一个第二个功能算是完成,接着就开始第三个功能:鼠标移到小圆点上,小圆点就会变化图片。

A:同样的方法为每个小圆点添加事件。这里就不说了。遇到最大的问题就是作用域的问题和this的运用。一个是问题的关键。解决办法就是给每一个小圆点添加一个id,然后在事件function中去判断我【当前点(this)的运用】的这个小圆点的id就是多少,然后就是我的图片的索引值。

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值