<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title></title>
<style type="text/css">
html{ background-color: #00b0e4;}
body,ul,li{ margin: 0; padding: 0;}
ul li{ list-style: none;}
.container{ height: 300px; margin: 100px auto; padding: 60px 0; overflow: hidden;}
.container ul{ display: -webkit-flex; display: flex; height: 100%;}
.container ul li{ -webkit-flex-shrink: 0; width: 400px; height: 100%;
padding: 5px; box-sizing: border-box; -webkit-transition: all .6s; transition: all .6s;}
.container ul li:hover{ z-index: 1; -webkit-transform: scale(1.2); transform: scale(1.2); }
.container ul li img{ width: 100%; height: 100%; object-fit: cover; box-sizing: border-box;
border: 10px solid #fff; box-shadow: 0 0 5px #333;} </style>
<script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&libraries=convertor"></script>
<script>
function FreeSlider(selector,speed) { /* 变量改为属性 */
this.oContainer = document.querySelector(selector);
this.oWrapper = this.oContainer.querySelector('ul');
this.oSlide = this.oWrapper.querySelectorAll('li'); /* 当不传入轮播速度时,速度默认为100 */
this.speed = speed || 100; this.containerW = this.oContainer.offsetWidth;
this.wrapperW = this.oSlide[0].offsetWidth * this.oSlide.length;
this.x = 0;
this.timer = null; this.init(); } /* 构造函数的原型对象 */
FreeSlider.prototype = { constructor: FreeSlider, /* 功能抽离,此处实现初始化 */
init: function(){
// this.oWrapper.style.width = this.wrapperW * 2 + 'px';
this.oWrapper.innerHTML += this.oWrapper.innerHTML; if(this.wrapperW < this.containerW){
this.oContainer.style.width = this.wrapperW + 'px';
} // this.slideMove();
}, /* 图片自动无限轮播 */
slideMove: function(){
/* 此处需要注意this的指向,
在setInterval回调函数中的this指向为window */
var that = this;
this.timer = setInterval(function () {
that.x++;
if(that.x > that.wrapperW){
that.x = 0;
}
that.oWrapper.style.transform = 'translate('+ (-that.x) +'px)';
},this.containerW / this.speed); // 将速度转化成定时器时间
}, /* 图片停止轮播 */
stopSlideMove: function () {
clearInterval(this.timer);
}
}; window.onload = function(){ var oContainer = document.querySelector('.container'); // 新建图片轮播对象
var mySlider = new FreeSlider('.container',300); // 鼠标移入时清除定时器,图片停止轮播
oContainer.addEventListener('mouseover',function () {
mySlider.stopSlideMove();
}); // 鼠标移出时图片继续轮播
oContainer.addEventListener('mouseout',function () {
mySlider.slideMove();
}); } </script> </head>
<body >
<div class="container">
<ul class="wrapper">
<li class="slide"><img src="./1.jpg" alt=""></li>
<li class="slide"><img src="./2.jpg" alt=""></li>
<li class="slide"><img src="./3.jpg" alt=""></li>
</ul>
</div> </body>
</html>
												

最新文章

  1. Linux下MySQL的备份与还原
  2. 如何在ecshop订单中显示客户给商家的留言
  3. 1701. Ostap and Partners(并查集-关系)
  4. URI--http://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6
  5. python函数any()与all()
  6. Problem E: 可变长数组
  7. poj 1741 树的点分治(入门)
  8. Laravel 1071 Specified key was too long
  9. EasyPR源码剖析(2):车牌定位
  10. curl模拟post json或post xml文件
  11. jvm.option是什么,它是如何加载的
  12. spring-session-data-redis解决session共享的问题
  13. java导出excel时合并同一列中相同内容的行
  14. .NetCore实践篇:成功解决分布式监控ZipKin聚合依赖问题(三)
  15. 10.4-uC/OS-III内部任务(空闲任务OS_IdleTask())
  16. python全栈开发-面向对象-进阶2
  17. Cocos2d-x3.0 载入Cocostudio的UI后,button无法点击的解决方法
  18. HTML5拓扑3D机房,电力工控Web SCADA
  19. Educational Codeforces Round 58 (Rated for Div. 2) 题解
  20. iOS 数组的去重(普通的无序的去重和排序好的去重)

热门文章

  1. Codeforces 1340B Nastya and Scoreboard(dp,贪心)
  2. 还学的动吗? 盘点下Vue.js 3.0.0 那些让人激动的功能
  3. 设计数据库 ER 图太麻烦?不妨试试这两款工具,自动生成数据库 ER 图!!!
  4. Net core项目实战篇01---EFCore CodeFirs For Mysql 数据库初始化
  5. Linux安装jdk(详细教程)
  6. 【ejabberd】安装XMPP服务器ejabberd(Ubuntu 12.04)
  7. 自动安装带nginx_upstream_check_module模块的Nginx脚本
  8. 图论--最短路--dijkstra(含路径输出)模板
  9. session与cookie的浅谈
  10. MODIS系列之NDVI(MOD13Q1)七:时间序列S-G滤波之Python