js+html+css实现手动轮播和自动轮播


Posted in Javascript onDecember 30, 2020

本文实例为大家分享了js+html+css实现手动轮播和自动轮播的具体代码,供大家参考,具体内容如下

原理:设置图片层的总长=单张图片长度*张数;在轮播层中利用overflow只留出一张图片的显示; 通过图片层的left来显示轮播的每一张图,第一张为0,为了后面的图片显示,left的值左移为负数。

原理图

js+html+css实现手动轮播和自动轮播

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>轮播图</title>
<!-- <script type="text/javascript" src="demo.js"></script> -->
</head>
<style type="text/css">
 *{
 margin: 0;
 padding: 0;
 }
 ul{
 list-style: none;
 }
 a{
    text-decoration: none;
  }
 #container{
 position: relative;
 width: 500px;
 height: 260px;
 margin: 20px auto;
 overflow: hidden; /*溢出隐藏:只显示一张图片*/
 }
 #container .parent{
 position: absolute;
 width: 2500px; /*整个图片层长度:500*5=2500*/
 height: 260px;
 }
 
 #container .parent li{
 float: left;
 width: 500px;
 height: 100%;
 }
 #container .parent li img{
 width: 100%;
 height: 100%;
 }
 #container .btnLeft,
 #container .btnRight{
 width: 30px;
   height: 30px;
   background-color: #9E9E9E;
   border-radius: 20%;
   opacity: 80%;
   position: absolute; /*包含块为图片显示层container*/
   top: 0;
   bottom: 0;
   margin: auto;
   font-size: 20px;
   color: #f40;
   text-align: center;
   line-height: 30px;
 }
 #container .btnLeft{
   left: 10px;
 }
 #container .btnRight{
 right: 10px;
 }
 #container .btnLeft:hover,
 #container .btnRight:hover{
 opacity: 90%;
 cursor: pointer;
 }
 /*蒙层*/
 #container .modal{
 width: 100%;
 height: 40px;
 background: rgba(0,0,0,.3);
 position: absolute;
 left: 0;
 bottom: 0;
 line-height: 40px;
 padding: 0 40px;
 box-sizing: border-box;
 }
 #container .modal .title{
 float: left;
 color: #fff;
 font-size: 12px;
 }
 #container .modal .dots{
 float: right;
 position: absolute;
 bottom: 10px;
 left: 340px;
 }
 #container .modal .dots li{
 width: 15px;
 height: 15px;
 border-radius: 50%;
 float: left;
 /*可以使用行块盒*/
 /*display: inline-block;*/
 margin: 0 5px;
 cursor: pointer;
 }
 .clearfix::after{
 content: "";
 display: block;
 clear: both;
 }
 .on{
 background-color: red;
 }
 .off{
 background-color: gray;
 }
</style>
<body>
<div id="container">
 <ul class="parent" style="left: 0;">
 <li><img src="1.jpg"></li>
 <li><img src="2.jpg"></li>
 <li><img src="3.jpg"></li>
 <li><img src="4.jpg"></li>
 <li><img src="5.jpg"></li>
 </ul>

 <div class="btnLeft"><</div>
 <div class="btnRight">></div>
 <div class="modal">
 <div class="title">
  <h2>轮播图</h2>
 </div>
 <div class="dots">
  <ul class="clearfix">
  <li class="on"></li>
  <li class="off"></li>
  <li class="off"></li>
  <li class="off"></li>
  <li class="off"></li>
  </ul>
 </div>
 </div>
</div>
<script type="text/javascript">
 
var imgShow = document.getElementsByClassName('parent')[0],
 dotList = document.querySelectorAll('.dots >.clearfix > li');
var btnLeft = document.getElementsByClassName('btnLeft')[0],
  btnRight = document.getElementsByClassName('btnRight')[0];
var dotLen = dotList.length,
 index = 0; //轮播层的图片索引,0表示第一张

//圆点显示
function showRadius() {
 for(var i = 0; i < dotLen; i++) {
 if(dotList[i].className === "on"){
  dotList[i].className = "off";
 }
 }
 dotList[index].className = "on";
}

//向左移动
btnLeft.onclick = function() {
 index--;
  if(index < 0){ /*第1张向左时,变为第5张*/
    index = 4;
  }
  showRadius();
 var left;
 var imgLeft = imgShow.style.left;
 if(imgLeft === "0px") { /*当是第1张时,每张图片左移,移4张图,位置为-(4*500)*/
 left = -2000;
 }
 else{
 left = parseInt(imgLeft) + 500; /*由于left为负数,每左移一张加500*/
 }
 imgShow.style.left = left + "px";
}

//向右移动
btnRight.onclick = function() {
 index++;
  if(index > 4){ /*第5张向右时,变为第1张*/
    index = 0;
  }
  showRadius();
 var right;
 var imgLeft = imgShow.style.left;
 if(imgLeft === "-2000px") { /*当是第5张时,第1张的位置为0*/
 right = 0;
 }
 else{
 right = parseInt(imgLeft) - 500; /*由于left为负数,每右移一张减500*/
 }
 imgShow.style.left = right + "px";
}

// 自动轮播
/*var timer;
function autoPlay() {
 timer = setInterval(function() {
 var right;
 var imgLeft = imgShow.style.left;
 if(imgLeft === "-2000px") {
  right = 0;
 }
 else{
  right = parseInt(imgLeft) - 500;
 }
 imgShow.style.left = right + "px";
 } ,1000)
}
autoPlay();*/

for(var i = 0; i < dotLen; i++) {
  /*利用闭包传递索引*/
  (function(i) {
    dotList[i].onclick = function() {
     var dis = index - i; //当前位置和点击的距离
     imgShow.style.left = (parseInt(imgShow.style.left) + dis * 500) + "px";
     index = i; //显示当前位置的圆点
     showRadius();
   }
  })(i);
}

</script>

</body>
</html>

效果:按钮左右滑动图片,图片上的小圆点也可以选择图片。

js+html+css实现手动轮播和自动轮播

js+html+css实现手动轮播和自动轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
WordPress 插件——CoolCode使用方法与下载
Jul 02 Javascript
jquery form表单序列化为对象的示例代码
Mar 05 Javascript
JavaScript中原型和原型链详解
Feb 11 Javascript
jquery实现超简洁的TAB选项卡效果代码
Aug 28 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
vue2.x select2 指令封装详解
Oct 12 Javascript
ES6之模版字符串的具体使用
May 17 Javascript
webpack4 处理SCSS的方法示例
Sep 03 Javascript
微信打开网址添加在浏览器中打开提示的办法
May 20 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
微信小程序点击view动态添加样式过程解析
Jan 21 Javascript
js 实现验证码输入框示例详解
Sep 23 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 #jQuery
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 #Vue.js
梳理一下vue中的生命周期
Dec 30 #Vue.js
js实现鼠标拖曳效果
Dec 30 #Javascript
微信小程序实现简单购物车功能
Dec 30 #Javascript
微信小程序实现购物车小功能
Dec 30 #Javascript
Vue实现简易购物车页面
Dec 30 #Vue.js
You might like
PHP 遍历文件实现代码
2011/05/04 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
jquery选择器(常用选择器说明)
2010/09/28 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
最小二乘法及其python实现详解
2020/02/24 Python
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
几个数据库方面的面试题
2016/07/01 面试题
服装机修工岗位职责
2013/12/26 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
班级聚会策划书
2014/01/16 职场文书
企业授权委托书范本
2014/04/02 职场文书
卫生系统先进事迹
2014/05/13 职场文书
大学生找工作求职信
2014/07/09 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
Java设计模式之代理模式
2022/04/22 Java/Android