2012-11-28 19 views
8

Dla mojej strony wybrałem czcionkę, która działa dobrze dla wszystkich liter. Jednak dla wszystkich liczb chciałbym użyć innej czcionki.Ustaw czcionkę dla wszystkich liczb na stronie

Czy istnieje sposób, w jaki mogę ustawić regułę CSS, aby kierować wszystkie liczby na stronie?

Jeśli nie mogę tego zrobić ściśle za pomocą CSS, moją pierwszą myślą jest użycie wyrażeń regularnych, aby otoczyć wszystkie liczby rozpiętością z klasą "numbers" i zastosować czcionkę dla tej klasy. Czy jest lepszy sposób to zrobić?

+1

Nie wiem, czy to będzie przydatne, ale spójrz na to. http://johndoesdesign.com/blog/2012/jquery/targeting-a-specific-word-using-javascript-and-jquery/ –

+1

Możesz to zrobić za pomocą JavaScriptu, jak już opisałeś, lub możesz utworzyć niestandardową czcionkę poprzez zamianę glifów liczbowych w twoich "literowych" czcionkach na liczby glifów w twojej "liczbowej" czcionce. – thirtydot

Odpowiedz

15

Można to zrobić w JavaScript stosunkowo prosto przez przejeżdżające dokument, tak aby owinąć każdą sekwencję cyfr w elemencie span z atrybutem class i deklarują font-family go w CSS.

To w zasadzie możliwe w czystym CSS, zbyt, choć tylko przeglądarki WebKit obsługuje obecnie tak:

@font-face { 
    font-family: myArial; 
    src: local("Courier New"); 
    unicode-range: U+30-39; 
} 
@font-face { 
    font-family: myArial; 
    src: local("Arial"); 
    unicode-range: U+0-2f, U+40-10FFFF; 
} 
body { font-family: myArial; } 

Wreszcie, co najważniejsze, nie rób tego. Jeśli jesteś niezadowolony z cyfr w czcionce, nie używaj tej czcionki.

+0

Sprawdziłem [specyfikację czcionek CSS3] (http://www.w3.org/TR/css3-fonts/#unicode-range-desc) w 'unicode-range' ... interesującym. – Anson

+0

To jest dobre rozwiązanie. Czy możesz mi pomóc, jak mogę tego użyć: @ font-face { rodzina czcionek: myArial; src: local ("Times New Roman", Times, szeryf); zakres unicode: U + 30-39; } – zenon

1

Otaczanie cyfr numerem <span class="number"> brzmi jak dobre, semantycznie rozsądne podejście.

W rzeczywistości CSS3 nie oferuje alternatywy i nie widzę niczego, co mogłoby się pojawić w CSS4. Jeśli spojrzy się na latest CSS3 recommendation, nie określa żadnego selektora treści, ale stara 2001 candidate recommendation była ostatnią wersją zapewniającą pseudoclass :contains().

byłoby to pozwalają dopasować element, który zawierał numery:

/* Deprecated CSS3 */ 
p:contains(0), p:contains("1"), p:contains("2") { 
    background-color: red; 
} 

Nawet gdyby to było rzeczywiście dostępne, pasuje do p, a nie liczba, więc cały p będzie stylizowany ... nie co chciałeś. CSSWG kręci się wokół formatu these ideas w celu formatowania zawartości numerycznej ... nadal nie jest to, co chciałeś.

Aby zastosować CSS do liczb, nie unikniemy dodatkowych znaczników.