这篇文章主要为大家详细介绍了javascript实现旋转轮播图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近一直在学习javascript,然后看到旋转轮播图的案例,就尝试着用js做了一个简单的轮播图,因为无法显示动态效果,所以就放个截图:
这个效果是这样的:一共有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的部分很简单:
<body>
<p class="box">
<p class="content">
<ul>
<li><a href="#"><img src="./images/1.jpg"></a></li>
<li><a href="#"><img src="./images/2.jpg"></a></li>
<li><a href="#"><img src="./images/3.jpg"></a></li>
<li><a href="#"><img src="./images/4.jpg" class="current"></a></li>
<li><a href="#"><img src="./images/5.jpg"></a></li>
<li><a href="#"><img src="./images/6.jpg"></a></li>
<li><a href="#"><img src="./images/7.jpg"></a></li>
</ul>
</p>
<p class="control">
<a href="javascript:;" id="prev"></a>
<a href="javascript:;" id="next"></a>
</p>
</p>
</body>
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)
}
}
以上就是javascript实现旋转轮播图的示例代码分享的详细内容。