2013-04-18 11 views
16

Zakładam, że nie jest to możliwe, ale tak na wszelki wypadek lub ktoś ma fajną sztuczkę w rękawie, czy istnieje sposób na kierowanie określonych postaci za pomocą CSS?Określanie pewnych znaków za pomocą CSS

Na przykład zrobić wszystkie litery z w punktach czerwony, lub w moim konkretnym przypadku ustawić vertical-align:sup na wszystkich 7 elementów oznaczonych w klasie chord.

+0

Jak o przetwarzanie tekstu z JavaScript i dodanie 'span' elementy z jakiejś klasy? – toniedzwiedz

+0

nie. musiałbyś użyć javascript lub jakiegoś preprocesora do dodawania klas do span owiniętych znaków –

+0

W czystym CSS, jedyny selektor, który jest trochę podobny do tego, o co prosisz, to ': first-letter' – FelipeAls

Odpowiedz

8

Nie jest to możliwe w CSS. Twoja jedyna opcja to first-letter, a to nie spowoduje jej ograniczenia. Użyj JavaScript lub (jak podano w komentarzach), twój język po stronie serwera.

+1

Wygląda na to, że odpowiedź brzmi "nie", tak :) Przyjmę to, gdy mi wolno. Już parsuję akordy w backendzie, więc muszę po prostu dopasować wyjście. Zastanawiałam się, czy istnieje sposób, w jaki wyjście może pozostać ' B7' zamiast ' B 7', który jest spora liczba postaci po prostu do stylu dwóch postaci: p – Svish

+0

@Svish Tak, to jest dość mocne, ale stylizujesz akordy, więc nigdy nie będzie to najprostsza rzecz do osiągnięcia :). Hej, nie pozwól, aby kilka dodatkowych znaczników 'span' zrujnowało twoje akordy :) – mattytommo

+0

@Svish Ponieważ masz tylko dwie litery do stylu, przypuszczam, że używam zarówno' B7 'i' najpierw "możesz" osiągnąć to, co chcesz. – xpy

17

Witam Wiem, że powiedziałeś w CSS, ale jak wszyscy ci mówili, nie możesz, to jest rozwiązanie javascript, tylko moje 2 centy.

najlepiej ...

[http://jsfiddle.net/9LSrk/][1] 

css

span.highlight{ 
    background:#F60; 
    padding:5px; 
    display:inline-block; 
    color:#FFF; 
} 

p{ 
    font-family:Verdana; 
} 

html

<p> 
    Let's go Zapata let's do it for the revolution, Zapatistas!!! 
</p> 

javascript

jQuery.fn.highlight = function (str, className) {  
    var regex = new RegExp(str, "gi"); 

    return this.each(function() { 
     this.innerHTML = this.innerHTML.replace(regex, function(matched) {return "<span class=\"" + className + "\">" + matched + "</span>";}); 
    }); 
}; 

$("p").highlight("Z","highlight"); 

Wynik enter image description here

+1

To jest świetne rozwiązanie - Jest szansa, że ​​możesz zaktualizować wyrażenie regularne, aby nie było ono celem postać w obrębie atrybutów? Łamie atrybut href linku, ponieważ w adresie URL jest powiązany pasujący znak. Dzięki! –

+0

Czy przekazujesz kompletny blok tekstu, który zawiera linki wewnątrz? – ncubica

+1

Tak, po zastosowaniu do akapitów. Wygląda na to, że uniknąłem problemu, uderzając tylko w kapitał V zamiast wszystkich v postaci i upewniając się, że w żadnych linkach nie ma kapitału V. Użyłem tego do zaciśnięcia niezręcznego kerningu/odstępu między literami. –

Powiązane problemy