2011-11-27 9 views
21

Chciałem użyć CSS twitter bootstrap tylko w określonym elemencie na mojej stronie internetowej.zawijanie .less definicji css w przestrzeni nazw

Próbowałem zrobić to jak w poniższym kodzie. Ale po skompilowaniu tego do pliku css nic nie zostało wyprowadzone. Jeśli przeniosłem @import poza #my_div, otrzymałem wszystkie definicje css dla boostrap Twitter.

#my_div { 
    @import "../twitter_bootstrap/lib/bootstrap.less"; 
} 

W jaki sposób mogę nadać przestrzeni nazw plik less css?

Odpowiedz

11

Dokumentacja LESS zawiera dział o numerze namespaces.

Tak można zdefiniować lib w osobnym dokumencie:

#ns { 
    .twitter() { 
    // Instructions to be used later 
    // Nothing will appear in compiled CSS except if called later (because of parenthesis) 
    } 
} 

import tego pliku na początku pliku CSS być skompilowany i korzystać z tych wskazówek:

#my_div { 
    #ns > .twitter; 
} 
+2

Problem dotyczy '@ import'. Nie działa podczas używania go w przestrzeni nazw. –

+0

@MartinsBalodis Kod dla lib powinien być plikiem LESS (wystarczy dodać '#ns {.anything() {' na początku i dwa '}' na końcu twojej biblioteki CSS, a plik główny musi być również MNIEJ Plik powinien mieć miejsce na początku poza '#my_div {}' Nic z pierwszego pliku nie będzie wyprowadzane bez dalszych instrukcji, więc możesz go zaimportować w dowolnym miejscu przed tym selektorem, a następnie '#ns> .twitter;' instrukcja na końcu doda twój kod dokładnie tam, gdzie chcesz – FelipeAls

+0

Możesz zaimportować pliki do biblioteki twitter, nie mogę edytować tych plików, są one używane jako moduł git submodule [główny moduł Twittera bez plików] (https://github.com /twitter/bootstrap/blob/master/lib/bootstrap.less) –

4

ten sposób Zrobiłem to. Odbywa się to w katalogu głównym folderu pobierania, który jest pobrany lub sklonowany z git.

## ./less/namespace.css (New file) 

#ns { 
    .twitter() { 
    @import "less/bootstrap.less"; 
    } 
} 

## ./style.less 

@import "less/namespace.less"; 

.namespace { 
    #ns > .twitter; 
} 

Następnie uruchom mniej style.less> style.css

+0

co znajduje się w pliku less/namespace.less? – FLX

+0

Próbowałem tego, ale nie mogę używać zaimportowanych mixinów z .twitter() – FLX

+1

To nie działa, kończy się na selektorach takich jak: button.namespace .close {...} – Caqu

24

nie używam less na miejscu na żywo, ani ja ręcznie robi kompilowania więc jest to rodzaj „zwykłej” wersji. Nie jest tak zautomatyzowany jak inne, ale może dotyczyć niektórych użytkowników.

  1. Edycja bootstrap.css/bootstrap-responsive.css

    .tb { 
        // copy/paste the entire bootstrap.css 
    } 
    
  2. rekompilacji z mniej lub użyć online mniej kompilator - http://winless.org/online-less-compiler

  3. Edycja teraz-skompilowany plik i zmienić body {} deklaracje CSS tb {}.

  4. Użyj nowego pliku CSS.

  5. Umieść "bootstrapped" zawartość wewnątrz <div class='tb'></div>

+0

Jak to zapobiegnie kolizjom w html? na przykład:

Gdy inna biblioteka ma definicję klasy "duży przycisk"? Prefixowanie jest jedynym sposobem na uniknięcie kolizji przestrzeni nazw na obu końcach. – TaylorMac

+0

Próbowałem już wcześniej użyć, używając wszystkich plików .less w kodzie źródłowym i rekompilując z winless. Jednak czegoś brakowało w ostatecznym pliku CSS. Udało mi się go skorygować postępując zgodnie z procedurą - dzięki! –

+0

To zadziałało dla mnie. Postępowałem zgodnie z instrukcjami pod "Instalowanie Grunta" na stronie getbootstrap.com/getting-started. Kiedy to działało, poszedłem za tą odpowiedzią, rekompilując z 'grunt dist '. W ten sposób utrzymuję prefiksy dostawców CSS. –

3

Oto jak to zrobiłem, na podstawie majgis męska github widelcem powyżej:

bootstrap-ns.less:

@import "namespace.less" 
.bs { 
    #ns > .twitter; 
    } 

namespace.less:

#ns { 
    .twitter(){ 
    @import "bootstrap.less"; 
    } 
} 

Następnie odwołasz się do bootstrap-ns.less na swojej stronie html. Zostało to przetestowane za pomocą dotLESS.

0

jeśli masz kontrolę nad parametrami kompilacji, ustaw tylko strictImports na wartość false i pracuj zgodnie z przeznaczeniem, aby wszystko było w porządku. rozważyć spojrzenie na less-strictimports lub na to issue.