html图片翻转轮播,JavaScript实现旋转轮播图

最近一直在学习JavaScript,然后看到旋转轮播图的案例,就尝试着用js做了一个简单的轮播图,因为无法显示动态效果,所以就放个截图:

95ec81ffb6f91c49afd063252252c37a.png

这个效果是这样的:一共有7张图片,它们会自动地向左滑动,然后左右箭头也可以控制轮播图的左滑和右滑,同时,如果鼠标停在图片上,那么轮播图会停止自动滑动,当鼠标移开时,将会继续向左轮播。

首先,我这里封装了两个函数(因为暂且还没有学jQuery,所以用了封装函数的方法来实现),第一个函数是$函数,调用可以获取html中的元素,代码如下:

`function $(select){

if (typeof select != 'string') {

console.log('传入的参数有误');

return null;

}

var firstChar = select.charAt(0);

switch(firstChar){

case '#':

return document.getElementById(select.substr(1));

break;

case '.':

if (document.getElementsByClassName){

return document.getElementsByClassName(select.substr(1));

} else {

var result = [];

var allElemnts = document.getElementsByTagName('*');

console.log(allElemnts);

for (var i = 0; i < allElemnts.length; i++){

var e = allElemnts[i];

var className = e.className;

var classArr = className.split(' ');

for (var j = 0; j < classArr.length; j++){

var c = classArr[j];

if (c == select.substr(1)) {

result.push(e);

break;

}

}

}

return result;

}

break;

default :

return document.getElementsByTagName(select);

}

}`

第二个函数是一个动画函数,用json实现多条样式的动态改变,从而达到一个动画效果,代码如下: `

function animate(element, json, fun) {

clearInterval(element.timer);

function getStyle(element, styleName){

if(element.currentStyle){

//ie浏览器下 直接通过currentstyle来获取

//return element.currentStyle.heigh;

return element.currentStyle[styleName];

}else{

var computedStyle = window.getComputedStyle(element,null);

return computedStyle[styleName];

}

}

var isStop = false;

element.timer = setInterval(function () {

isStop = true;

for (var key in json){

var target = json[key];

var current;

if (key == 'opacity') {

//当动画的类型为透明度时 获取的值应该是浮点类型

current = parseFloat(getStyle(element, key)) || 1;

} else {

//其他情况 用整数类型

current = parseInt(getStyle(element, key)) || 0;

}

var step = (target - current) / 10;

if (key != 'opacity') {

step = step > 0 ? Math.ceil(step) : Math.floor(step);

}

current += step;

if (key == 'opacity') {

if (Math.abs(target - current) > 0.01) {

isStop = false;

} else {

current = target;

}

element.style.opacity = current + '';

} else {

if (Math.abs(target-current) > Math.abs(step)) {

isStop = false;

} else {

current = target;

}

if (key == 'zIndex'){

element.style.zIndex = Math.round(current);

} else {

element.style[key] = current + 'px';

}

}

}

if (isStop) {

clearInterval(element.timer);

console.log('动画完成');

if (typeof fun == 'function') {

fun();

}

}

}, 30);

}`

接下来就要写html的部分了,因为只有几张图片,所以html的部分很简单:

  • 1.jpg
  • 2.jpg
  • 3.jpg
  • 4.jpg
  • 5.jpg
  • 6.jpg
  • 7.jpg

css样式的部分也不多做叙述。

下面就是JS是部分啦,代码也很简单,理清楚就好

window.onload = function(){

//定位,并给图片设置大小透明度

var json = [{

width: 630,

top: 23,

left: 0,

zIndex: 2,

opacity: 0

},{

width: 630,

top: 23,

left: 0,

zIndex: 3,

opacity: 0

},{

width: 630,

top: 23,

left: 0,

zIndex: 4,

opacity: 0.6

},{

width: 730,

top: 0,

left: 125,

zIndex: 5,

opacity: 1

},{

width: 630,

top: 23,

left: 350,

zIndex: 4,

opacity: 0.6

},{

width: 630,

top: 23,

left: 350,

zIndex: 3,

opacity: 0

},{

width: 630,

top: 23,

left: 350,

zIndex: 2,

opacity: 0

}];

function refreshImageLocatin(index){

//默认情况下 第i张图对应第i个位置

//index=1时 第i个图对应i-1个位置

//也就是第i个图对应i-index的位置

var liArr = $('li');

for(var i = 0; i < liArr.length; i++){

var li = liArr[i];

var locationIndex = i - index;

console.log('i='+i);

console.log('index='+index);

console.log('locationIndex='+locationIndex);

if(locationIndex < 0){

locationIndex += 7;

}

var locationData = json[locationIndex];

animate(li, locationData, null);

}

}

refreshImageLocatin(0);

var index = 0;

$('#next').onclick = function(){

index++;

if(index == 7){

index = 0;

}

refreshImageLocatin(index);

}

$('#prev').onclick = function(){

index--;

if(index < 0){

index = 6;

}

refreshImageLocatin(index);

}

var nextImage = $('#next').onclick;

var contentBox = $('.content')[0];

//自动播放

var timer = setInterval(nextImage, 3000);

//当鼠标移动到图片上,停止播放

contentBox.onmouseover = function(){

clearInterval(timer);

}

contentBox.onmouseout = function(){

timer = setInterval(nextImage ,3000)

}

}

以上就是旋转轮播图的全部内容了,给自己的学习过程做个简单的记录,也顺便巩固一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值