在保留其他值的同时更改CSS3的翻译?

时间:2010-07-17 09:34:31

标签: javascript css3

我有一个-moz-transformtranslateX()translateY()已应用skew()的元素。我需要做的是使用javascript更改skew()值而不触及翻译。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

以下是一般解决方案:

var elem = /*...*/

var transformations = getComponentsFromAttribute(elem.style['-moz-transform']);
transformations.skew = [1, 1];

elem.style['-moz-transform'] = getAttributeFromComponents(transformations));

使用这些功能:

function getComponentsFromAttribute(attribute)
{
    var componentMap = {};

    var regex = /([a-z]*)\(([^)]*)\)/gi;
    var matches;

    while(matches = regex.exec(attribute))
        componentMap[matches[1]] = matches[2].split(/, */);

    return componentMap;
}

function getAttributeFromComponents(componentMap)
{
    var componentList = [];

    for(var key in componentMap)
        componentList.push(key + '(' + componentMap[key].join(',') + ')');

    return componentList.join(' ');
}