LESS - CSS dla leniwych



Podobne dokumenty
Sass Rewolucja w CSS +

Dzięki arkuszom zewnętrznym uzyskujemy centralne sterowanie wyglądem serwisu. Zewnętrzny arkusz stylów to plik tekstowy z rozszerzeniem css.

Bezbolesny wstęp do CSS

PERFORMANCE W JOOMLA! JAK SPRAWIĆ ABY STRONA DZIAŁAŁA SZYBCIEJ?

Przegląd technologii

Z CSS3 szybciej i przyjemniej

Kaskadowe arkusze stylów (CSS)

Krok 1: Stylizowanie plakatu

CSS. Kaskadowe Arkusze Stylów

za pomocą: definiujemy:

WYKŁAD 1 TECHNOLOGIE FRONT-END CZĘŚĆ 1


Oczywiście występują także znaczniki, bez ich odpowiednika kończącego, np. <BR>

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Idea of responsive web design. Roman Białek Mateusz Mikołajczak Kacper Palmowski Krzysztof Szot

Dokument hipertekstowy

Dokument hipertekstowy

ANIMACJE W CSS3. Czyli po co płacić podatek o Javy Script i JQuery

Masz pomysł na lepszy wygląd?

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

I. Dlaczego standardy kodowania mailingów są istotne?

I. Wstawianie rysunków

Dwie perspektywy responsive web design: user experience i front-end developer

CSS - layout strony internetowej

Facelets ViewHandler

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Elementarz HTML i CSS

Ćwiczenie 9 - CSS i wstawianie CSS

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

HTML, Javascript, CSS oraz Bootstrap

p { color: yellow; font-weight:bold; }

Tworzenie Stron Internetowych. odcinek 7

Wykorzystano fragmenty wykładu Krystyny Dziubich GRAFIKA WEKTOROWA. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

WPROWADZENIE. Użycie PHP

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

media Blitz wydajne sytemy szablonów

PROJEKTOWANIE STRON WWW

Nazwa implementacji: CSS i box model. Autor: Opis implementacji: Poznajemy podstawy CSS oraz dowiadujemy się o rozmieszczaniu elementów na stronie.

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Przepis. Wstęp HTML & CSS. W tym projekcie nauczycie się, jak stworzyć stronę internetową ze swoim ulubionym przepisem. Zadania do wykonania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Witryny i aplikacje internetowe

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

CSS pozwala przypisać poszczególnym elementom na. grubość, rozmiar czcionki, kolor tła, odległości między

Dokumentacja Skryptu Mapy ver.1.1

I. Menu oparte o listę

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

Pakiety i interfejsy. Tomasz Borzyszkowski

Box model: Content. Content - obszar zawartości określany jest za pomocą deklaracji wysokości i szerokości.

Sigplus. Galeria w Joomla

CSS + HTML. Front end publikacji internetowej. Cięcie grafiki i CSS Ćwiczenia z CSS Typografia CSS image sprites

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Zadanie utworzenie szablonu kalkulatora

plansoft.org Zmiany w Plansoft.org

Pierwsza strona internetowa

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Podstawy HTML i CSS. Wydział Matematyki, Informatyki i Ekonometrii Uniwersytet Zielonogórski

Zdefiniowane style mogą określać układ treści na stronie i sposób jej formatowania np. kolor czcionki, pogrubienia, tło tabel, rysunków itp.

Napisy w PHP. Drukowanie napisów instrukcją echo

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Układy witryn internetowych

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Delphi podstawy programowania. Środowisko Delphi

Systemy internetowe Wykład 2 CSS

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

9. TABELE KURS HTML.

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

SterBox. Przygotowanie Strony Użytkownika

Bootstrap w 24 godziny / Jennifer Kyrnin. Gliwice, cop Spis treści

Kaskadowość stylów określa pierwszeństwo w oddziaływaniu na te same elementy strony różnych stylów.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Tworzenie Stron Internetowych. odcinek 6

HTML (HyperText Markup Language) hipertekstowy język znaczników

Języki programowania wysokiego poziomu. CSS Wskazówki

