javascript - 使用 GreenSock (GSAP) 的 float 输入标签

标签 javascript jquery animation gsap

我正在尝试使用 GreenSock 创建 float 输入标签。如果输入字段有值,我希望能够将标签保留在顶部,如果没有,则将标签返回原位。

现在,动画仅在一个输入元素上运行一次。需要帮助弄清楚如何对每个输入执行此操作。

// SETUP
const tl = new TimelineMax();
const container = $(".input-container");

// CLICK EVENT
container.on("click", function() {

  // VARIABLES
  const label = $(this).find(".label");


  // TWEEN
  tl.to(label, 0.35, {left: "5", top: "1", transform: "scale(.75)", color: "#333"});  

});

// FOCUSOUT EVENT
container.on("focusout", function() {

  const input = $(this).find(".input");
  if (input.val() === "") {
    tl.reverse();
  }

});

这是我到目前为止所拥有的:[演示链接] 1

最佳答案

问题是,您对所有标签使用相同的 TimelineMax 对象。每个输入/容器都需要自己的时间轴。

您也许可以将 Timeline 实例直接附加到 DOM,如下所示:

// SETUP
const container = $(".input-container");

// CLICK EVENT
container.on("click", function() {

  // VARIABLES
  const label = $(this).find(".label");

  this.tl = new TimelineMax();
  // TWEEN
  this.tl.to(label, 0.35, {left: "5", top: "1", transform: "scale(.75)", color: "#333"});  

});

// FOCUSOUT EVENT
container.on("focusout", function() {

  const input = $(this).find(".input");
  if (input.val() === "") {
    this.tl.reverse();
  }

});

Updated CodePen

关于javascript - 使用 GreenSock (GSAP) 的 float 输入标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47558932/

相关文章:

java - 控制 2d 游戏的动画速度

javascript - 如何在 WebGL 中对对象进行动画处理(修改特定顶点而不是完全变换)

jquery - 滑动从右向左切换

javascript - 为 ie10 重定向站点

javascript - 通过拖动元素传递鼠标悬停事件

微芯片/嵌入式系统(如机器人/微波炉)中的 JavaScript

javascript - for循环,元素绑定(bind)

javascript - Webpack 环境变量 NODE_ENV 与 cli params --env

javascript - 如何使用模块在 angular1.5 中绑定(bind)后执行函数?

jquery - 无法使用 jQuery AJAX 将 null 传递到服务器。服务器收到的值是字符串 "null"