2013-07-22 25 views
9

Mam plik Sass, który generuje plik CSS. Użyłem wielu zmiennych w moim pliku sass dla koloru tła, rozmiaru czcionki, teraz chcę kontrolować wszystkie zmienne za pomocą JavaScript.Jak kontrolować zmienną Sassa za pomocą javascript

Na przykład w style.sass mamy

$bg : #000; 
$font-size: 12px; 

Jak mogę zmienić te wartości z JavaScript?

Odpowiedz

7

Nie możesz. SASS jest preprocesorem CSS, co oznacza, że ​​szczegółowe informacje SASS znikają po kompilacji do CSS.

+1

Dzięki GJK.Ale chcę zmienić moje zmienne przed generacją css. jak niektórzy robią w themeroller bootstrap, w ten sam sposób, w jaki chciałem temat mojej strony internetowej. – Ankit

+2

Cóż, mogę powiedzieć, że z pewnością nie ma biblioteki JavaScript gotowej do manipulowania plikami SASS. Będziesz musiał to zrobić po stronie serwera (poprzez Node.js, jeśli chcesz używać Javascript) używając zwykłego starego pliku IO. – GJK

1

JavaScript działa po stronie klienta (w przeglądarce), podczas gdy Sass jest generowany po stronie serwera, więc musisz znaleźć sposób na wypełnienie luki. Jednym ze sposobów na to jest skonfigurowanie słuchania w stylu AJAX, aby przesłać zdarzenia JavaScript na serwer, a następnie przeprowadzić edycję serwera i ponownie skompilować plik style.sass.

+0

Dzięki Katiek. ale słyszałem, że przy pomocy ok node.js możemy to zrobić. [link] https://npmjs.org/package/node-sass – Ankit

1

Jeśli chcesz zrobić to, co robi bootstrap (np. Edytując pola, aby pobrać motyw).

Musiałbyś:

  1. Czy pliki na strony, które chcesz edytować
  2. przechowywania tych zmiennych jako ciąg i używać .replace() do wyszukiwania i zamiany zmiennych
  3. Output ten ciąg i skompiluj go do pliku lub zip go do pobrania.

Osobiście zrobię to z php.

1

Musiałem także tę funkcjonalność, oto co pracował dla mnie:

z JS można ustawić klasę do ciała, ex. .blue lub .default Teraz utworzyć zestaw reguł rozszerzenia z, której chcesz ustawić:

.default .themeColor { 
    color: 'red'; 
} 
.blue .themeColor { 
    color: 'blue'; 
} 

Teraz zamiast color: $someColor w pliku SCSS, używać go tak:

.someClass { 
    @extend .themeColor; 
} 

Teraz, jeśli twoje ciało będzie miało klasę default, kolor wewnątrz someClass będzie czerwony, a jeśli ciało będzie miało klasę blue, kolor będzie niebieski.

Powiązane problemy