2013-06-25 8 views
6

Próbuję użyć Bootstrap dla projektu, który obejmuje ponad 400 witryn i używa poprzednich nazw klas CSS (nad którymi nie mam kontroli). Występuje konflikt nazwy CSS, a rozwiązaniem dla mnie jest dodanie przedrostka do Bootstrap (na przykład .row do .tb-row).Dodawanie przedrostków do nazw klas CSS za pomocą LESS lub SASS

Jestem zaznajomiony z metodą dodawania przestrzeni nazw za pomocą LESS, gdzie dodatkowa klasa jest opakowane wokół klas. Niestety nie wygląda na to, że rozwiąże moje problemy.

Czy istnieje metoda za pośrednictwem LESS, SASS lub innego kompilatora, który ułatwia dodanie przedrostka tb do wszystkich istniejących klas w Bootstrap?

+1

Chociaż nie mogę mówić z całą pewnością, uważam, że odpowiedź brzmi "nie". Dodatkowo, jeśli spojrzysz na kod bootstrap, używają wielu selektorów atrybutów (a więc nie tylko klas) do robienia rzeczy, z których niektóre robią, a inne także nie zależą od samych klas. To dodaje złożoności tego, co próbujesz zrobić. – ScottS

Odpowiedz

12

Można chyba zrobić z SASS

  • $ nazw: "TB";
  • ⌘ + f (lub podobne), aby znaleźć wszystkie klasy w pliku CSS. Prawdopodobnie będziesz potrzebował wyrażeń regularnych (i niektórych prób + błędów), aby znaleźć je wszystkie.
  • dodać .#{$namespace}- do wszystkich klas.

Idealnie chcesz uzyskać coś takiego:

$namespace: "tb"; 

.#{$namespace}-myClass { 
    background:pink !important; 
} 

.#{$namespace}-carousel-module { 
    width: 25%; 
} 

skompilowany do

.tb-myClass { 
    background:pink !important; 
} 

.tb-carousel-module { 
    width: 25%; 
} 

"Easy" może być rozciągnięcie ale "łatwiej" wydaje się pasować.

Nie jestem pewien, czy to jest najlepsze podejście, szczerze mówiąc, jestem po prostu ripping off a gist that I saw z komentarzami od ludzi o wiele mądrzejszych ode mnie. Może ci się przydać!

+0

Modyfikowanie biblioteki TB to rozwiązanie mniej niż idealne. – cimmanon

+0

Zgadzam się, ale wygląda na to, że autor szuka – imjared

6

Trzeba by modyfikować bezpośrednio kod bootstrap, przykładem tego, jak można to osiągnąć w mniej elegancko:

.prefixname { 
    &-row { 
     ... 
    } 
} 
+0

próbuję użyć tego podejścia, ale z jakiegoś powodu nie działa :( –

+0

Działa to w ** SASS ** –

0

Dodałem przedrostek „TB-” do całej klasy bootstrap (za mniej) w wersji 3.1.0. Więc po skompilowaniu mniejszej ilości plików otrzymasz coś w rodzaju ".tb-btn" Możesz rozwidlić mój projekt pod https://github.com/TimothyGuo/tb--prefix-for-Bootstrap-v3.1.0--LESS-

+0

Jak zbudowałeś te pliki, które masz twoje repozytorium github To jest dokładnie to, co chcę zrobić – user566245

+0

Używam git bash do wypychania tych plików do mojego repozytorium Możesz pobrać plik zip bezpośrednio z github lub ściągnąć repozytorium do lokalnego środowiska. na projekcie, który potrzebuje jakiegoś prefiksu do bootstrap v3.1.0, ale niestety nie mogłem znaleźć nikogo, kto już dodał prefiks do tej nowej wersji, dlatego postanowiłem zrobić to sam i podzielić się ze społecznością.Mam nadzieję, że to pomoże innym programistom. –

+0

dziękuje Tim, więc jak by to działało z komponentami javascript typu Bootstrap, takimi jak modal, popover itp., Które budują elementy z określonymi klasami i szukają elementów o określonych klasach – user566245