2011-06-17 8 views
11

Potrzebuję uzyskać wartość kaskadową elementu (nie obliczonego) lub określić, czy została obliczona faktyczna wartość, czy też nie.Jak uzyskać wartość stylu kaskadowego lub określić, czy została obliczona rzeczywista wartość?

Na przykład, jeśli mam element z regułą css width: 100%, chcę uzyskać wartość 100%, a nie rzeczywistą wartość pikseli lub po prostu wiedzieć, że została obliczona faktyczna wartość.

Wiem, że mogę uzyskać to za pomocą elem.currentStyle, a także znalazłem sposób w Chrome, aby znaleźć go przy użyciu document.defaultView.getMatchedCSSRules().

Czy ktoś wie, jak to zrobić w innych przeglądarkach?

+1

Czy kiedykolwiek znalazłeś odpowiedź na to pytanie? –

Odpowiedz

-2

najlepszym sposobem byłoby wykorzystanie API biblioteki przeglądarce indepent jak jQuery

$(element).css('width') // jquery has a single function that returns a consistent value no matter which browser is in use. 
+1

Znam jquery. Zwraca wartość w pikselach - nie zwraca wartości względnej, która została ustawiona. dla elementu o szerokości: 100% nie zwróci "100%" – Andy

-1

// Argument css w tym przypadku musi być ciągiem css stylu, a nie ciąg camelCase.

function deepCss(who, css, ps){ 
    var sty, dv= document.defaultView; 
    // IE8 and below 
    if(document.body.currentStyle){ 
     sty= css.replace(/\-([a-z])/g, function(a, b){ 
      return b.toUpperCase(); 
     }); 
     return who.currentStyle[sty]; 
    } 
    // everyone else 
    if(dv){ 
     dv= document.defaultView.getComputedStyle(who, ps); 
     return dv.getPropertyValue(css); 
    } 
    return ''; 
} 

deepCss (document.body 'background-color')

+3

Dla chrome i firefox zwróci rzeczywistą przypisaną wartość, a nie określoną wartość, tj. dla elementu o "width: 100%" zwróci wartość rzeczywiste wyliczone piksele, a nie zdefiniowana wartość "100%". – Andy

0

W tym momencie nie sądzę, nie ma wbudowanego sposób to zrobić w przeglądarkach innych niż IE: getComputedStyle zawsze zwróci wartość użytą dla tych właściwości, tak jak powiedziałeś.

1

Co z samodzielnym obliczaniem wartości? Zapytanie o wyliczoną szerokość pożądanego elementu i obliczoną szerokość af elementu nadrzędnego, a następnie trochę matematyki, aby uzyskać wartość procentową? percentageValue = 100% * widthOfWanted/widthOfContainer

+0

Tak, myślę, że to najbardziej eleganckie rozwiązanie. Spójrz na [tę odpowiedź tutaj] (https://teamtreehouse.com/community/pixel-to-percentage-conversion), aby zrozumieć technikę konwersji jednostek i wdrożyć ją do swoich potrzeb –

Powiązane problemy