最简单 最详细的原生js写轮播图

最简单最详细的原生js写轮播图

该轮播图实现了自动轮播,图片切换,鼠标移入移出事件,布局简单,容易上手。希望能帮到大家。效果图如下:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

布局扩展

里面用了几种方式实现了div的垂直居中,可见样式代码注释。

HTML

@HTML页面布局
 <!-- 介绍团队  -->
    <div id="introduce_page" class="page">
      <div id="banner"><!-- 轮播 -->
        <div id="pic"><!-- 轮播图片布局 -->
          <img src="images/1.jpg" id="img">
          <a href="javascript:;" id="prve"><</a><!-- 左边切换按钮 -->
          <a href="javascript:;" id="next">></a><!-- 右边边切换按钮 -->
          <span id="span">数量正在加载中......</span><!--图片数量 -->
          <p id="p">图片正在加载中.......</p><!--图片说明 -->
          <ul id="ul"></ul><!-- 轮播小圆点 -->
        </div>
        <div id="word">轮播图片文字介绍正在加载中....... </div><!--介绍文字说明-->
      </div>
    </div> 

CSS

@css样式布局
 #introduce_page{  
    background:rgb(10, 10, 10);  
    border: solid 1px rgba(0,0,0,0);
}   

#banner{
    width: 50%;
    height: 50%;
    border: solid 2px rgba(238,238,238,0.13);
    vertical-align: middle;
    /* 垂直居中banner */
    position: relative;
    left: 50%; /* 定位父级的50% */
    top: 50%;
    transform: translate(-50%,-50%); /*自己的50% */
    color: aliceblue;
}

#pic{
    width: 70%;
    height: 100%;
    float: left;
    border: solid 1px rgba(238,238,238,0.13);
    position: relative;
}

#word{
    width: 20%;
    height: 50%;
    float: right;
    border: solid 1px rgba(238,238,238,0.13);
    margin: auto;  
    /* 垂直居中靠右文字介绍 */
    position: absolute;  
    top: 0;bottom: 0; right: 0; 

}

#prve{
    /* 垂直居中靠左切换按钮*/
    position: absolute;
    top:0;
    left: 0;
    bottom: 0;
    margin: auto;
    text-align: center;
}

#next{
      /* 垂直居中靠右切换按钮 */
    position: absolute;
    top:0;
    right: 0;
    bottom: 0;
    margin: auto;
    text-align: center;
}

a{
    width: 40px;
    height: 40px;    
    text-decoration: none;
    font-size: 30px;
    background: #000000;
    color: #ffffff;
    filter: alpha(opacity 40);
    opacity: 0.4;
}

a:hover{
    filter: alpha(opacity 90);
    opacity: 0.9;
}

img{
    height: 100%;
    width: 100%;
}

#p,#span{
    width: 100%;
    height: 30px;
    filter:alpha(opacity 40);
    opacity: 0.4;
    background-color: black;
    color: #ffffff;
    text-align: center;
    line-height: 30px;
    border: solid 1px rgba(0,0,0,0);
}

#span{
    position: absolute;
    top:0;
}
#p{
    position: absolute;
    left: 0;right: 0;
    bottom: 0;margin: auto;
} 


#ul{
    margin: 0;
    padding: 0;
    width:14%;
    height: 30%;
    text-align: center;
    border: solid 1px rgba(0,0,0,0);
    position: absolute;
    right: 0;left: 0;bottom: 30px;
    margin: auto;
    height: 20px;
}

#ul li {
    width: 13px;
    height: 13px;
    list-style: none;
    border-radius: 100%;
    float: left;
    margin:0 2px;
    border: 1px #ccc solid;

}

.on{
    background-color: #ffffff;
}

JavaScript

@JavaScript代码
 //获取元素
var oBanner=document.getElementById('banner');
var oPic=document.getElementById('pic');
var oImg=document.getElementById('img');
var oPrve=document.getElementById('prve');
var oNext=document.getElementById('next');
var oSpan=document.getElementById('span');
var oP=document.getElementById('p');
var oUl=document.getElementById('ul');
var aLi=oUl.getElementsByTagName('li');
var oText=document.getElementById('word');

//数组存放在图片的地址,数量(模拟数据)
var arrUrl=['images/1.jpg','images/2.jpg','images/3.jpg','images/4.jpg'];
var arrTitle=['图片1','图片二','图片三','图片四'];
var arrText=['图片1介绍文字片段','图片2介绍文字片段','图片3介绍文字片段','图片4介绍文字片段'];
var num=0;

//往ul里面动态添加li
for(var i=0;i<arrUrl.length;i++){
    oUl.innerHTML+='<li></li>';
}

console.log(oUl);

//点击图片切换
function fnTab(){
    oImg.src=arrUrl[num];//改图片的src
    oSpan.innerHTML=1+num+'/'+arrUrl.length;//图片数量字符串拼接  '1/4' 的形式.
    oP.innerHTML=arrTitle[num];//图片标题
    oText.innerHTML=arrText[num];//图片介绍文字
    for(var i=0;i<aLi.length;i++)//切换小圆点样式
    {
        aLi[i].className='';
    }
    aLi[num].className='on';
}
fnTab();

