Jquery滑块与左右滑动的问题

Jquery Slider Issues with right and left slide

本文关键字:问题 Jquery 左右      更新时间:2023-09-26

嗨,我有问题创建我的jquery滑块。我试着用动画来左右滑动图像。我想不出是什么问题。我做错了什么让图像左右滑动?谢谢!

我添加了一个代码片段,但它似乎lorempixel.com图像不显示在这里。

'use strict';
$(document).ready(function() {
  var total = 11;
  for (var i = 1; i < total; i++) {
    $('#slideshow .pics').append('<img src="http://lorempixel.com/500/300/food/' + i + '" />');
    $('#slideshow .pics').append('<b>Slide ' + i + '</b>.'); //add text to slide
    $('.circle').append('<i class="fa fa-circle"></i>');
  }
  function slideAnimationLeft(targetLeft) {
    var Pictures = $('.pics');
    return function() {
      Pictures.children('div:first').animate({
        'left': targetLeft + 'px'
      }, 1000, function() {
        Pictures.children('div:first').appendTo(Pictures).css('marginTop', '0px').fadeIn(2000);
      });
    };
  };
  /*   function slideAnimationRight(targetRight) {
         return function() {
             $('.pics img:nth-child').animate({
                     'right': targeRight + 'px'},
                 1000);
         };
     };*/
  $('.left').click(slideAnimationLeft(-300));
  $('.right').click(slideAnimationRight(300));
});
/* http://meyerweb.com/eric/tools/css/reset/
   v2.0 | 20110126
   License: none (public domain)
*/
/* line 6, ../sass/_reset.scss */
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
/* line 27, ../sass/_reset.scss */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}
/* line 31, ../sass/_reset.scss */
body {
  line-height: 1;
}
/* line 34, ../sass/_reset.scss */
ol,
ul {
  list-style: none;
}
/* line 37, ../sass/_reset.scss */
blockquote,
q {
  quotes: none;
}
/* line 40, ../sass/_reset.scss */
blockquote:before,
blockquote:after,
q:before,
q:after {
  content: '';
  content: none;
}
/* line 45, ../sass/_reset.scss */
table {
  border-collapse: collapse;
  border-spacing: 0;
}
/* line 50, ../sass/_reset.scss */
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
/* line 6, ../sass/styles.scss */
#slideshow {
  width: 500px;
  height: 300px;
  margin: 0 auto;
  overflow: hidden;
  margin-top: 10%;
}
/* line 13, ../sass/styles.scss */
#slideshow > img {
  position: absolute;
  display: block;
}
/* line 18, ../sass/styles.scss */
#slideshow .pics {
  z-index: 1;
}
/* line 22, ../sass/styles.scss */
#slideshow .control {
  z-index: 2;
}
/* line 26, ../sass/styles.scss */
#slideshow > div {
  width: 500px;
  height: 300px;
  overflow: hidden;
  position: absolute;
}
/* line 34, ../sass/styles.scss */
.circle {
  text-align: center;
}
/* line 40, ../sass/styles.scss */
i.fa-circle {
  opacity: 0.7;
  margin-top: 20%;
  padding: 2px;
}
/* line 48, ../sass/styles.scss */
i.fa-angle-left {
  margin-top: 20%;
  opacity: 0.7;
  z-index: 100;
}
/* line 56, ../sass/styles.scss */
i.fa-angle-right {
  margin-top: 20%;
  margin-left: 87.75%;
  opacity: 0.7;
  z-index: 100;
}
<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>Assignment 2</title>
  <link rel="stylesheet" href="stylesheets/styles.css">
  <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
</head>
<body>
  <div id="slideshow">
    <div class="control">
      <a href="#" class="left"><i class="fa fa-angle-left fa-5x left"></i></a>
      <a href="#" class="right"><i class="fa fa-angle-right fa-5x right"></i></a>
      <div class="circle">
      </div>
    </div>
    <div class="pics">
    </div>
  </div>
  <script type="text/javascript" src="bower_components/jquery/dist/jquery.js"></script>
  <script type="text/javascript" src="bower_components/jquery-ui/jquery-ui.js"></script>
  <script type="text/javascript" src="main.js"></script>
</body>
</html>

下面是一个实际的例子:http://jsfiddle.net/hxwfodd3/

这些是我为解决你的代码问题所做的主要事情:

$('.left').click(slideAnimationLeft(-300));

这会导致在页面加载时立即运行slideAnimationLeft(-300),这在本例中不是您想要的。

如果用户单击,则需要添加function()以使其工作。

$('.left').click(function() { slideAnimationLeft(-300) } );

其次,因为你有两个div.left,函数运行两次。这将解决

$('.left >').click(function() { slideAnimationLeft(-300) } );

我看到你试图在这里"找到"第一张图片的div: Pictures.children('div:first').animate({尽管div并不是首先创建的

把你的代码改成:

$('#slideshow .pics').append('<div>');
$('#slideshow .pics div:last').append('<img src="http://lorempixel.com/500/300/food/' + i + '" />');
$('#slideshow .pics div:last').append('<b>Slide ' + i + '</b>.'); //add text to slide
$('#slideshow .pics').append('</div>');

由于缺少css代码,很酷的滑动效果不起作用:

#slideshow .pics div {
   position:relative;
}

在附加后重置left。改变这个:

Pictures.children('div:first').appendTo(Pictures).css('marginTop', '0px').fadeIn(2000);

这:

Pictures.children('div:first').appendTo(Pictures).css('marginTop', '0px').css('left', '0px').fadeIn(2000);

实例:http://jsfiddle.net/hxwfodd3/