HTML+CSS+Javascript实现轮播图效果

简介: HTML+CSS+Javascript实现轮播图效果

HTML+CSS+Javascript实现轮播图效果


注意:根据自己图片大小来更改轮播图大小。


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
* {
  margin: 0;
  padding: 0;
}
/*去掉ul、ol、li源有的样式*/
ul, ol, li {
  list-style: none;
}
/*设置图片样式为*/
img {
  width: 100%;
  height: 100%;
  display: block;    /*图片可见*/
}
/*设置最大div的样式*/
.banner {
  width: 50%;
  height: 60%;
  position: absolute;
  margin: 50px 0;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
/*设置ul的样式对齐方式为相对对齐*/
.banner>ul {
  width: 100%;
  height: 100%;
  position: relative;
}
/*设置装图片的li样式*/
.banner>ul>li {
  width: 100%;
  height: 100%;
  position: absolute;   /* 绝对对齐*/
  left: 0;
  top: 0;
  opacity: 0;     /*完全透明*/
  transition: opcity .5s linear;    /* 平滑过渡*/
}
/*当用户点击后释放鼠标后图片的li生效*/
.banner > ul > li.active {
  opacity: 1; /* 完全不透明*/
}
/*下方呈现的小按钮外围样式*/
.banner > ol {
  width: 200px;
  height: 60px;
  position: absolute;   /*绝对定位*/
  left: 50%;
  bottom: 50px;
  background-color: coral;
  opacity: 0.4;
  transform: translateX(-50%);      /*左边距减去自身的一半*/
  display: flex;                     /*水平排列*/
  justify-content: space-around;      /*水平两端对齐*/
  align-items: center;                /*垂直居中对齐 */
  border-radius: 80px;   /*圆角*/
}
/*下方小圆按钮的样式*/
.banner > ol > li {
  width: 20px;
  height: 20px;
  background-color: aliceblue;
  border-radius: 50%;    /*圆角50%*/
  cursor: pointer;  /*鼠标移动到此处变成小手*/
}
/*点击小按钮后释放鼠标后li生效*/
.banner > ol > li.active {
  background-color: limegreen;
}
/*左右按钮*/
.banner>div {
  width: 100px;
  height: 150px;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);   /*上边距减去自身高度的一半*/
  background-color: black;
  opacity: 0.4;               /* 透明度0.4*/
  display: flex;               /*摆脱文档流限制,相对定位*/
  justify-content: center;     /*内部元素和内容垂直居中*/
  align-items: center;         /*内部元素和内容水平居中*/
  font-size: 90px;             /*字体大小*/
  color: aliceblue;
}
/*左边按钮样式*/
.banner>div.left {
  left: 0;  /* 左对齐*/
  cursor: pointer;  /*鼠标移动到此处变成小手*/
}
/*右边按钮样式*/
.banner>div.right {
  right: 0;               /* 右对齐*/
  cursor: pointer;  /*鼠标移动到此处变成小手*/
}
</style>
</head>
<body>
<div class="banner">
  <ul class="imgBox">
    <li class="active"><img src="img/1.jpg" alt=""></li>
    <li><img src="img/2.jpg"  alt=""></li>
    <li><img src="img/3.jpg"  alt=""></li>
    <li><img src="img/4.jpg"  alt=""></li>
  </ul>
  <ol><!--自定义属性                自定义属性-->
    <li data-i="0" class="active" data-c="pas"></li>
    <li data-i="1" data-c="pas"></li>
    <li data-i="2" data-c="pas"></li>
    <li data-i="3" data-c="pas"></li>
  </ol>            
  <div class="left">&lt;</div>   <!--&lt;代表"<"-->
  <div class="right">&gt;</div>  <!--&lt;代表">"-->
</div>
<script type="text/javascript">
  //获取所有图片的li和所有焦点的li
  var imgs=document.querySelectorAll("ul > li")
  var point=document.querySelectorAll("ol > li")
  //获取最大div的元素
  var banner=document.querySelector(".banner")
  //index表示第几张图片默认第0张显示
  var index=0 
  //隐藏当前这种图片,显示第index张图片方法
     //true表示切换到下一张图片
      //false表示切换到上一张图片
  function changeOne(type){
  //隐藏第index张图片
  imgs[index].className=''
  //隐藏第index个按钮高亮(绿色)
  point[index].className=''
  //判断传过来的值是否是true,是就切换下一张图片
  if(type===true){
  index++  
       }else if(type===false){   //判断传过来的值是否是false,是就切换上一张图片
     index--
    }else{        //都不是说明点击是小圆点,就切换到type张图片
     index=type         
    }
  //判断index有没有越界,越了就从头开始或者从最后开始
  if(index>=imgs.length){
    index=0
  }
  if(index<0){
            index=imgs.length-1 
   }
  //为index张图片设置active属性
  //图片是透明度设置不透明,
  imgs[index].className="active"  
   //小圆点是设置高亮
  point[index].className="active"
  }
  //单击判断调用changeOne(type)方法
     banner.onclick=function(e){
   //判断点击的是否是点击了左边的按钮
  if(e.target.className==="left"){
    changeOne(false)//如果是就调用方法,并传参false
  }
   //判断点击的是否是点击了右边的按钮
  if(e.target.className==="right"){
    changeOne(true)  //如果是就调用方法,并传参true
  }
  //判断是否点击了小按钮(自定义属性判断,可以去看小圆点li里的(data-c))
  if(e.target.dataset.c==="pas"){
    //如果是再次通过自定义属性判断点击的哪一个小圆点,并把值传过去
    var i=e.target.dataset.i-0
    changeOne(i)
           }    
   }
  //自动切换下一张图片方法
   setInterval(function(){
   changeOne(true)
  },5000)
  </script>
</body>
</html>
相关文章
|
8天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
26 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
28天前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
64 34
|
29天前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
53 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
30天前
|
前端开发
“弘五四,耀青春”程序创意获奖作品【html+css】
本作品以“青春筑梦,共创未来”为主题,采用动态龙元素展现青春活力与创新精神。页面设计简洁明快,色彩协调,突显年轻人积极向上的风貌。作品内容包括获奖截图、名字《时代扬新帆》及源代码分享。特别说明:禁止用于商业活动,可用于比赛和作业等开源场景。最后,作者表达了对五四精神的致敬与传承,强调了青春活力和创造力的重要性,并感谢评委和支持者。 **获奖感言摘录:** “获得这个奖项,对我们团队来说,既是认可也是激励。我们将继续努力,不断优化产品,为用户带来更好的体验,为社会贡献更多价值。”
33 2
|
1月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
123 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
1月前
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
79 33
|
2月前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
116 24
|
3月前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
86 5
|
3月前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
121 7

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    47
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57