用图像滑块显示链接项目符号?

时间:2015-11-02 08:12:49

标签: javascript jquery html css

这是我的图像代码滑块,一切工作正常,期望子弹导航。 我无法想象如何使子弹可点击以跟踪此滑块的图像...如果滑块向右移动我将尝试工作正常但如果我点击左按钮图像混合位置和子弹不跟踪右图像。 有人能帮助我吗?

$(document).ready(function() {
  var triggers = $('ul.triggers li');
  var lastElem = triggers.length-1;
  var target;
  triggers.first().addClass('active');

  function sliderResponse(target) {
    triggers.removeClass('active').eq(target).addClass('active');
  }

  triggers.click(function() {
    if ( !$(this).hasClass('active') ) {
      target = $(this).index();
      sliderResponse(target);
    }
  });

  $('.left').click(function () {
    target = $('ul.triggers li.active').index();
    lastElem = triggers.length-1;
    target === 0 ? target = lastElem : target = target-1;
    sliderResponse(target);
    moveLeft();
  });

  $('.right').click(function () {
    target = $('ul.triggers li.active').index();
    target === lastElem ? target = 0 : target = target+1;
    sliderResponse(target);
    moveRight();
  });

  $('#ud_slider ul li:last-child').prependTo('#ud_slider ul');


  defineSize();


});

$(window).on("resize",defineSize);

function defineSize(){
  var windowWidth = $(window).width();

  $('.ud_slide, #slider_container').css({width:windowWidth});
  var slideCount = $('#ud_slider ul li').length;
  var slideWidth = $('#ud_slider ul li').width();
  var sliderUlWidth = slideCount * slideWidth;

  $('#ud_slider ul').css({
    width: sliderUlWidth,
    marginLeft: -slideWidth
  });

}

function moveLeft() {
  var slideWidth = $('#ud_slider ul li').width();
  $('#ud_slider ul').animate({
    left: +slideWidth
  }, 500, function () {
    $('#ud_slider ul li:last-child').prependTo('#ud_slider ul');
    $('#ud_slider ul').css('left', '');
  });
}

function moveRight() {
  var slideWidth = $('#ud_slider ul li').width();
  $('#ud_slider ul').animate({
    left: -slideWidth
  }, 500, function () {
    $('#ud_slider ul li:first-child').appendTo('#ud_slider ul');
    $('#ud_slider ul').css('left', '');
  });
}
body, html, p {margin:0; padding:0;}


#slider_container{position:relative;margin:0 auto;}
#ud_slider{height:640px;overflow:hidden;}

.ud_slide{
  background-size:cover;
  height:640px;
  background-position:center;
  background-repeat:no-repeat;
}

#ud_slider ul {
  margin: 0;
  padding: 0;
  list-style: none;
  position: relative;
}

#ud_slider ul li {
  display: block;
  float: left;
  margin: 0;
  padding: 0;
  position: relative;
}

.ud_slider_1{background-image: url('https://gameonsnacks.com/wp-content/uploads/2013/02/Adam-Diaz.jpg');}
.ud_slider_2{background-image: url('http://carolinealberoni.files.wordpress.com/2014/04/online-games.jpg');}
.ud_slider_3{background-image: url('https://watergamespc.weebly.com/uploads/3/0/1/9/30199027/5208331.jpg');}
.ud_slider_4{background-image: url('http://knowledgeoverflow.com/wp-content/uploads/2013/01/planetside_2_game-wide.jpg');}


.button{position:absolute;top:50%;margin-top:-128px;cursor:pointer;}
.left{left:0;}
.right{right:0;}

