javascript - 如何给 JS(jQuery) 中的翻译添加加法赋值(+=)?

标签 javascript jquery html css assignment-operator

我的期望是将加法赋值运算符(+=/-=)设置为transform:translateX(),但不知道我该怎么做.

我尝试了一些方法来做到这一点:

$('.inline-grid').css({transform: 'translate(+= 4%, 0)'}) 
$('.inline-grid').css({transform: 'translate(''+=' + '4' + '%', 0')'})
$('.inline-grid').css({transform: "translate("+=" + "10" + "%", 0)"})
$('.inline-grid').css({transform: '+=' + 'translateX(4%)'})
$('.inline-grid').css({transform: '+=translateX(4%)'})

但这些都不起作用。

是否有任何方法可以将 += 运算符赋予 translateX()

代码:

function delay(callback) {
  let binding = callback.bind(this);
  setTimeout(binding, 400);
}
function action() {
  setInterval(() => {
    $('.inline-grid').css({
      transform: "translateX(10%)"
    })
    console.log(`waiting 400ms`);
  }, 1900);
}
delay(action);
    #element{
      position : relative;
      font-size: 3rem;
      font-family: Helvetica;
      display: flex;
      flex-flow: row;
      justify-content: center;
    }
    .inline-grid {
      position: relative;
      transform: translate(-10%, 0);
    }
    .transition {
      transition: all 1000ms cubic-bezier(.93,.01,.1,.98);
    }
    <div id="element">
      <div class="inline-grid transition">
        Bazil Leaves
      </div>
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

最佳答案

根据@Rory的提示,我制作了一个简单的模块来解决我的问题。我将这个简短的描述分享给那些在不久的将来遇到像我一样问题的人。

该模块的主要特点是无限累积。与 jQuery 中的 .css() 方法不同,累积不会受到 CSS 的 transition 属性的影响。

感谢您的建议@RoryMcCrossan :-)

=========最新更新=========

Now the user can accumulate any kinds of unit such as px, cm, rem, even %.

See in Github

=========最新更新=========

此代码自 2019 年 8 月 11 日起已过时。

// @BUG FIXED
// @CHANGED THE CODE MORE CLEARER
// @USAGE: Operator.assemble(target, increment, property, unit);

const Operator = (function() {
  function Accumulate(init, acc, name, unit) {
    this.init = document.querySelector(init);
    this.acc = acc;
    this.name = name;
    this.unit = unit;
    this.convert(this.result);
  }
  Accumulate.prototype = {
    convert: function(callback) {
      let defaultDisplay = this.init.style.display;
      this.init.style.display = 'none';
      let bind = callback.bind(this),
          getValues = window.getComputedStyle(this.init, null).getPropertyValue(this.name),
          S2N = parseInt(getValues, 10);
      this.init.style.display = defaultDisplay;
      bind(S2N);
    },
    result: function(value) {
      let getNewValue = value + this.acc;
      this.init.style.left = getNewValue + this.unit;
    }
  }
  return {
    assemble: (init, acc, name, unit) => {
      new Accumulate(init, acc, name, unit);
    }
  }
}());

//==============================================

setInterval(() => {
  Operator.assemble('.content', 10, 'left', '%');
}, 1000);
  #box{
    max-width: 2560px;
    background-color: gold;
  }
  .content {
    left: 10%; /* 10px */
    position: relative;
    transition: 1000ms;
  }
<div id="box">
  <div class="content">
    wowtested
  </div>
</div>

关于javascript - 如何给 JS(jQuery) 中的翻译添加加法赋值(+=)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446336/

相关文章:

javascript - 为 div 指定 href 值

javascript - 从二进制 1's and 0' s 创建位图/ Canvas 图像以直观地查看 JavaScript 中的数据的算法?

html - 如何重置 HTML5 meter 标签

javascript - 使用 angularjs 过滤 API 的结果

Javascript 作用域和变量

javascript - Chrome 扩展程序事件监听器到底存储在哪里?

javascript - 在鼠标悬停时删除属性并在鼠标移开时添加回来

javascript - jquery 传递 JSON 返回 undefined

javascript - 通过 jQuery 将 HTML 代码更改为 HTML

javascript - 跟随响应式背景图像的位置图标