web 完整轮播图 前端 轮播图

  • 预览:
    • 应用 HTML + CSS + JS
    • HTML
    • CSS
    • JS

预览:

应用 HTML + CSS + JS

JS代码分析如下:

  1. html代码比较简短,这里用js生成标签元素,init函数
  2. btnChange函数主要是实现底部的按钮的动态效果
  3. focusControl函数用于设置左右焦点
  4. animate函数用于实现轮播图动画效果

HTML

<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./css/index.css">
</head><body><div class="content"><ul id="carousel"></ul><ul id="btn"></ul><div id="focus"><div id="left">&lt;</div><div id="right">&gt;</div></div></div><script src="./js/index.js"></script>
</body></html>

CSS

*{margin: 0px;padding: 0px;
}body{background-color: rgba(7, 98, 194, 0.877);
}.content{width: 960px;height: 540px;border: 5px solid rgb(0, 173, 186);margin-left: auto;margin-right: auto;margin-top: 100px;position: relative;overflow: hidden;
}#carousel{list-style: none;height: 540px;width: 11520px;position: absolute;left: 0px;
}#carousel>li{float: left;
}#carousel>li>img{width: 960px;height: 540px;
}#btn{list-style: none;position: absolute;top: 488px;left: 180px;
}#btn>li{height: 40px;width: 40px;background-color: rgba(0, 0, 0, 0.3);float: left;line-height: 40px;text-align: center;margin-left: 10px;color: #fff;border-radius: 50%;border: 3px solid rgb(0, 173, 186);cursor: pointer;
}#btn>.current{background-color: rgb(0, 192, 203);
}#left,#right{height: 100px;width: 50px;background: rgba(0, 0, 0, 0.3);line-height: 100px;text-align: center;font-size: 50px;color: #999;position: absolute;top: 50%;transform: translate(0,-50%);cursor: pointer;
}#focus{display: none;
}#left{left: 0px;border-bottom-right-radius: 5px;border-top-right-radius: 5px;
}
#right{right: 0px;border-bottom-left-radius: 5px;border-top-left-radius: 5px;
}#left:hover{color: #fff;
}#right:hover{color: #fff;
}

JS

var carousel = document.getElementById("carousel");
var btn = document.getElementById("btn");
var contentCarousel = document.getElementsByClassName("content")[0];
var focusPoint = document.getElementById("focus");
var leftFocus = document.getElementById("left");
var rightFocus = document.getElementById("right");
var imageWidth, pic = 0, btnNum = 0;
var timer = null;
// 初始化页面
function init() {// 初始化 carouselfor (var i = 0; i < 11; i++) {var li = document.createElement("li");var img = document.createElement("img");img.setAttribute("src", "./images/img" + (i + 1) + ".jpg");li.appendChild(img);carousel.appendChild(li);}// 将第一张图片 clone 到最后var firstLi = carousel.firstChild.cloneNode(true);carousel.appendChild(firstLi);// 初始化 btnfor (var i = 0; i < carousel.children.length - 1; i++) {var li = document.createElement("li");li.innerHTML = i + 1;btn.appendChild(li);}btn.children[0].className = 'current';imageWidth = carousel.children[1].offsetLeft;
}// 按钮随鼠标改变
function btnChange() {for (var i = 0; i < btn.children.length; i++) {btn.children[i].index = i;btn.children[i].onclick = function () {for (var j = 0; j < btn.children.length; j++) {btn.children[j].className = '';}pic = this.index;btnNum = this.index;this.className = 'current';var target = - pic * imageWidth;animate(carousel, target);}}
}// 控制左右焦点的出现消失
function focusControl() {contentCarousel.onmouseenter = function () {focusPoint.style.display = "block";clearInterval(timer);}contentCarousel.onmouseleave = function () {focusPoint.style.display = "none";timer = setInterval(rightFocus.onclick, 2000);}// 左焦点点击事件leftFocus.onclick = function () {if (pic <= 0) {pic = carousel.children.length - 1;carousel.style.left = -(carousel.children.length - 1) * imageWidth + 'px';}pic--;var target = -pic * imageWidth;animate(carousel, target);btnNum--;if (btnNum < 0) btnNum = carousel.children.length - 2;for (var j = 0; j < btn.children.length; j++) {btn.children[j].className = '';}btn.children[btnNum].className = 'current';}// 右焦点点击事件rightFocus.onclick = function () {if (pic >= carousel.children.length - 1) {pic = 0;carousel.style.left = 0;}pic++;var target = -pic * imageWidth;animate(carousel, target);for (var j = 0; j < btn.children.length; j++) {btn.children[j].className = '';}btnNum++;if (btnNum >= carousel.children.length - 1) {btnNum = 0;}btn.children[btnNum].className = 'current';}// 设置定时器用于自动播放timer = setInterval(rightFocus.onclick, 2000);
}// 动画效果
// function animate(obj, target) {//   clearInterval(obj.timer);
//   obj.timer = setInterval(function () {//     var leader = obj.offsetLeft;
//     var step = 30;
//     step = leader < target ? step : -step;
//     if (Math.abs(leader - target) >= Math.abs(step)) {//       leader += step;
//       obj.style.left = leader + 'px';
//     } else {//       obj.style.left = target + 'px';
//       clearInterval(obj.timer);
//     }
//   }, 15)
// }// 函数覆盖,缓动效果
function animate(obj, target) {clearInterval(obj.timer);obj.timer = setInterval(function () {var leader = obj.offsetLeft;var step = (target - leader) / 30;step = step > 0 ? Math.ceil(step) : Math.floor(step);leader += step;obj.style.left = leader + 'px';if (leader === target) {clearInterval(obj.timer);}}, 10)
}init();
btnChange();
focusControl();

