The .lib-css()
Wstawek jest używany intensywnie w plikach Magento 2 mniej. Jednak jego cel nie jest oczywisty, a definicje mixin nie dostarczają żadnej przydatnej dokumentacji:
// // Dodaj dowolną właściwość css // --------------------------------------------- .lib-css ( @_własność, @_wartość, @_prefiks: 0 ) kiedy (@_prefix = 1) i nie (@_value = '') i nie (@_value = false) i nie (ekstrakt (wartość @, 1) = fałsz) i nie (wyciąg (wartość @, 2) = fałsz) i nie (wyciąg (wartość @, 3) = fałsz) i nie (ekstrakt (wartość @, 4) = fałsz) i nie (wyodrębnij (wartość @, 5) = fałsz) { -webkit - @ {_ property}: @_value; -moz - @ {_ właściwość}: @_value; -ms - @ {_ właściwość}: @_value; } .lib-css ( @_własność, @_wartość, @_prefiks: 0 ) kiedy nie (@_value = '') i nie (@_value = false) i nie (ekstrakt (wartość @, 1) = fałsz) i nie (wyciąg (wartość @, 2) = fałsz) i nie (wyciąg (wartość @, 3) = fałsz) i nie (ekstrakt (wartość @, 4) = fałsz) i nie (wyodrębnij (wartość @, 5) = fałsz) { @{_wartość nieruchomości; }
Mogłem zrozumieć, dlaczego chcesz używać mixinu do dodawania prefiksów dostawców do najnowocześniejszych właściwości CSS (chociaż jest jeszcze kilka właściwości, w których jest to konieczne), ale powód wyświetlania normalnych właściwości CSS za pomocą tej mieszanki nie jest jasny. Czy ktoś może rzucić na to światło?
Odpowiedzi:
Jedyne zastosowania, które widzę, to przedrostki i usuwanie wcześniej zadeklarowanych reguł:
Prefiksy
Wyjdzie:
Usuwanie wcześniej zadeklarowanych reguł zamiast ich wyłączania
.lib-css()
daje możliwość usunięcia każdej reguły korzystającej z pewnej zmiennej zamiast ich rozbrojenia lub ustawienia na0
lubnone
. Powiedzmy na przykład, że chcemy usunąć każdą używaną regułę@button__shadow
. Jak na przykład:Gdyby tylko jeden element był łatwiejszy do napisania
box-shadow: none;
. Ale jeśli powiedzmy, że jest to 20 elementów, szybciej je wszystkie usuniesz:Ma to tę dodatkową zaletę,
@variable: none
że zmniejsza liczbę wierszy kodu zamiast dodawać więcej.Porównaj więc te dwie metody:
MNIEJ
Wynik
MNIEJ
Wynik
Brak wyników, reguły nie są przetwarzane
To wydaje się dobrym pomysłem, ale przypadki użycia wydają się dość małe. Bardziej prawdopodobne, że użyję go jako prefiksu. Byłoby o wiele bardziej przydatne, gdyby
@variable: false
można go ustawić lokalnie, na przykład tylko w obrębie jednego diva, niestety nie udało mi się tego uruchomić.Wykorzystanie rdzenia
Zauważyłem, że niektóre zmienne są domyślnie ustawione na fałsz, takie jak te w
lib/web/css/source/lib/variables/_buttons.less
, zakładam, że tak, więc nie są wyprowadzane, dopóki nie będą wymagane. Również dobry pomysł.źródło
Lib-css () mixin służy do ustawiania jakichkolwiek właściwości CSS, jeśli istnieje wartość przekazana mu przez zmienną. (na przykład)
Również .lib-css () może w razie potrzeby dodawać prefiksy -ms-, -webkit- i -moz- .
Jeśli zmienna ma wartość false , mieszanie .lib-css () nie doda nic do kodu.
przejrzyj zmienne .lib-css
również mniej znajdziesz pomoc pod
źródło
.lib-css(border-radius, @button__border-radius);
byłoby lepsze niż:border-radius: @button__border-radius;