以下是 JS带缩略图平滑滚动相册特效代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!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>JS带缩略图平滑滚动相册特效</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<br>
<div class="mod18Box">
<div class="mod18">
<span id="prev" class="btn prev"></span>
<span id="next" class="btn next"></span>
<span id="prevTop" class="btn prev"></span>
<span id="nextTop" class="btn next"></span>
<div id="picBox" class="picBox">
<ul class="cf">
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/01.jpg" alt="" /></a>
<span>网页素材-心形高清壁纸</span>
</li>
<li>
<a href="#" target="_blank" ><img width="680" height="380" src="images/02.jpg" alt="" /></a>
<span>字体变形logo创意欣赏,7款logo字体设计。</span>
</li>
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/03.jpg" alt="" /></a>
<span>logo设计之猎豹国外Logo欣赏,越来灵感源于自然。</span>
</li>
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/04.jpg" alt="" /></a>
<span>不用javaScript也能做出绚丽多彩的动画按钮。网页制作必备素材!</span>
</li>
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/05.jpg" alt="" /></a>
<span>HTML5酷炫相册集,一个非常棒的HTML5相册,有胶卷的感觉,上下滚动鼠标进行图片切换。</span>
</li>
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/06.jpg" alt="" /></a>
<span>CSS3模拟书签导航,此特效提供5种展示方式。</span>
</li>
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/07.jpg" alt="" /></a>
<span>一款酷炫电池设计PSD分层素材,该素材带有详细的分层,学习制作app图标的好案例。 </span>
</li>
<li>
<a href="#" target="_blank"><img width="680" height="380" src="images/08.jpg" alt="" /></a>
<span>红色礼品蝴蝶结矢量eps素材,金典实用礼品设计、包装设计、节日活动设计必备素材。</span>
</li>
</ul>
</div>
<div id="listBox" class="listBox">
<ul class="cf">
<li class="on"><i class="arr2"></i><img width="118" height="64" src="images/01s.jpg" alt="心壁纸" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/02s.jpg" alt="logo设计" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/03s.jpg" alt="猎豹logo" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/04s.jpg" alt="CSS3按钮" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/05s.jpg" alt="CSS3相册" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/06s.jpg" alt="CSS3动画" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/07s.jpg" alt="PSD电池素材" /></li>
<li><i class="arr2"></i><img width="118" height="64" src="images/08s.jpg" alt="蝴蝶结素材" /></li>
</ul>
</div>
</div>
<script type="text/javascript">
<!--
(function(){
function G(s){
return document.getElementById(s);
}
function getStyle(obj, attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj, false)[attr];
}
}
function Animate(obj, json){
if(obj.timer){
clearInterval(obj.timer);
}
obj.timer = setInterval(function(){
for(var attr in json){
var iCur = parseInt(getStyle(obj, attr));
iCur = iCur ? iCur : 0;
var iSpeed = (json[attr] - iCur) / 5;
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
obj.style[attr] = iCur + iSpeed + 'px';
if(iCur == json[attr]){
clearInterval(obj.timer);
}
}
}, 30);
}
var oPic = G("picBox");
var oList = G("listBox");
var oPrev = G("prev");
var oNext = G("next");
var oPrevTop = G("prevTop");
var oNextTop = G("nextTop");
var oPicLi = oPic.getElementsByTagName("li");
var oListLi = oList.getElementsByTagName("li");
var len1 = oPicLi.length;
var len2 = oListLi.length;
var oPicUl = oPic.getElementsByTagName("ul")[0];
var oListUl = oList.getElementsByTagName("ul")[0];
var w1 = oPicLi[0].offsetWidth;
var w2 = oListLi[0].offsetWidth;
oPicUl.style.width = w1 * len1 + "px";
oListUl.style.width = w2 * len2 + "px";
var index = 0;
var num = 5;
var num2 = Math.ceil(num / 2);
function Change(){
Animate(oPicUl, {left: - index * w1});
if(index < num2){
Animate(oListUl, {left: 0});
}else if(index + num2 <= len2){
Animate(oListUl, {left: - (index - num2 + 1) * w2});
}else{
Animate(oListUl, {left: - (len2 - num) * w2});
}
for (var i = 0; i < len2; i++) {
oListLi[i].className = "";
if(i == index){
oListLi[i].className = "on";
}
}
}
oNextTop.onclick = oNext.onclick = function(){
index ++;
index = index == len2 ? 0 : index;
Change();
}
oPrevTop.onclick = oPrev.onclick = function(){
index --;
index = index == -1 ? len2 -1 : index;
Change();
}
for (var i = 0; i < len2; i++) {
oListLi[i].index = i;
oListLi[i].onclick = function(){
index = this.index;
Change();
}
}
})()
//-->
</script>
</div>
</body>
</html>
CSS代码(style.css):
@charset "utf-8";body,ul,dl,dd,dt,ol,li,p,h1,h2,h3,h4,h5,h6,textarea,form,select,fieldset,table,td,div,input{margin:0;padding:0;-webkit-text-size-adjust:none}
h1,h2,h3,h4,h5,h6{font-size:12px;font-weight:normal}
a img{border:0}
body{color:#333;text-align:center;font:12px "宋体";}
ul,ol,li{list-style-type:none;vertical-align:0}
a{outline-style:none;color:#535353;text-decoration:none}
a:hover{color:#D40000;text-decoration:none}
.mod18Box{padding:10px;border:1px solid #CCC;margin:0px auto;width:680px;background:#FFF;box-shadow:0px 1px 5px #CCCCCC}
.mod18{width:680px;height:406px;margin:0px auto;position:relative;background:#f7f7f7;}
.mod18 .btn{position:absolute;width:15px;height:70px;top:336px;cursor:pointer;z-index:99;font-size:50px;font-weight:bold;}
.mod18 .prev{left:0;background:url(../images/prevBtn.png) no-repeat;}
.mod18 #prevTop,.mod18 #nextTop{top:140px;width:46px;height:48px;}
.mod18 #prevTop{background:url(../images/prevBtnTop.png) 0 0 no-repeat;}
.mod18 #nextTop{background:url(../images/nextBtnTop.png) 0 0 no-repeat;}
.mod18 .next{right:0;background:url(../images/nextBtn.png) no-repeat;}
.mod18 li{float:left;}
.mod18 .cf li{position:relative;color:#fff;}
.mod18 .cf a{display:block;width:680px;height:330px;position:absolute;color:#fff;}
.mod18 .cf li span{display:block;width:640px;position:absolute;left:0;bottom:0;padding:10px 20px;line-height:22px;text-align:left;background:rgba(0,0,0,0.6);filter:progid:DXImageTransform.Microsoft.gradient( GradientType = 0,startColorstr = "#60000000",endColorstr = "#60000000");}
.mod18 .picBox{height:330px;position:relative;overflow:hidden;}
.mod18 .picBox ul{height:330px;position:absolute;}
.mod18 .picBox li{width:680px;height:330px;}
.mod18 .listBox{width:642px;height:70px;margin:0 auto;position:relative;padding:6px 0 0px;overflow:hidden;}
.mod18 .listBox ul{height:100px;position:absolute;}
.mod18 .listBox li{width:129px;height:70px;cursor:pointer;position:relative;}
.mod18 .listBox li i{display:none;}
.mod18 .listBox li a{display:block;width:124px;height:70px;}
.mod18 .listBox li img{width:124px;height:70px;}
.mod18 .listBox .on img{width:118px;height:64px;border:3px solid #ff6600;}
.mod18 .listBox .on i{display:block;}