スタイル属性文字列を指定すると、CSStranslate()
プロパティのx値とy値をキャプチャする必要があります。数値は、ゼロ、正または負、浮動小数点または整数、およびピクセル単位のみです。
実用的なスタイルの属性文字列の例:
min-height: 100%;
min-width: 100%;
transition-property: transform;
transform-origin: 0px 0px;
transform: translate(123px, 0px) translateZ(0px);
非常に醜い解決策ではありますが、私には実用的な解決策があります。内訳は次のとおりです。
var transform = element.style['transform']
--transform
変数には次の文字列が含まれます:"translate(123px, 0px) translateZ(0px)"
それから私はそれを以下と照合します:
transform = transform.match(/translate\(-?[0-9]+(\.[0-9]*)?px, -?[0-9]+(\.[0-9]*)?px\)/);
rotate(20px, 20px)
これを行うのは、たとえば、別の変換プロパティがある場合、それを回避できるためです。
正規表現は次の配列を生成します:["translate(123px, 0px)", undefined, undefined]
。
次に、数値のみに一致する別の正規表現が必要です。
transform = transform[0].match(/(-?[0-9]+(\.[0-9]*)?)px, (-?[0-9]+(\.[0-9]*)?)px/);
次に、次の配列が残ります。["123px, 0px", "123", undefined, "0", undefined]
parseInt(transform[1])
そして、私が必要とするすべてを終えてparseInt(transform[3])
、実際に値を操作するために。
これは、これら2つの数値だけを取得するには手間がかかりすぎるように思えますが、正規表現の経験があまりなく、これを合理化する方法がわかりません。これに対するよりエレガントな解決策はありますか?
編集:私はそれをすべて単一の正規表現に変換することを特に嬉しく思います:)