你看看你的html代码和css3代码是不是有问题,我的一开始出不来,就是因为html写错了
你css样式写在行内才可以像视频内这样写,不然就应该用
list.style.left = list.offsetLeft + offset + 'px' ;
也可以console.log()看看俩个的属性,就知道了。
哦哦,谢谢哈
你的list 不存在啊 你var 的是 那个就给那个添加onclick事件
首先呢你的函数名字前后不一致,然后parseInt,你要注意字母大小写
我的也不动,但是它在dw里面可以动,在网页上浏览就不动了
这个代码没有添加任何事件啊,只是取了元素,当然没有效果~
上面不是var list = document.getElementById(”list“)了么 这时候你获取到的元素存在变量list里面了 就是var后面那个变量里面了 然后调用这个元素的方法
js代码
getElementById()和getElementsByTagName()的方法名也是有错
next.onclick=function(){
animate(-3000);
}
prev.onclick=function(){
animate(3000);
list.style.left = parseInt(list.style.left) - 3000 + 'px';
//同理下面的也是
<
a
href
=
"javascript:;"
class
=
"arrow"
id
=
"prev"
><</
a
>
<
a
href
=
"javascript:;"
class
=
"arrow"
id
=
"next"
>></
a
>
你有多少张照片?我复制你的代码去运行,点击箭头会切换喔
<script type="text/javascript">
window.onload=function(){
var box=document.getElementById("box");
var list=document.getElementById("list");
var buttoms=document.getElementById("buttoms").getElementsByTagName("span");
var prev=document.getElementById("prev");
var next=document.getElementById("next");
}(将这个大括号移到</script>前面)
// function animate(offset){
// list.style.left=parseInt(list.style.left)+offset+"px";
// }
next.onclick=function(){
list.style.left=parseInt(list.style.left)-900+"px";
}
prev.onclick=function(){
list.style.left=parseInt(list.style.left)+900+"px";
}
</script>
那你设置的List 全改为小写
你怎么没用pastint
没有完整的代码,很难正确的回答你。
每张图片的width=600;在图一之前有图5,显示图一,left为-600
先解释这两行代码:
offset = '+=' + offset;
和
offset = '-=' + Math.abs(offset);
在JavaScript里面,字符串+数字=字符串,( •̀ ω •́ )
一开始,该函数接收到的offset为一个值,+600或-600,
这里的if…else…就是让offset变成字符串“+=600”或“-=600”
为什么呢?
jQuery 动画 - animate() 方法
语法:
$(selector).animate({params},speed,callback);
必需的 params 参数定义形成动画的 CSS 属性。
可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
可选的 callback 参数是动画完成后所执行的函数名称。
↑ 说白了就是语法要求。
最后的两个if判断不用多说吧,就是把图片归位,因为一共有七张图,其中第一张和最后一张都是假图,
当扫到第一张“假图”时归位成图⑤(第六张),当扫到最后一张“假图”时归位成图①(第二张)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>轮播图</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
text-decoration: none;
}
body {
padding: 20px;
}
#container {
position: relative;
width: 600px;
height: 400px;
border: 3px solid #333;
overflow: hidden;
}
#list {
position: absolute;
z-index: 1;
width: 4200px;
height: 400px;
}
#list img {
float: left;
width: 600px;
height: 400px;
}
#buttons {
position: absolute;
left: 250px;
bottom: 20px;
z-index: 2;
height: 10px;
width: 100px;
}
#buttons span {
float: left;
margin-right: 5px;
width: 10px;
height: 10px;
border: 1px solid #fff;
border-radius: 50%;
background: #333;
cursor: pointer;
}
#buttons .on {
background: orangered;
}
.arrow {
position: absolute;
top: 180px;
z-index: 2;
display: none;
width: 40px;
height: 40px;
font-size: 36px;
font-weight: bold;
line-height: 39px;
text-align: center;
color: #fff;
background-color: RGBA(0, 0, 0, .3);
cursor: pointer;
}
.arrow:hover {
background-color: RGBA(0, 0, 0, .7);
}
#container:hover .arrow {
display: block;
}
#prev {
left: 20px;
}
#next {
right: 20px;
}
</style>
</head>
<body>
<!--父容器container存放所有内容,
子容器list存放图片。
子容器buttons存放按钮小圆点
-->
<div id="container">
<div id="list" style="left: -600px">
<img src="img/05.jpg" alt="1">
<img src="img/01.jpg" alt="1">
<img src="img/02.jpg" alt="2">
<img src="img/03.jpg" alt="3">
<img src="img/04.jpg" alt="4">
<img src="img/05.jpg" alt="5">
<img src="img/01.jpg" alt="5">
</div>
<div id="buttons">
<span index="1" class="on"></span>
<span index="2"></span>
<span index="3"></span>
<span index="4"></span>
<span index="5"></span>
</div>
<a href="javascript:;" id="prev" class="arrow"><</a>
<a href="javascript:;" id="next" class="arrow">></a>
</div>
<script>
window.onload=function (){
var container =document.getElementById('container');
var list=document.getElementById('list');
var buttons=document.getElementById('buttons').getElementsByTagName('span');//获取5个按钮
var prev=document.getElementById('prev');//上一个
var next=document.getElementById('next');//下一个
var index=1;
/*点亮小圆点*/
function showButton(){
for(var i=0;i<buttons.length;i++){
if(buttons[i].className=='on'){
buttons[i].className='';
break;
}
}
buttons[index-1].className='on';
}
/*箭头点击事件**/
function animate(offset){//封装按钮左右点击,传参offset
var newLeft=parseInt(list.style.left)+offset;
var time=300;//位移总时间
var interval=10;//位移间隔
var speed=offset/(time/interval);//每次位移量
function go(){
if((speed<0 && parseInt(list.style.left)>newLeft) || (speed >0&&parseInt(list.style.left)<newLeft)){
list.style.left=parseInt(list.style.left)+speed+'px';
/*定时器*/
setTimeout(go,interval);
}
else{
list.style.left=newLeft+'px';
/* 判断是否滚动到附属图上,滚动到附属图上归位*/
if(newLeft> -600){
list.style.left = -3000 + 'px';
}
if(newLeft< -3000){
list.style.left = -600 + 'px';
}
}
}
go();
}
next.onclick=function (){
if(index==5){
index=1;
}
else{
index +=1;
}
showButton();
animate(-600);//点击右箭头-600
}
prev.onclick=function (){
if(index==1){
index=5;
}
else{
index -= 1;
}
showButton();
animate(-600);//点击左箭头600
}
for(var i=0;i<buttons.length;i++){
//原始值
buttons[i].onclick=function (){
if(this.className=='on'){
return;
}
var myIndex=parseInt(this.getAttribute('index'));
var offset=-600 *(myIndex -index);
animate(offset);
index=myIndex;
showButton();
}
}
}
</script>
</body>
</html>
可以的,但是你实现了小圆点轮播之后,再实现左右轮播,测试起来,会不好测试。
<script src="js/new.js"></script>
我把style="left:-600px;"本来是写在style标签中的,后来挪到list标签后面才行,请问有啥区别吗,不一样吗
源代码下载在视屏右下角位置
在html文件list标签后加个style="left:-600px"就可以了
你把箭头和小圆点都放在图片的div里了,试着把图片还有箭头跟小圆点分开放
<div id="div0">
<div id="div1" style="left: -1350px;">
<a href="#"><img src="img/m5.jpg"/></a>
</div>
<a href="javascript:;" id="prev" class="arrow"><</a>
<a href="javascript:;" id="next" class="arrow">></a>
</div>
<style type="text/css">
.arrow{
display:none;
}
#div0:hover .arrow{
display: block;
}
</style>
检查下你的css样式设置对着么,上面的可参考下。