先上效果图:
那接下去就是通过js代码将图片完整显示出来。
window.onload = function(){
var oPicList = document.getElementById("picList");
var iLiW = 25;
var sHtml = "";
var iLength = oPicList.clientWidth/iLiW;
for(var i=0; i
sHtml += '
';}
oPicList.innerHTML=sHtml;
}
此时,效果如下图:
可以看出有一个问题:
从中间分开,右边的每个 li 元素中的左边黑色面都显示出来了。
原因:
li 元素使用 position属性为relative,后面的元素层级会比前面的高。
第二个li元素会覆盖第一个元素右侧黑边; 第三个会遮住第二个的右侧黑边 ......
到中间分开了。右边的 第二个元素左侧黑边遮住了第一个元素 ......
所以黑边出来了。
解决办法:
以中间为分界点。左边的层级越来越高。右边的li元素层级越来越低。
这样,右侧的每个 li 元素的黑边因为层级比前一个元素弱所以被前一个元素遮住了。
所以通过js设置样式,给style标签设置 id 值,并定义一个ostyle 变量,通过它来设置style样式。
var oCss = document.getElementById("css");
var oStyle = "";
var index = 0;
for(var i=0; i
i>iLength/2?index--:index++;
oStyle += "#picList li:nth-of-type(" +(i+1)+ "){ z-index: " +index+ "}";
oStyle += "#picList li:nth-of-type(" +(i+1)+ ") a{ background-position: -" +i*iLiW + "px 0px; }";
sHtml += '
';}
oPicList.innerHTML=sHtml;
oCss.innerHTML += oStyle;
此时,效果如图:
我们旋转45度看一下效果:
正常,接下去设置下按钮。
html模板改进:
css:
#btns{ padding: 50px; height: 30px; }
#btns li{ height: 30px; width: 30px; background-color: #000; color: #fff; font-size:16px; font-weight: bold; line-height: 30px; text-align:center; margin: 0 10px; border-radius: 50%; float: left; list-style: none; cursor: pointer;}
#btns .active{ background-color: #f60; }
效果如下:
分析:
获取每个 li 元素
点击1,其实是旋转-90度;点击2,旋转-180度;点击3,旋转-270度;点击4,旋转-360度。
js代码:
3D图片旋转轮播效果结束
不积跬步无以至千里