Muszę wykonać obliczenia numeryczne na podstawie właściwości CSS. Jednak kiedy używam tego, aby uzyskać informacje:
$(this).css('marginBottom')
zwraca wartość „10px”. Czy jest jakiś trik tylko coraz udział liczby wartości bez względu na to czy jest to px
lub %
lub em
lub cokolwiek?
javascript
jquery
css
parsing
Tim Sheiner
źródło
źródło
/[^-\d\.]/g
parseInt
automatycznie zignoruje jednostki.Na przykład:
źródło
parseInt
uwzględniać przypadek, w którym otrzymujesz wartość inną niż całkowita - jak w odpowiedzi maximelebreton .W przypadku metody replace Twoja wartość css jest łańcuchem, a nie liczbą.
Ta metoda jest bardziej przejrzysta, prosta i zwraca liczbę:
źródło
%
,em
)Nawet jeśli marginBottom zdefiniowano w em, wartość wewnątrz parseFloat powyżej będzie w px, ponieważ jest to obliczona właściwość CSS.
źródło
źródło
px
ale otrzymaszem
, musisz przekonwertować.Używam prostej wtyczki jQuery, aby zwrócić wartość liczbową dowolnej pojedynczej właściwości CSS.
Dotyczy
parseFloat
wartości zwracanej przez domyślnącss
metodę jQuery .Definicja wtyczki:
Stosowanie:
źródło
Załóżmy, że masz właściwość najniższego marginesu ustawioną na 20px / 20% / 20em. Aby uzyskać wartość jako liczbę, istnieją dwie opcje:
Opcja 1:
Funkcja parseInt () analizuje ciąg znaków i zwraca liczbę całkowitą. Nie zmieniaj liczby 10 znalezionej w powyższej funkcji (znanej jako „podstawa”), chyba że wiesz, co robisz.
Przykładowe dane wyjściowe wyniesie: 20 (jeśli dolny margines jest ustawiony w pikselach) dla% i em, wyświetli liczbę względną w oparciu o bieżący rozmiar elementu nadrzędnego / czcionki.
Opcja 2 (osobiście wolę tę opcję)
Przykładowe dane wyjściowe wyniesie: 20 (jeśli dolny margines jest ustawiony w pikselach) dla% i em, wyświetli liczbę względną w oparciu o bieżący rozmiar elementu nadrzędnego / czcionki.
Funkcja parseFloat () analizuje łańcuch i zwraca liczbę zmiennoprzecinkową.
Funkcja parseFloat () określa, czy pierwszy znak w określonym ciągu jest liczbą. Jeśli tak, analizuje ciąg, aż osiągnie koniec liczby i zwraca liczbę jako liczbę, a nie jako ciąg.
Zaletą Opcji 2 jest to, że jeśli zwrócone zostaną liczby dziesiętne (np. 20,32322px), otrzymasz liczbę zwróconą z wartościami po przecinku. Przydatne, jeśli potrzebujesz konkretnych liczb, na przykład jeśli dolny margines jest ustawiony w em lub %
źródło
parseint
obetnie wszelkie wartości dziesiętne (np.1.5em
daje1
).Wypróbuj
replace
funkcję z wyrażeniem regularnym, npźródło
Idę na:
źródło
margin
jest negatywne lub pozytywne!Najprostszym sposobem uzyskania szerokości elementu bez jednostek jest:
Źródło: https://api.jquery.com/width/#width2
źródło
Możesz zaimplementować ten bardzo prosty jQuery wtyczkę :
Definicja wtyczki:
Jest odporny na
NaN
wartości, które mogą wystąpić w starej wersji IE (0
zamiast tego zwróci )Stosowanie:
Cieszyć się! :)
źródło
var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result;
Aby poprawić zaakceptowaną odpowiedź, użyj tego:
źródło
Jeśli chodzi tylko o „px”, możesz też użyć:
źródło
Powinien usuwać jednostki, zachowując ułamki dziesiętne.
źródło
posługiwać się
które zwracają tablicę. pierwszy indeks zwraca wartość dolnej krawędzi marginesu (przykład 20 dla 20 pikseli), a drugi indeks zwraca jednostkę dołu marginesu (przykład px dla 20 pikseli)
źródło