.triggers{position:absolute;bottom:-20px;width:240px;padding:0;margin:0;left:50%;margin-left:-120px;}
ul.triggers li.active {background-color:red;}
ul.triggers li {
  float:left;
  list-style:none; 
  margin:0 5px;
  cursor:pointer;
  background-color:#000;
  width:50px;
  height:5px;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>Vjezbanje</title>
    <link rel="stylesheet" href="css/style.css">
  </head>
  <body>
    <div id="slider_container">
      <div id="ud_slider">

        <ul>
          <li>
            <div class="ud_slider_1 ud_slide">

            </div>
          </li>
          <li>
            <div class="ud_slider_2 ud_slide">

            </div>				
          </li>
          <li>
            <div class="ud_slider_3 ud_slide">
            </div>
          </li>
          <li class="final">
            <div class="ud_slider_4 ud_slide">
            </div>
          </li>
        </ul>

        <div class="button left"><img src="img\back.png" /></div>
        <div class="button right"><img src="img\front.png" /></div>

      </div>

      <ul class="triggers">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>

    </div>

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="js/funkcija2.js"></script>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

我做了这些改动:

  1. 添加一个全局变量nammed lastBulletActive以存储最后一个活跃的项目符号,初始化为零,并更改每个左侧clik或右键单击或项目符号单击
  2. 将持续时间作为参数传递给函数moveLeftmoveRight
  3. 为项目符号点击事件添加事件$("body").on("click", "ul.triggers li", function()

    $("body").on("click", "ul.triggers li", function() {
        var curBulletActive = $(this).index();
        if(curBulletActive<lastBulletActive){
            var toMove = lastBulletActive - curBulletActive;
            console.log(toMove + " left");
            for (i = 0; i < toMove; i++) {
                moveLeft(100);
            }
        }
        else if(curBulletActive>lastBulletActive){
            var toMove = curBulletActive - lastBulletActive;
            console.log(toMove + " right");
            for (i = 0; i < toMove; i++) {
                moveRight(100);
            }      
        }
        sliderResponse(curBulletActive);
        lastBulletActive = $('ul.triggers li.active').index();
    });
    
  4. 结果在摘录

    &#13;
    &#13;
    var lastBulletActive = 0;
    $(document).ready(function() {
      var triggers = $('ul.triggers li');
      var lastElem = triggers.length-1;
      var target;
      triggers.first().addClass('active');
    
      function sliderResponse(target) {
        triggers.removeClass('active').eq(target).addClass('active');
      }
    
      triggers.click(function() {
        if ( !$(this).hasClass('active') ) {
          target = $(this).index();
          sliderResponse(target);
        }
      });
    
      $('.left').click(function () {
        target = $('ul.triggers li.active').index();
        lastElem = triggers.length-1;
        target === 0 ? target = lastElem : target = target-1;
        sliderResponse(target);
        moveLeft(500);
        lastBulletActive = $('ul.triggers li.active').index();
      });
    
      $('.right').click(function () {
        target = $('ul.triggers li.active').index();
        target === lastElem ? target = 0 : target = target+1;
        sliderResponse(target);
        moveRight(500);
        lastBulletActive = $('ul.triggers li.active').index();
      });
    
      $('#ud_slider ul li:last-child').prependTo('#ud_slider ul');
    
    
      $("body").on("click", "ul.triggers li", function() {
        var curBulletActive = $(this).index();
        if(curBulletActive<lastBulletActive){
          var toMove = lastBulletActive - curBulletActive;
          console.log(toMove + " left");
          for (i = 0; i < toMove; i++) {
            moveLeft(100);
          }
        }
        else if(curBulletActive>lastBulletActive){
          var toMove = curBulletActive - lastBulletActive;
          console.log(toMove + " right");
          for (i = 0; i < toMove; i++) {
            moveRight(100);
          }      
        }
        sliderResponse(curBulletActive);
        lastBulletActive = $('ul.triggers li.active').index();
      });
    
      defineSize();
    
    
    });
    
    
    $(window).on("resize",defineSize);
    
    function defineSize(){
      var windowWidth = $(window).width();
    
      $('.ud_slide, #slider_container').css({width:windowWidth});
      var slideCount = $('#ud_slider ul li').length;
      var slideWidth = $('#ud_slider ul li').width();
      var sliderUlWidth = slideCount * slideWidth;
    
      $('#ud_slider ul').css({
        width: sliderUlWidth,
        marginLeft: -slideWidth
      });
    
    }
    
    function moveLeft(duration) {
      var slideWidth = $('#ud_slider ul li').width();
      $('#ud_slider ul').animate({
        left: +slideWidth
      }, duration, function () {
        $('#ud_slider ul li:last-child').prependTo('#ud_slider ul');
        $('#ud_slider ul').css('left', '');
      });
    }
    
    function moveRight(duration) {
      var slideWidth = $('#ud_slider ul li').width();
      $('#ud_slider ul').animate({
        left: -slideWidth
      }, duration, function () {
        $('#ud_slider ul li:first-child').appendTo('#ud_slider ul');
        $('#ud_slider ul').css('left', '');
      });
    }
    &#13;
    body, html, p {margin:0; padding:0;}
    
    
    #slider_container{position:relative;margin:0 auto;}
    #ud_slider{height:640px;overflow:hidden;}
    
    .ud_slide{
      background-size:cover;
      height:640px;
      background-position:center;
      background-repeat:no-repeat;
    }
    
    #ud_slider ul {
      margin: 0;
      padding: 0;
      list-style: none;
      position: relative;
    }
    
    #ud_slider ul li {
      display: block;
      float: left;
      margin: 0;
      padding: 0;
      position: relative;
    }
    
    .ud_slider_1{background-image: url('https://gameonsnacks.com/wp-content/uploads/2013/02/Adam-Diaz.jpg');}
    .ud_slider_2{background-image: url('http://carolinealberoni.files.wordpress.com/2014/04/online-games.jpg');}
    .ud_slider_3{background-image: url('https://watergamespc.weebly.com/uploads/3/0/1/9/30199027/5208331.jpg');}
    .ud_slider_4{background-image: url('http://knowledgeoverflow.com/wp-content/uploads/2013/01/planetside_2_game-wide.jpg');}
    
    
    .button{position:absolute;top:50%;margin-top:-128px;cursor:pointer;}
    .left{left:0;}
    .right{right:0;}
    
    .triggers{position:absolute;bottom:-20px;width:240px;padding:0;margin:0;left:50%;margin-left:-120px;}
    ul.triggers li.active {background-color:red;}
    ul.triggers li {
      float:left;
      list-style:none; 
      margin:0 5px;
      cursor:pointer;
      background-color:#000;
      width:50px;
      height:5px;
    }
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="slider_container">
      <div id="ud_slider">
    
        <ul>
          <li>
            <div class="ud_slider_1 ud_slide">
    
            </div>
          </li>
          <li>
            <div class="ud_slider_2 ud_slide">
    
            </div>				
          </li>
          <li>
            <div class="ud_slider_3 ud_slide">
            </div>
          </li>
          <li class="final">
            <div class="ud_slider_4 ud_slide">
            </div>
          </li>
        </ul>
    
        <div class="button left"><img src="img\back.png" /></div>
        <div class="button right"><img src="img\front.png" /></div>
    
      </div>
    
      <ul class="triggers">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>
    
    </div>
    &#13;
    &#13;
    &#13;