jQuery幻灯片效果不稳定

时间:2016-04-20 11:35:23

标签: jquery

所以我试图用jQuery的滑动功能做一种“点击这个来获得新东西”。

基本上我的问题是幻灯片动画是跳跃的,它是由我在.toggleO类中设置的边框引起的。明显的解决方案是摆脱边界,但我想保留它,所以我想知道在平稳过渡时是否有某种方法可以做到这一点?

以下是片段:

$(document).ready(function() {

  $(".toggleO").click(function() {
    $(".toggleO").slideUp(500);
    $(".toggledInfo").slideDown(500);
  });

  $(".toggleC").click(function() {
    $(".toggledInfo").slideUp(500);
    $(".toggleO").slideDown(500);
  });

});
#container {
  width: 500px;
  height: 350px;
  margin: 0px auto;
  font-family: arial;
  font-size: 11px;
  line-height: 13px;
}

#container .toggleO {
  width: 490px;
  height: 340px;
  background-image: url("http://ultraimg.com/images/8de3786443f8af4db9e4a29b8b658c00.jpg");
  cursor: crosshair;
  border: 5px solid black;
}

#container .toggleC {
  width: 500px;
  margin-top: 25px;
  font-family: georgia, times new roman, serif;
  font-size: 8px;
  text-transform: uppercase;
  letter-spacing: 1px;
  cursor: crosshair;
}

#container .toggledInfo {
  display: none;
}

#container .inside {
  padding: 50px;
  width: 400px;
  height: 260px;
  background-color: #000;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<div id='container'>
  <div class='toggleO'></div>

  <div class='toggledInfo'>
    <div class='inside'>
      here are links about my thing yep

      <div class='toggleC'>
        close
      </div>
    </div>
  </div>
</div>

以下是我fiddle的链接,因为它更容易在那里看到。

1 个答案:

答案 0 :(得分:0)

所需的更改:

  1. 我在#container.inside css中更改了你的css中的几行,因为它应该是250px而不是260px。

  2. 我改变的另一件事是我在&#39; toggleO&#39;中包含了一个包装div。 div以防止边框对动画的影响。从现在开始,动画将应用于包装器,而不是包含边框的toggleO。

  3. 第三个也是最重要的变化包括&#34;溢出:隐藏;&#34;在#container css中。这将删除应用上述步骤后剩余的小混蛋。

  4. 这是一个经过修改的jsfiddle:https://jsfiddle.net/o0LcoLg1/8/

    代码段:

    <html>
    <head>
      <script src="https://code.jquery.com/jquery-2.2.3.js" integrity="sha256-laXWtGydpwqJ8JA+X9x2miwmaiKhn8tVmOVEigRNtP4=" crossorigin="anonymous"></script>
      <style>
        #container {
          width: 500px;
          height: 350px;
          margin: 0px auto;
          font-family: arial;
          font-size: 11px;
          line-height: 13px;
          overflow: hidden; // for the little jerk
        }
        #container .toggleO {
          width: 490px;
          height: 340px;
          background-image: url("http://ultraimg.com/images/8de3786443f8af4db9e4a29b8b658c00.jpg");
          cursor: crosshair;
          border: 5px solid black;
        }
        #container .toggleC {
          width: 500px;
          margin-top: 25px;
          font-family: georgia, times new roman, serif;
          font-size: 8px;
          text-transform: uppercase;
          letter-spacing: 1px;
          cursor: crosshair;
        }
        #container .toggledInfo {
          display: none;
        }
        #container .inside {
          padding: 50px;
          width: 400px;
          height: 250px;
          background-color: #000;
          color: #fff;
        }
      </style>
      <script>
        $(document).ready(function() {
    
          $(".wrapper").click(function() {
            $(".wrapper").slideUp(500);
            $(".toggledInfo").slideDown(500);
          });
    
          $(".toggleC").click(function() {
            $(".toggledInfo").slideUp(500);
            $(".wrapper").slideDown(500);
          });
    
        });
      </script>
    </head>
    <body>
      <div id='container'>
        <div class="wrapper">
          <div class='toggleO'></div>
        </div>
        <div class='toggledInfo'>
          <div class='inside'>
            here are links about my thing yep
    
            <div class='toggleC'>
              close
            </div>
          </div>
        </div>
      </div>
    </body>
    </html>