2012-11-09 9 views
5

Poszukuję najprostszej i wielopikselowej metody konwersji wartości marginesu css elementu html na bezwzględne piksele. Powiedzmy na przykład, że marża to "auto". Nie mogę użyć żadnej struktury js.Jak przekonwertować wartość marginesu css na piksele za pomocą zwykłego javascript?

+0

A więc chcesz użyć zmiany z 'margin: auto' do konkretnej wartości piksela? –

+0

To tylko szczególny przypadek, ale tak. Chcę zamienić DOWOLNY margines na konkretną wartość piksela – gztomas

Odpowiedz

2

chcesz użyć metody window.getComputedStyle:

var style = window.getComputedStyle(element, null); 
// style.marginLeft 

Oto demo robocze: http://jsfiddle.net/VxccZ/

Aktualizacja

dla IE 8 i starsze (które nie obsługuje tej metody), użyj właściwości swojego elementu:

var style = element.currentStyle; 
// style.marginLeft 

Podsumowując:

var getMarginLeft = function (element) { 
    var style; 
    if (window.getComputedStyle) { style = window.getComputedStyle(element, null); } 
    else { style = element.currentStyle; } 

    return style.marginLeft; 
}; 

nie jestem w 100% pewien, że currentStyle posiada wartość liczbową margin: auto. Będziesz musiał spróbować sam. Nie mogę tego zrobić samemu na Macu.

+0

Dobra sztuczka, nigdzie jej nie widziałem. Czy to naprawdę crossbrowser? – Martin

+0

Tylko IE9 +. Możesz użyć 'element.currentStyle' w starszych wersjach IE. Pozwól mi zaktualizować odpowiedź. –

+0

Chce przekonwertować wartość, a nie tylko ją pobrać. –

Powiązane problemy