Instrukcja wgrywania Certyfikatu Klienta do przeglądarki Mozilla Firefox. System Bankowości Internetowej KIRI BS 2012

Szablony. Wersja 7.6

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Kurs programowania aplikacji bazodanowych

która metoda jest najlepsza

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Opracowanie: Izabela Czepil i Andrzej Solski

Laboratorium 1: Szablon strony w HTML5

Można też ściągnąć np. z:

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

emszmal 3: Eksport do WAPRO WF-FaKir dla Windows (plugin dostępny w wersji ecommerce)

P S E U D O K L A S Y I P S E U D O E L E M E N T Y

emszmal 3: Eksport do Subiekt GT homebanking (plugin dostępny w wersji ecommerce)

HTML. HTML(ang. HyperTextMarkupLanguage, pol. hipertekstowy język znaczników) język wykorzystywany do tworzenia stron internetowych

WYKŁAD 1 TECHNOLOGIE FRONT-END CZĘŚĆ 1

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

PORADNIK KODOWANIA: CSS

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Podstawy (X)HTML i CSS

Instrukcja instalacji PHP-Hypercachera Refresher Standard oraz PHP-Hypercachera Refresher GZIP na Twojej witrynie

Transkrypt:

LESS - CSS dla leniwych

Tomasz Dziuda Główny programista w GavickPro dziudek@gmail.com Twitter: @dziudek zebymniezapomnial.tumblr.com

Czym jest LESS?

Alternatywy 1. SASS (Ruby) 2. Turbine (PHP) 3. CSS Preprocessor (PHP) 4. Stylus (JavaScript)

Dlaczego warto poznać LESS? Popularność (np. Bootstrap, Joomla!) Ponowne wykorzystanie kodu Udostępnia to czego nie ma (a powinien) CSS Dobry na początek przygody z preprocessorami CSS

Zalety LESS 1. Łatwe zarządzanie kolorami, rozmiarami tekstu etc. 2. Pozwala zapomnieć o vendor prefixes 3. Zmniejszenie liczby plików CSS 4. Łatwiejsze tworzenie dedykowanych plików CSS dla wybranych podstron

Wady LESS Wymaga dodatkowego kroku przy pracy z plikami Może powodować problemy ze znalezieniem odpowiedniego fragmentu kodu w Chrome Dev Tools czy Firebugu Nieumiejętnie stosowany może wygenerować sporo nadmiarowego kodu CSS. Wciąż brakuje mu wielu udogodnień znanych np. z SASS

IE a duże pliki CSS Przy korzystaniu z jednego pliku warto pamiętać, że IE < 10 ma limit 4095 selektorów w jednym pliku: http://marc.baffl.co.uk/browser_bugs/css-selector-limit/

Workflow przy LESS Ręcznie Automatycznie

Narzędzia pomocnicze LESS.app less.js PHPLESS http://less2css.org/ http://incident57.com/codekit/

Brackets Dzięki rozszerzeniu BracktesLESS pozwala kompilować pliki LESS przy zapisie.

Sublime Text 2 Dzięki rozszerzeniom posiada zaawansowane wsparcie dla LESS: parsowanie plików przy zapisie, określanie miejsca docelowego dla plików LESS, pomijanie plików przy generowaniu plików CSS etc.

Espresso, Dreamweaver i inne Pozostałe edytory z reguły pozwalają co najmniej na dodanie wsparcia dla składni LESS.

Mój plugin - LESSer

Jak działa LESSer?

LESSer - beta Wersję beta można pobrać z: https://github.com/dziudek/lesser

Składnia LESS

Komentarze Wymarzona składnia // komentarz inline :-)

