Thomas: mögliche Lösung (?)

Beitrag lesen

Tja, das ist ja wohl wirklich nicht ganz einfach. Der einzige Anhaltspunkt ist offsetLeft, und mir fällt zur Berechnung keine bessere Methode ein als diese:

function getMarginLeftUsedValue(element) {  
    var elementComputedStyle = window.getComputedStyle(element, null);  
    var computedMarginLeft = elementComputedStyle.marginLeft;  
    if (parseFloat(computedMarginLeft) != 0)  
        return computedMarginLeft;  
    if (!/^(relative|static)$/.test(elementComputedStyle.position))  
        return computedMarginLeft;  
    var offsetParent = element.offsetParent;  
    var containingBlock = element.parentNode;  
    var containingBlockComputedStyle = window.getComputedStyle(containingBlock, null);  
    while(!/^((inline-)?block|list-item|run-in|table(-cell)?)$/i.test(containingBlockComputedStyle.display)) {  
        containingBlock = containingBlock.parentNode;  
        containingBlockComputedStyle = window.getComputedStyle(containingBlock, null);  
    }  
    var distanceLeft; // horizontal distance to containing block  
    if (containingBlock == offsetParent) {  // containing block is positioned  
        distanceLeft = element.offsetLeft;  
    } else { // containing block has position:static -> containingBlock.offsetParent = root element  
        distanceLeft = element.offsetLeft - containingBlock.offsetLeft;  
        do {  
            distanceLeft += offsetParent.offsetLeft;  
        } while (offsetParent = offsetParent.offsetParent) // confusing, eh?  
    }  
    if (elementComputedStyle.position == 'relative')  
        return (distanceLeft - parseFloat(containingBlockComputedStyle.paddingLeft) - parseFloat(elementComputedStyle.left)) + 'px';  
    else // elementComputedStyle.position = 'static'  
        return (distanceLeft - parseFloat(containingBlockComputedStyle.paddingLeft)) + 'px';  
}  

Und alles nur weil

The CSS Object Model doesn't provide an access to the specified or actual values of the CSS cascade.

Wenn euch eine einfachere Lösung einfällt, her damit!