【JavaScript】原生态兼容IE6的图片轮播

《【Bootstrap】图片轮播组件Carousel》(点击打开链接)虽然做得很不错,但是由于只兼容到IE8,所以没有用的。其实原生态兼容IE6的图片轮播并没有想象中的那么难,网上的很多兼容IE6的图片轮播其实代码写得很糟糕的。首先复用性很差,根本就不知道怎么修改,然后加入了很多如同百叶窗这些可有可无的特效,把原本简短的代码弄得很差,最后,这些东西还直接用JavaScript创建组件来显示自己的Javascript学得有多么地强大,然后又不好好教别人怎么做,直接用一个JS写完整个网页个人觉得相当不好,HTML、CSS、Javascript三者应该是不分彼此的。其实,有了《【JavaScript】利用getElementsByTagName与getElementsByName改进原生态兼容IE6标签页》(点击打开链接)的启发,这东西实现起来根本就是易如反掌。

一、基本目标

以下就是Winxp中的IE6,当然点击右下角的1,2,3,4能够自动切换,最重要的是,这东西能够自己轮播,你可以看到我的IE6一直处于非激活的状态。之后,左下角有相应的图片文字说明。你完全可以改成一些新闻图片与新闻标题,甚至利用php,jsp,asp等从数据库读取图片、新闻更新到这个组件里面来都没有问题。



二、基本准备

1、以下是我的站点目录,在winxp的系统文件c:\windows\wallpaper\web\里面拉来几张winxp自带的壁纸。用来做上面的实验。carousel.html读取的文件都从imgs里面读取出来。


2、HTML与CSS布局代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>carousel</title>
</head>

<body>
    <div id="carousel" style="border:1px solid #000000; float:left; width:400px;"> 
        <div id="tabpic">
            <div style="display:block;"><img src="imgs/Ascent.jpg" width="400px" /></div>
            <div style="display:none;"><img src="imgs/Autumn.jpg" width="400px" /></div>
            <div style="display:none;"><img src="imgs/Azul.jpg" width="400px" /></div>
            <div style="display:none;"><img src="imgs/Crystal.jpg" width="400px" /></div>
        </div>
        <div style="float:right;">
            <a href="javascript:void(0)" name="tablink" οnclick="div_tab(0)" style="color:#ff0000;">1</a>
            <a href="javascript:void(0)" name="tablink" οnclick="div_tab(1)" style="color:#0000ff;">2</a>
            <a href="javascript:void(0)" name="tablink" οnclick="div_tab(2)" style="color:#0000ff;">3</a>
            <a href="javascript:void(0)" name="tablink" οnclick="div_tab(3)" style="color:#0000ff;">4</a>
        </div>
        <div id="tabtext" style="float:left;">
            <div style="display:block;">aaaaaaaaaaaaaaaaaaa</div>  
            <div style="display:none;">bbbbbbbbbbbbbbbbb</div>  
            <div style="display:none;">cccccccccccccccc</div>  
            <div style="display:none;">dddddddddddddd</div>  
        </div>
    </div>
    <div style="clear:both;"></div>
</body>
</html>

里面的id是为了下面的javascript脚本控制,其余部分布局思想如下所示,采用了《【CSS】关于div的对齐与网页布局》(点击打开链接)中的布局方式:



三、制作过程

布局好之后就开始Javascript的制作,分页算法的切换思想的还是《【JavaScript】利用getElementsByTagName与getElementsByName改进原生态兼容IE6标签页》(点击打开链接)的分页思想,只是添加了一个setInterval("auto_tab_div()",2000);让切换自动进行而已。不赘述了。

<script>
function div_tab(tabname){
	var tabLinkArr=document.getElementsByName("tablink");
	var tabPicArr=document.getElementById("tabpic").getElementsByTagName("div");
	var tabTextArr=document.getElementById("tabtext").getElementsByTagName("div");
	for(var i=0;i<tabLinkArr.length;i++){
		if(i==tabname){
			tabLinkArr[i].style.color="#ff0000";
			tabPicArr[i].style.display="block";
			tabTextArr[i].style.display="block";
		}
		else{
			tabLinkArr[i].style.color="#0000ff";
			tabPicArr[i].style.display="none";
			tabTextArr[i].style.display="none";
		}
	}
}
var i=0;
function auto_tab_div(){
	//如果切换到最后一张图片则重新从第一张开始	
	if(i>3){
		i=0;	
	}
	//每两秒自动读取下一张图片
	div_tab(i);
	i++;
}
setInterval("auto_tab_div()",2000);
</script>
有了正确的思想指导,让你这个图片轮播摆哪里位置,轮播的速度控制,添加图片,甚至改成二十万张图片轮播,都是这样了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 jQuery 轮图插件,支持 IE8 及以上版本: HTML: ``` <div class="slider"> <ul class="slider-list"> <li><img src="img/slider-1.jpg" alt=""></li> <li><img src="img/slider-2.jpg" alt=""></li> <li><img src="img/slider-3.jpg" alt=""></li> </ul> <div class="slider-nav"> <a href="#" class="slider-prev">Prev</a> <a href="#" class="slider-next">Next</a> </div> </div> ``` CSS: ``` .slider { position: relative; overflow: hidden; } .slider-list { position: absolute; top: 0; left: 0; width: 300%; list-style: none; margin: 0; padding: 0; } .slider-list li { float: left; width: 33.333%; height: 200px; } .slider-list li img { width: 100%; height: 100%; display: block; } .slider-nav { position: absolute; bottom: 10px; left: 50%; transform: translate(-50%, 0); z-index: 1; } .slider-nav a { display: inline-block; margin: 0 10px; padding: 5px 10px; background-color: #fff; border: 1px solid #ccc; color: #333; text-decoration: none; } ``` JavaScript: ``` $(function() { var $slider = $('.slider'); var $sliderList = $slider.find('.slider-list'); var $sliderItem = $sliderList.find('li'); var $sliderNav = $slider.find('.slider-nav'); var $sliderPrev = $sliderNav.find('.slider-prev'); var $sliderNext = $sliderNav.find('.slider-next'); var sliderCount = $sliderItem.length; var currentIndex = 0; var slideWidth = $slider.width(); var isAnimating = false; // 初始化 $sliderList.css({ width: slideWidth * sliderCount }); $sliderItem.css({ width: slideWidth }); // 上一张 $sliderPrev.on('click', function(e) { e.preventDefault(); if (isAnimating) return; currentIndex--; if (currentIndex < 0) { currentIndex = sliderCount - 1; } sliderAnimate(currentIndex); }); // 下一张 $sliderNext.on('click', function(e) { e.preventDefault(); if (isAnimating) return; currentIndex++; if (currentIndex > sliderCount - 1) { currentIndex = 0; } sliderAnimate(currentIndex); }); // 动画 function sliderAnimate(index) { isAnimating = true; $sliderList.animate({ left: -slideWidth * index }, 500, function() { isAnimating = false; }); } }); ``` 注意事项: 1. 在 IE8 中,由于不支持 CSS3 transform 属性,所以需要使用 jQuery 的 animate() 方法来实现动画效果。 2. 在 IE8 中,需要将 JavaScript 代码放在 jQuery 库文件之后,否则会出现 $ 或 jQuery 未定义的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值