【问题标题】:Show link bullets with image slider?显示带有图像滑块的链接项目符号?
【发布时间】:2015-11-03 00:52:18
【问题描述】:

这是我的图像滑块代码,一切正常,预计项目符号导航。 我不知道如何使项目符号可单击以跟踪此滑块的图像...如果滑块向右移动,我将尝试正常工作,但如果我单击左按钮图像混合位置并且项目符号不跟踪右图像。 有人可以帮我吗?

$(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>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    我做了这些改变:

    1. 添加一个名为 lastBulletActive 的全局变量来存储最后一个活动项目符号,初始化为零,并更改每个左键单击或右键单击或项目符号单击
    2. 将持续时间作为参数传递给函数moveLeft 和moveRight
    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();
      });
      

    结果在sn-p中

    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', '');
      });
    }
    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;
    }
    <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>

    【讨论】:

    • 你能再帮我一次吗?我必须在这里做什么才能让这个滑块自动启动,每 5 秒改变一次正确方向的幻灯片
    • 你可以像我的帖子stackoverflow.com/questions/33391805/…一样使用setinterval
    • 项目符号链接混合位置图像出现问题我不知道为什么
    • 我尝试使用下面的两个函数 defineSize();一切正常,但是在我单击左右按钮滑块更改位置后的某个时间点,将最后一个图像放在第一个位置...我不知道为什么
    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多