Zmienne @page-width: 1200px;.wrapper { max-width: @page-width;

Zmienne Osadzanie zmiennych w wartościach CSS: background-image: url("@{path_images/img.png");

Zmienne w CSS http://dev.w3.org/csswg/css-variables/

Zagnieżdżanie reguł

Zagnieżdżanie reguł.class1 { property: value;.class2 { property: value; &:hover { property: value; =>.class1 { property: value;.class1.class2 { property: value.class1.class2:hover { property: value;

Zagnieżdżanie reguł.class1 { &.big { property: value; =>.class1.big { property: value;

Zagnieżdżanie reguł.class1 { property: value;.class1 { property: value; @media (max-width: 580px) { property: value; => @media (max-width: 580px) {.class1 { property: value; Less nie grupuje reguł dla media queries!

Zagnieżdzanie reguł.child,.sibling {.parent & { color: black; & + & { color: red; =>.parent.child,.parent.sibling { color: black;.child +.child,.child +.sibling,.sibling +.child,.sibling +.sibling { color: red;

Parsowanie CSS w przeglądarkach Warto na to zwrócić uwagę gdy: Liczy się dla nas każda milisekunda Nasz kod CSS jest naprawdę złożony Gdy mamy problemy z wydajnością renderowania się strony (głównie urządzenia mobilne)

Parsowanie CSS w przeglądarkach Przeglądarki parsują selektory od prawej do lewej: #menu li a

Parsowanie CSS w przeglądarkach Selektor potomka jest najwolniejszym z selektorów #menu li a (trochę) lepiej jest użyć: #menu > li > a

Parsowanie CSS w przeglądarkach Klasyfikacja reguł według wydajności (malejąco): 1. reguły ID 2. reguły klas 3. reguły tagów 4. reguły uniwersalne Powyższa klasyfikacja jest uproszczona dla celów poglądowych - tak naprawdę najwolniejsze są pseudoklasy i selektory atrybutów, a dodatkowo pomiędzy ID a klasami z reguły nie ma zbyt wielkich różnic w wydajności.

Parsowanie CSS w przeglądarkach 1. https://developers.google.com/speed/docs/bestpractices/rendering?hl=pl 2. http://stackoverflow.com/questions/5797014/ why-do-browsers-match-css-selectors-fromright-to-left 3. http://csswizardry.com/2011/09/writing-efficientcss-selectors/

Operacje matematyczne @a: 20px; @b: (@a * 10); // 200px @c: (@a + @b); // 220px width: ((@c + 36) * 2px); // 512px color: #222 + #333; // #555

CSS i calc() width: calc(100% - 20px); font-size: calc(2 * 2em - 24px); LESS nie uwzględnia rodzaju użytych jednostek

Mixiny

Najprostszy mixin.border-radius { -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; można też zastosować nazwę #border-radius

Podwójne właściwości Nawet jeżeli powtórzymy jakąś właściwość, to jeżeli w obu wypadkach ma ona taką samą wartość - nie zostanie ona powielona (pod warunkiem, że powielimy ją w obrębie jednej klasy/mixinu)

Ukrywanie mixinów Mixiny traktowane są jak klasy CSS chyba, że zrobimy z nich mixiny bezparametrowe:.shadows() { box-shadow: 0 0 3px #000; text-shadow: 0 0 3px #000; Są one wtedy ukrywane w wynikowym kodzie CSS

Mixiny - parametry.shadows(@size) { box-shadow: 0 0 @size #000; text-shadow: 0 0 @size #000; Użycie: nav.submenu { border: 1px solid #eee;.shadows(3px);

Mixiny - wartości domyślne.shadows(@size: 3px) { box-shadow: 0 0 @size #000; text-shadow: 0 0 @size #000; Użycie: nav.submenu { border: 1px solid #eee;.shadows;

Mixiny -!important Użycie!important po mixinie powoduje automatyczne dodanie!important do wszystkich właściwości w nim użytych.shadows(20px; #aaa)!important;

Guard mixins.mixin(@a) when (@a > 10).mixin(@a) when (@a > 10), (@a < 100) // OR.mixin(@a) when (@a > 10) and (@a < 100).mixin(@a) when not (@a > 10)

Selektory w mixinach W mixinach można umieszczać też całe grupy selektorów, co powoduje, że możemy generować fragmenty kodu zależnie od wartości zmiennych:.mixin() {.selector { property: value;

Mixiny - przestrzenie nazw #package {.mixin() {... Użycie:.cssclass { #package >.mixin;

Funkcje http://lesscss.org/#reference

Importowanie kodu LESS pozwala zarówno na importowanie plików *.css jak i *.less W wypadku plików *.css wszystkie deklaracje @import przenoszone są podczas kompilacji na samą górę pliku (ewentualnie są umieszczane zaraz po @charset)

Importowanie kodu Pliki *.less można importować wewnątrz reguł CSS:.class { @import test.less ; border: 10px solid #aaa;

Przerwa dla gardła ;-)

Level++

Przecinki a średniki Parametry można rozdzielać przecinkami lub średnikami, przy czym średniki są bezpieczniejsze:.shadows(@size: 3px; @color: #000) { box-shadow: 0 0 @size @color; text-shadow: 0 0 @size @color; Na końcu parametru z przecinkami można dodać średnik aby był traktowany jako jeden argument:.test(a, b, c;);

Drugi sposób na przecinki ~ text Ważne! samo text powoduje wstawienie wartości z cudzysłowami

Problemy z calc() calc(~ WYRAŻENIE ) zamiast calc(wyrażenie)

Takie same nazwy mixinów Możemy zdefiniować kilka mixinów o tej samej nazwie - użyte zostaną wszystkie mixiny, które mają odpowiednie argumenty.mixin(@a; @b: 10);.mixin(@a: 20; @b: 10);.mixin(@a:30; @b); W powyższym wypadku wywołanie:.mixin(10); spowoduje wykorzystanie kodu CSS z pierwszego i drugiego mixinu (i powielenie właściwości CSS!)

Złożone argumenty mixinów @arguments pozwala użyć wartości wszystkich parametrów za jednym zamachem:.shadows(@size: 3px; @color: #000) { box-shadow: 0 0 @arguments; text-shadow: 0 0 @arguments;

Mixiny - @rest LESS pozwala na określenie zmiennej ilości argumentów - tutaj przydaje się zmienna @rest:.shadows(@pos: 3px 4px; @rest...) { box-shadow: @pos @rest; text-shadow: @pos @rest; Można też sprawić, że pierwsza zmienna przyjmie dowolny ciąg argumentów:.test(@a...) {...

Mixiny - pattern matching Jako pierwszy argument mixina możemy podać ciąg znaków - wtedy będzie wymagał do swojego wywołania podania tego ciągu znaków jako pierwszego argumentu:.margins(mobile; @value: 20px).margins(tablet; @value: 30px).margins(@_;@value: 50px) Wtedy pierwszy mixin wywoła się gdy: @mode: mobile;.margins(@mode);.margins(@mode; 10px);

Kod JS w mixinach Kod JS jest wykonywany gdy użyjemy składni: `kod JS`.class { height: `document.body.clientheight`; (działa tylko z less.js)

Interpolacja selektorów @big-headers: ~"h1, h2, h3"; @small-headers: ~"h4, h5, h6"; @{big-headers { font-weight: 600; @{small-headers { font-weight: 400; @{big-headers, @{small-headers { text-transform: uppercase; => h1, h2, h3 { font-weight: 600; h4, h5, h6 { font-weight: 400; h1, h2, h3, h4, h5, h6 { text-transform: uppercase;

Zmienne nazwy zmiennych @color-frontpage: #aaa; @color-subpage: #bbb;.colorize(@page) { background-color: ~"@{color-@{page";.wrapper {.colorize(subpage);

Aliasy.transition-timing-function(@value) { -webkit-transition-timing-function: @value; -moz-transition-timing-function: @value; -o-transition-timing-function: @value; transition-timing-function: @value; // Alias.trans-timing(@value) {.transition-timing-function(@value);

Co dalej? LESS się ciągle rozwija - trzeba być na bieżąco ;-) Praktyka, praktyka i jeszcze raz... praktyka ;-) Analiza kodu LESS popularnych otwartych projektów SASS?

Źródła informacji 1. http://lesscss.org/ (EN) 2. http://ciembor.github.io/lesscss.org/ (PL) 3. https://github.com/cloudhead/less.js/wiki (EN) 4. Stack Overflow ;-)

Gratis ode mnie ;-) Mój standardowy zestaw mixinów: https://github.com/dziudek/less-mixins

Pytania?

Dziękuję za uwagę