2

私はCSSとJavascriptに非常に慣れていません.一種のプロジェクトとして、水平方向と垂直方向の両方に移動するスライダーに取り組んでいます。私はこのガイドをモデルとして使用しており、ほとんどが実用的なものを持っています。

ただし、スライダーを標準の原点 (つまり、一番左と一番上のスライド) ではなく、別のカスタマイズ可能なポイント (たとえば、水平と垂直) で「開始」したいと考えています。利用可能なスライドの中心にあり、これを行うのに役立つものは何もありません。マージン、位置、およびパディングをいじってみましたが、すべてがスライダーを台無しにするだけです。ページロード時に表示されるスライドを変更する方法を知っている人はいますか?

これが私がこれまでに持っているCSSです:

    .testprojbody
        {
        background-color: black;
        padding: 0;
        overflow: hidden;
        }
    .slider-holder
        {
        width: 98%;
        height: 665px;
        border: 2px black solid;
        background-color: white;
        float: center;
        margin-left: 9px;
        }
    .slider
        {
        width: 987px;
        height: 610px;
        overflow: hidden;
        float:center;
        margin-top: 25px;
        border: 2px black solid;
        margin-left: 35px;
        }
    .holder
        {
        width: 200%;
        height: 200%;
        position: relative;
        }
    .slide
        {
        float: left;
        width: 987px;
        height: 610px;
        position: relative;
        }
    .slider-navright 
        {
          text-align: center;
          margin: 310px 0 0 1030px;
          position: absolute;
        }
    .slider-navright a {
          width: 0;
          height: 0;
          display: inline-block;
          overflow: hidden;
          text-indent: -9999px;
          border-top: 40px solid transparent;
          border-bottom: 40px solid transparent;
          border-left: 20px solid #999;
        }
    .slider-navleft {
          text-align: center;
          margin: 310px 0 0 12px;
          position: absolute;
        }
    .slider-navleft a {
          width: 0;
          height: 0;
          display: inline-block;
          overflow: hidden;
          text-indent: -9999px;
          border-top: 40px solid transparent;
          border-bottom: 40px solid transparent;
          border-right: 20px solid #999;
        }
    .slider-navtop {
          text-align: center;
          margin: 2px 0 0 501px;
          position: absolute;
        }
    .slider-navtop a {
          width: 0;
          height: 0;
          display: inline-block;
          overflow: hidden;
          text-indent: -9999px;
          border-left: 40px solid transparent;
          border-right: 40px solid transparent;
          border-bottom: 20px solid #999;
        }
    .slider-navbot {
          text-align: center;
          margin: 642px 0 0 501px;
          position: absolute;
        }
    .slider-navbot a {
          width: 0;
          height: 0;
          display: inline-block;
          overflow: hidden;
          text-indent: -9999px;
          border-left: 40px solid transparent;
          border-right: 40px solid transparent;
          border-top: 20px solid #999;
        }

これは、ナビゲーションとアニメーションなどを可能にする Javascript です。

<script type="text/javascript">
     var positionH = 0
     var positionV = 0
        $(document).ready(function(){
            var slider = {

  el: {
    slider: $("#slider"),
    allSlides: $(".slide"),
    sliderNavRight: $(".slider-navright"),
    sliderNavLeft: $(".slider-navleft"),
    sliderNavTop: $(".slider-navtop"),
    sliderNavBot: $(".slider-navbot"),
  },

  timing: 400,
  slideWidth: 987,
  slideHeight: 610,

  // In this simple example, might just move the
  // binding here to the init function
  init: function() {
    this.bindUIEvents();
  },

  bindUIEvents: function() {
    // nav code
    this.el.sliderNavRight.on("click", "a", function(event) {
      slider.handleNavRightClick(event, this);
    });
    this.el.sliderNavLeft.on("click", "a", function(event) {
      slider.handleNavLeftClick(event, this);
    });
    this.el.sliderNavTop.on("click", "a", function(event) {
      slider.handleNavTopClick(event, this);
    });
    this.el.sliderNavBot.on("click", "a", function(event) {
      slider.handleNavBotClick(event, this);
    });
  },


  handleNavRightClick: function(event, el) {
    positionH+=1;
    event.preventDefault();
    this.el.slider.animate({
      scrollLeft: this.slideWidth * positionH
    }, this.timing);
  },

  handleNavLeftClick: function(event, el) {
    positionH-=1;
    event.preventDefault();
    this.el.slider.animate({
      scrollLeft: this.slideWidth * positionH
    }, this.timing);
  },

  handleNavTopClick: function(event, el) {
    event.preventDefault();
    positionV--;
    this.el.slider.animate({
      scrollTop: this.slideHeight * positionV
    }, this.timing);
  },

  handleNavBotClick: function(event, el) {
    event.preventDefault();
    positionV++;
    this.el.slider.animate({
      scrollTop: this.slideHeight * positionV
    }, this.timing);
  }, 
};
slider.init();});
    </script>

  <script type="text/javascript">

//arrow functions
$(document.documentElement).keydown(function(event){
  if (event.keyCode == 39){
    //go right
    event.preventDefault();
    $('.slider-navright a')
      .click();
  } else if (event.keyCode == 37){
    //go left
    event.preventDefault();
    $('.slider-navleft a')
      .click();
  } else if (event.keyCode == 38){
    //go up
    event.preventDefault();
    $('.slider-navtop a')
      .click();
  } else if (event.keyCode == 40){
    //go down
    event.preventDefault();
    $('.slider-navbot a')
      .click();
  }
});

// makes slider unselectable AND makes arrow nav work better
$(".slider").disableSelection();

  </script>

関連する HTML は次のとおりです。

<body class="testprojbody">
  <div class="slider-holder">
    <div class="slider" id="slider">
        <div class="holder">
            <div class="slide" id="slide-x0y0"></div>
            <div class="slide" id="slide-x1y0"></div>
            <div class="slide" id="slide-x0yA"></div>
        <div class="slide" id="slide-x0y0"></div>
        </div>
    </div>
    <nav class="slider-navright">
      <a href="#">Move Right</a>
    </nav>
  <nav class="slider-navleft">
    <a href="#">Move Left</a>
  </nav>
  <nav class="slider-navtop">
    <a href="#">Move Up</a>
  </nav>
  <nav class="slider-navbot">
    <a href="#">Move Down</a>
  </nav>
 </div>
</body>

</html>

私が言ったように、これが理解できることを願っています. それでも、誰かが助けることができれば、それは大歓迎です!

ありがとう。

4

1 に答える 1

1

JavaScript の最初の行が探しているものである可能性があります。

の値を変更しようとしましたか

var positionH = 0
var positionV = 0

あなたが望む位置に?

編集

わかりましたので、これらの変数を使用できるようにするには、init メソッドにもう少しコードを追加する必要があります...

init: function() {
    this.bindUIEvents();
    this.el.slider.scrollLeft(positionH);
    this.el.slider.scrollTop(positionV);
}

次に、positionH 変数と positionV 変数を変更します。

于 2013-06-01T22:41:27.670 に答える