jQuery animate working in fiddle but not smooth online

后端 未结 2 903
情书的邮戳
情书的邮戳 2021-01-14 04:18

I\'ve made a sort of accordion with three expanding divs (#a, #b, #c) in fiddle, but when I save it locally and open it in a browser t

相关标签:
2条回答
  • 2021-01-14 04:48

    Try using single click event handler for animations with .animate() easings property set to "linear", css transition for effects, set width of .middle div elements to 33%

    $(".middle div").click(function() {
    
      $(this).siblings().animate({
        width: "10%",
        opacity: 0.6
      }, 0, "linear");
     
      $(this).animate({
        width: "80%",
        opacity: 1
      }, 0, "linear");
      
    });
    div.inner {
      max-width: 0;
      display: table-cell;
      overflow: hidden;
    }
    div.outer {
      display: table;
      overflow: hidden;
      width: 100%;
      height: 100%;
    }
    div.middle {
      display: table-row;
      overflow: hidden;
    }
    #holder {
      width: 100%;
      height: 100%;
      margin: 0px auto;
      overflow: hidden;
      position: fixed;
    }
    #a {
      width: 33%;
      height: 100%;
      background-color: red;
    }
    #b {
      width: 33%;
      height: 100%;
      background-color: blue;
    }
    #c {
      width: 33%;
      height: 100%;
      background-color: green;
    }
    .wrapper {
      height: 90vh;
      overflow: hidden;
    }
    #a,
    #b,
    #c {
      transition: width 500ms, opacity 500ms;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
    </script>
    <div class="wrapper">
      <div class="outer">
        <div class="middle">
          <div class="inner" id="a">1</div>
          <div class="inner" id="b">2</div>
          <div class="inner" id="c">3</div>
        </div>
      </div>
    </div>

    jsfiddle http://jsfiddle.net/tJugd/3798/

    0 讨论(0)
  • 2021-01-14 04:54

    Try this

    window.onload = function() {
        [].forEach.call(document.querySelectorAll('.inner'), function(el) {
          el.addEventListener('click', function(e) {
            this.parentElement.className = 'middle ' + this.id;
          });
        });
    
      } //]]>
    div.inner {
      max-width: 0;
      display: table-cell;
      overflow: hidden;
    }
    div.outer {
      display: table;
      overflow: hidden;
      width: 100%;
      height: 100%;
    }
    div.middle {
      display: table-row;
      overflow: hidden;
    }
    #holder {
      width: 100%;
      height: 100%;
      margin: 0px auto;
      overflow: hidden;
      position: fixed;
    }
    #a {
      height: 100%;
      background-color: red;
    }
    #b {
      height: 100%;
      background-color: blue;
    }
    #c {
      height: 100%;
      background-color: green;
    }
    #a,
    #b,
    #c {
      width: 10%;
      opacity: 0.6;
      transition: all 3000ms;
    }
    .middle.a #a,
    .middle.b #b,
    .middle.c #c {
      width: 80%;
      opacity: 1;
    }
    .wrapper {
      height: 90vh;
      overflow: hidden;
    }
    <html>
    
    <head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <title>- jsFiddle demo</title>
    </head>
    <body>
      <div class="wrapper">
        <div class="outer">
          <div class="middle c">
            <div class="inner" id="a">1</div>
            <div class="inner" id="b">2</div>
            <div class="inner" id="c">3</div>
          </div>
        </div>
        <div class="wrapper">
    
        </div>
      </div>
    </body>
    
    </html>

    0 讨论(0)
提交回复
热议问题