2013-06-14 20 views
6

Ich möchte border radius aus allen Elementen in Bootstrap entfernen. Also habe ich custom-mixins.less erstellt und folgende Zeilen darin eingefügt, hüpfend, dass es das ursprüngliche .border-radius Mixin überschreiben würde, tat es aber nicht.Überschreibe weniger Mixin

// Border Radius 
.border-radius(@radius) {  
} 

Also versuchte ich folgende Zeilen als eine Alternative, die tatsächlich funktionierte.

// Border Radius 
.border-radius(@radius) { 
    @radius : 0px; 
    -webkit-border-radius: @radius; 
    -moz-border-radius: @radius; 
      border-radius: @radius; 
} 

ich versucht, einige Mixins bei http://less2css.org. Es scheint, dass weniger, anstatt die Mixins zu überschreiben, alle Eigenschaften des späteren Mixins an den ursprünglichen angehängt werden. Gibt es eine sauberere und einfachere Lösung für dieses ????

Antwort

10

Weniger funktioniert genau wie CSS in dieser Hinsicht. Zum Beispiel, wenn Sie dieses CSS geschrieben haben:

p { border: 1px solid black; } 

Es würde alle Absätze einen schwarzen Rand geben. Wenn später in dem Dokument, das Sie hinzugefügt:

p { } 

Sie würden nicht erwarten, dass es Ihre vorherige Definition überschreiben, nicht wahr?

Also, in diesem Fall ist es das erwartete Verhalten, Sie müssen die CSS-Werte, die Sie überschreiben möchten, speziell überschreiben.

+2

+1 neu kompilieren und downloaden - Das ist genau richtig. Wie die [site states] (http://www.lesscss.org/#-mixins) sagt, "Es ist legal, mehrere Mixins mit demselben Namen und derselben Anzahl von Parametern zu definieren. Less verwendet Eigenschaften von allem, was zutrifft" Das ist im Grunde das, was Sie in Ihrer Antwort angegeben haben. – ScottS

+1

Es wäre toll, wenn wir Mixins genauso überschreiben könnten wie wir mit weniger Variablen. Und Danke für Ihre Hilfe @nerdburn –

+0

Und @ScottS auch –

1

von lesscss 1.7.0 Starten, soll dies mit 1.7.5 unter Verwendung von „frei stehenden rulesets“, aber leider auch möglich sein, erhalte ich „ParseError: Unbekanntes Eingang“, wenn ich die Verwendung die abgelösten ruleset Syntax versuchen

[EDIT]: Ich habe den Parse-Fehler, weil ich das Semikolon nach der Regelsatzdefinition gelöscht, aber es funktioniert gut - Regelsatz hat keine Parameter, es ist eigentlich eine Variable, so kann die Definition überschrieben werden

+0

Nun, die Frage ging davon aus, dass Sie die ursprüngliche Mixin-Definition nicht ändern können oder wollen. Sonst könnte man sie statt des Überschreibens einfach bearbeiten oder [default] (http://lesscss.org/functions/#misc-functions-default) guard verwenden (was ein etwas nützlicherer Weg ist, um einen Mixin-Override im Vergleich zu a zuzulassen "Regelsatz in einer Variablen", insbesondere wenn der Mixin ein parametrischer ist. –

0

Wenn Sie weniger Bootstrap-Dateien in Ihr Projekt importieren, können Sie es versuchen edit/überschreiben Variablen, um die Bootstrap-Komponente Radius:

@border-radius-base: 0px; 
@border-radius-small: 0px; 
@border-radius-large: 0px; 

wenn nicht, dann können Sie Bootstrap CSS-Code Einstellung 0px Werte für diese Variablen in http://getbootstrap.com/customize/