代码之家  ›  专栏  ›  技术社区  ›  Taha Paksu

附加后删除类

  •  0
  • Taha Paksu  · 技术社区  · 6 年前

    $("<div class='column column-hiding'>Content</div>")
        .appendTo(container)
        .removeClass("column-hiding");
    

    还尝试了:

    $("<div class='column'>Content</div>")
        .appendTo(container)
        .addClass("column-showing");
    

    .column {
         transform: translateX(0%);
         transition: all 0.3s ease-out;
     }
    
     .column-hiding {
         transform: translateX(-100%);
         transition: all 0.3s ease-out;
     }
    

    .column {
         transform: translateX(-100%);
         transition: all 0.3s ease-out;
     }
    
     .column-showing {
         transform: translateX(0%);
         transition: all 0.3s ease-out;
     }
    

    这样,它会立即显示列。此方法在使用 setTimeout 延迟,但是有没有其他选项可以用来确定应该添加/删除类的时间?我还试着添加一个 transition-delay

    注意:我使用的是jquery3。

    **编辑**

    下面是一个片段:

    // this animates instantly
    
    $("<div class='column column-hiding'>Content</div>")
      .appendTo($("#container"))
      .removeClass("column-hiding");
    
    // this is working
    
    var column = $("<div class='column col2 column-hiding'>Content</div>")
      .appendTo($("#container"));
    setTimeout(function(){
      column.removeClass("column-hiding");
    }, 500);
    #container {
      width: 100px;
      height: 300px;
      background: silver;
      overflow: hidden;
    }
    
    .column {
      transform: translateX(0%);
      transition: all 0.3s ease-out;
      background: blue;
      width: 100px;
      height: 100px;
    }
    
    .column-hiding {
      transform: translateX(-100%);
      transition: all 0.3s ease-out;
    }
    
    .col2 {
    background: red
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="container"></div>
    1 回复  |  直到 6 年前
        1
  •  2
  •   Karthik    6 年前

    'appendTo' 方法。。。有一个jquery方法叫做 $.when() 要执行回调函数。。。在这里找到代码的工作示例 https://jsfiddle.net/xpvt214o/738145/ .

    var column = $("<div class='column col2 column-hiding'>Content</div>");
    
    $.when(column.appendTo($("#container"))).then(function(){
        column.removeClass("column-hiding");
    });
    

    或者

    使用 delay() queue(), dequeue() 获取此输出的方法。。。 https://jsfiddle.net/xpvt214o/738391/

    $("<div class='column column-hiding'>Content</div>")
     .appendTo($("#container"))
     .delay(1000)
     .queue(function(){
       $(this).removeClass("column-hiding").dequeue();
    });