1.图片放置:你需要把所有图片放入一个div(这里就把它的class叫做pics吧)中,再把pics放入一个更大的div(就命名为container吧)中,然后把container的宽度设为一张图片的宽度,再给它设置overflow:hidden。然后把pics的宽度设置为所有图片的总宽度。这样方便后面从左向右切换。如下图所示:
2.图片轮播。基本要领是,当点击next按钮的时候,将pics容器的left属性定义到下一张图片的位置,从而移动到下一张图片,例如,假设当前是第二张图片,那么点击按钮的时候应该把pics的left值设为-640*2 + 'px'(因为我这里用的图片都是-640px的)(当然这里还要加入一个计数器,当点到最后一张图片的时候,计数器置0)。
如果你不打算加入平滑移动的动画,那到这里就可以结束了。但是如果你打算加入动画,这里就有一个问题:当移动到最后一张图片的时候,继续点击,图片组会由最后一张长途跋涉回滚到第一张,这样用户体验很不好。理想的状态应当是,当你滚动到最后一张继续滚动的时候,应当像之前滚向下一张一样无缝滚动。不知道我说的清不清楚,大致就是:像手机屏幕一样,当你滑动到最后一屏的时候接着滑动,会直接滑回一屏,也就是循环滑动。
它的基本原理是,你要在正常的图片组的最后面加入一张缓冲图片(src和第一张图片相同),当幻灯片正处于最后一张图片的时候,点击滑动按钮,平滑滑动到这张缓冲图片,当用户下一次点击的时候,再悄悄地把图片置换回真正的第一张图片,然后再执行动画。由于置换回第一张图片的时候是立即执行的,所以用户不会发现图片已经回到了真正的第一张,这就实现了循环滑动。
新建一个文件夹dome,
在文件下新建一个文件夹img 放入5张名称为1,2,3,4,5 格式为“.jpg”的图片文件。
在新建一个dome.html 文件 内容如下:
<html>
<head>
<meta charset="UTF-8"/>
<title></title>
<style type="text/css">
*{margin: 0padding: 0}
#a1{
width: 600px
height: 500px
border: 10px silver solid
animation:backgroundImg 5s infinite
-webkit-animation:backgroundImg 5s infinite
}
@keyframes backgroundImg{
0%{background-color: #0000FF}
25%{background-color: #0099FF}
50%{background-color: #00FFFF}
75%{background-color: #99FFFF}
100%{background-color: #FFFFFF}
}
@-webkit-keyframes backgroundImg{
0%{background-color: #0000FF}
25%{background-color: #0099FF}
50%{background-color: #00FFFF}
75%{background-color: #99FFFF}
100%{background-color: #FFFF00}
}
#backImg{
width: 500px
height: 490px
/*border: 5px red solid*/
margin-left:45px
z-index: 100
background-size:100% 100%
}
a:hover{
background-color:#0000FF
border: 5px springgreen solid
width: 20px
}
a{
display: block
z-index:
width: 30px
height: 30px
text-align: center
line-height: 30px
color: beige
font-weight: 300
border-radius:50%
font-size: 2em
background-color:#0099FF
position: absolute
top: 255px
box-shadow: none
}
#right{
left:580px
}
span{
display: block
width: 50px
height: 10px
background-color: #99FFFF
float: right
margin-left: 20px
position: relative
bottom: 50px
right: 100px
}
#show{
width: 200px
height: 100px
border: 1px red solid
position: absolute
bottom: 230px
right: 150px
background-size:100% 100%
}
</style>
</head>
<body>
<div id="a1">
<a id="left">&lt</a>
<a id="right">&gt</a>
<div id="backImg"></div>
<div id="foot"></div>
</div>
<script type="text/javascript">
var div=document.getElementById("a1")
var backImg=document.getElementById("backImg")
var a_left=document.getElementById("left")
var a_right=document.getElementById("right")
var i=0
function backImage(){
i++
backImg.style.backgroundImage="url(img/" +i+".jpg)"
setTimeout(backImage,7000)
if(i>=5){
i=0
}
}
backImage()
a_left.onclick=function(){
i--
if(i<=0||i>5){
i=5
}
backImg.style.backgroundImage="url(img/" +i+".jpg)"
}
a_right.onclick=function(){
i++
if(i<=0||i>5){
i=1
}
backImg.style.backgroundImage="url(img/" +i+".jpg)"
}
for (var j = 0j <3j++) {
var span=document.createElement("span")
span.id="span_"+j
div.appendChild(span)
span.onmouseover=function(){
show(event)
}
}
function show(e) {
backImg.style.opacity="0.5"
var span = e.target
var div = document.createElement("div")
div.id = "show"
span.parentNode.appendChild(div)
console.log(span.id)
if(span.id=="span_2"){
i-=1
console.log(i)
if(i<=0||i>5){
i=5
}
div.style.backgroundImage="url(img/" +i+".jpg)"
}else if(span.id=="span_1"){
div.style.backgroundImage="url(img/" +i+".jpg)"
}else if(span.id=="span_0"){
i+=1
if(i<=0||i>5){
i=1
}
div.style.backgroundImage="url(img/" +i+".jpg)"
}
span.onmouseout = function() {
backImg.style.opacity="initial"
this.parentNode.removeChild(div)
}
span.onclick=function(){
backImg.style.backgroundImage="url(img/" +i+".jpg)"
}
}
</script>
</body>
</html>