//点击左边
oPrve.onclick=function(){
    num--;
    if(num==-1)
    {
        num=arrUrl.length-1;
    }
    fnTab();
}

//点击右边
oNext.onclick=function(){
    num++;
    if(num==arrUrl.length)
    {
        num=0
    }
    fnTab();
}

//点击小圆点
for(var i=0;i<aLi.length;i++){
    aLi[i].index=i;//自定义属性,索引值
    aLi[i].onclick=function(){
        num=this.index;
        fnTab();
    }

}

//定时器自动轮播
var timer=null;
function autoPlay(){
    timer=setInterval(function(){
        num++;
        num%=arrUrl.length;
        fnTab();
    },1000);
}

// autoPlay();
setTimeout(autoPlay,2000);

//鼠标移入清除定时器
oBanner.onmouseover=function(){
    clearInterval(timer);
}

//鼠标移出
oBanner.onmouseout=autoPlay;
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以提供一些指导,但这取决于你有多少 JavaScript 经验。首先,你需要准备一组图片,然后为每张图片创建一个<img>元素。接下来,你需要创建一个 JavaScript 函数来控制图片的显示和隐藏,以及设置一个定时器来自动触发图片切换动作。最后,你可以添加一些按钮来控制轮播图的播放和暂停。 ### 回答2: 轮播图是网页中常见的一种展示多张图片或者内容的效果,下面是使用原生JS一个简单轮播图的示例: HTML结构: ```html <div class="slider"> <ul class="slider-list"> <li><img src="image1.jpg" alt="image1"></li> <li><img src="image2.jpg" alt="image2"></li> <li><img src="image3.jpg" alt="image3"></li> </ul> <button class="prev-btn">上一页</button> <button class="next-btn">下一页</button> </div> ``` CSS样式: ```css .slider { position: relative; width: 400px; height: 300px; overflow: hidden; } .slider-list { list-style: none; margin: 0; padding: 0; width: 100%; height: 100%; display: flex; transition: all 0.5s ease-in-out; } .slider-list li { flex: 0 0 100%; } .prev-btn, .next-btn { position: absolute; top: 50%; transform: translateY(-50%); } .prev-btn { left: 10px; } .next-btn { right: 10px; } ``` JavaScript代码: ```javascript window.addEventListener("load", function() { var sliderList = document.querySelector(".slider-list"); var prevBtn = document.querySelector(".prev-btn"); var nextBtn = document.querySelector(".next-btn"); var imageWidth = sliderList.firstElementChild.clientWidth; var currentImageIndex = 0; nextBtn.addEventListener("click", function() { if (currentImageIndex < sliderList.children.length - 1) { currentImageIndex++; var translateXValue = -currentImageIndex * imageWidth; sliderList.style.transform = "translateX(" + translateXValue + "px)"; } }); prevBtn.addEventListener("click", function() { if (currentImageIndex > 0) { currentImageIndex--; var translateXValue = -currentImageIndex * imageWidth; sliderList.style.transform = "translateX(" + translateXValue + "px)"; } }); }); ``` 以上代码实现了一个简单轮播图,点击“上一页”和“下一页”按钮可以切换图片。代码通过监听按钮的点击事件,在点击事件中改变轮播图的`translateX`属性来实现滑动效果。 ### 回答3: 轮播图是网页中常见的组件之一,可以用来展示多张图片或内容的切换效果。下面是用原生JS一个简单轮播图的步骤: 1. HTML结构: 首先,在HTML中创建一个包含轮播图的容器,用来展示图片。可以使用`<div>`元素,并为其设置一个唯一的id,例如`<div id="slider">`。在容器内部,创建一个`<ul>`元素,并为其添加一个唯一的id,例如`<ul id="slider-list">`。然后,再在`<ul>`中创建多个`<li>`元素,每个`<li>`元素代表一个要展示的图片或内容。 2. CSS样式: 使用CSS样式来设置轮播图容器`<div>`和内部的`<ul>`元素的样式,例如设置宽度、高度、背景色等。还可以设置`<li>`元素的样式,例如设置宽度、高度、定位等,来控制图片或内容的展示方式。 3. JS逻辑: 使用原生JS来实现轮播图的逻辑部分。 - 首先,获取轮播图容器和内部`<ul>`元素的引用,可以使用`document.getElementById()`方法获取元素的引用。 - 获取所有的`<li>`元素的引用,并存储在一个数组中。 - 定义变量来存储当前展示的图片的索引,默认为0。 - 定义一个函数来切换图片。可以使用`style.display`属性来控制`<li>`元素的显示或隐藏状态。切换到下一张图片时,将当前展示的图片隐藏,将下一张图片显示。切换到最后一张图片时,再切换到第一张图片。 - 使用`setInterval()`函数来定时调用切换图片的函数,实现自动播放的效果。 4. 绑定事件: 可以为轮播图容器添加鼠标移入和移出的事件,分别停止和开始自动播放。 以上是用原生JS实现一个简单轮播图的大致步骤,通过编、测试和调试代码,可以使轮播图正常运行并展示多张图片或内容的切换效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值