web 完整轮播图 前端 轮播图 详细相关推荐

  1. 轮播图最后一张图结束如何平缓回到第一张_产品经理早期如何学习?

    关于这个问题,多数同学学习的目的是就业,大学里面也没有产品经理专业,所以不会去考学分,也不需要考证,更不需要考研.产品经理是一个职位,我们学习的目的是如何能够用所学到的能力去就业,去工作.如果达到工作 ...

  2. vue pc端 商品轮播图_轮播图高点击商品图

    轮播图由背景,商品图,文案三大部分组成,其中商品图是轮播图的主体内容,在轮播主图中,能不能通过一张商品图呈现出商品信息或者卖点,是影响点击率高低的重要因素.本期内容,我们将从商品图出发,为大家讲解的轮 ...

  3. 【uniapp】3d轮播图/堆叠轮播图/层叠轮播图

    前言 uniapp 3d轮播图 uniapp实现3D轮播图 从uniapp插件市场下载插件:https://ext.dcloud.net.cn/plugin?id=243#detail 操作步骤 导入 ...

  4. 转~~前端轮播 简单实现 啵啵啵!!!

    转~~前端轮播  简单实现  啵啵啵!!!        2016-09-21    14:32:53 需要实现的效果----> 新闻,shopping ,物品的轮播展示,鼠标点击锁定. 效果图 ...

  5. 前端轮播插件banner

    写了一个轮播图滑动的动态效果,需要的码友可以来用哦,通过此js脚本可以配置轮播图是由有自动轮播,是否有左右按钮,配置轮播滑动的时长,是否可以通过页码点击来切换轮播图,轮播图页码显示的问题等. gith ...

  6. 九宫图-图片轮播-兼容IE8和Chrome浏览器

    在线测试 打包下载 九宫图-图片轮播-兼容IE8和Chrome浏览器

  7. js点击轮播或者自动轮播图代码

    <!DOCTYPE html> <html> <head lang="en">     <meta charset="gbk&q ...

  8. 一键生成轮播图,轮播图插件

    一键生成轮播图,轮播图插件 简介 写练习的时候发现每次写轮播图都觉得很麻烦,突发奇想,何不写个轮播图插件,需要轮播图的时候,直接调用插件一键生成就行了!!! 于是乎,便写了以下代码(因为博主还是在校学 ...

  9. uni-app:多功能轮播图,堆叠试轮播,文本轮播,图文轮播

    插件地址[前往] mosowe-swiper:适用于uni-app的轮播图插件 轮播组件,本插件兼容H5.APP.微信小程序.支付宝小程序 组件功能 普通轮播(文本.图片,图文轮播,支持上下.左右轮播 ...

最新文章

  1. mysql 字段可以存数组吗_mysql怎么存数组
  2. VI常用使用命令 为初次接触VI 的兄弟们献微利
  3. 浅析刚刚起步的创业公司应该如何选择适合自己的网站类型呢?
  4. python需要多久-在传智播客培训python需要多久?
  5. Django 权限管理-后台根据用户权限动态生成菜单
  6. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)
  7. ios swift版 sqlite3详解
  8. Nginx 搭建图片缓存服务器-转
  9. java 通过IText生成PDF时顺序问题(图片)
  10. U-Boot顶层Makefile分析
  11. 面试官:你说你喜欢研究新技术,那么请说说你对 Blazor 的了解
  12. (1)解锁MongoDB replica set核心姿势
  13. 低价购买(洛谷 1108)
  14. python 对象引用、可变性 和 垃圾回收
  15. 收藏一篇好文章,关于云计算和大数据的
  16. MTK平台修改分区大小之后,通过fastboot工具烧录的说明
  17. 第13章 集成学习和随机森林 学习笔记下 随机森林和集成学习
  18. C++,Java,Pathy这几种编程语言的区别
  19. dosbox运行C语言,DOSBox-DOS模拟器-DOSBox下载 v0.74官方版-完美下载
  20. 6U VPX 高性能数据存储板 (2 片XC7K325T)

热门文章

  1. ShaderWeaver使用教程-火焰制作
  2. springMVC helloword示例
  3. photoshop矫正扫描图片的倾斜问题以及修改图片内容
  4. DRDS 数据恢复重磅发布 全方位保障数据安全
  5. 简述PGA相关概念及参数
  6. android 备份整个手机,快收藏!史上最全的安卓手机数据备份方法都在这里了
  7. 听普罗科菲耶夫的二部小提琴协奏曲
  8. oppoR17手机计算机的隐藏功能,小技巧隐藏大“智慧”,原来OPPO R17还有这些实用功能...
  9. 为什么曾经看好的车联网如今却成了鸡肋?
  10. 酷客scrm—马化腾首次撰文阐述私域流量