SlideShare a Scribd company logo
1 of 25
Zorientowany obiektowo CSS
czyli jak tworzyć layouty aplikacji i nie zwariować
Marta Sztybor
@sztyborek
martasztybor.pl
O czym będzie ta prezentacja?
• Do czego właściwie służy CSS i jak działa?
• O co chodzi z tym programowaniem obiektowym?
• Czy w CSS można pisać kod „zorientowany obiektowo”? I
dlaczego jest to nieintuicyjne?
• Jak podejść do projektowania layoutów, aby ułatwić programiście
pracę przy budowaniu strony?
• Jakie są podejścia i metodyki pisania „obiektowego” kodu CSS?
sztyborek martasztybor.pl
W jakim celu powstał CSS?
• Strona internetowa napisana w języku HTML to tak naprawdę
dokument
• Za pomocą CSS możemy stylować elementy zwykle występujące w
dokumentach oraz formularzach
• CSS ma globalną naturę
• Czy to podejście sprawdza się w przypadku aplikacji i dużych
portali internetowych?
sztyborek martasztybor.pl
Cechy CSS
• Dziedziczenie – elementy podrzędne w HTML uzyskują cechy
rodzica
• Kaskadowość
• Specyficzność – zestaw reguł, który ustala, jakie właściwości ma
uzyskać dany element, jeśli kilka selektorów pasuje do danego
elementu w dokumencie
sztyborek martasztybor.pl
Przykładowy element
sztyborek martasztybor.pl
HTML CSS
<li id="doge">
<img src="img/dog1.jpg">
<div class="doge-info">
<h2 class="doge-name">
<a href="/doge">Pieseł</a>
</h2>
<ul class="doge-details">
<li>Samiec</li>
<li>8 lat</li>
</ul>
</div>
<footer class="footer">
<ul class="counter">
<li>93
<span class="icon"></span>
</li>
<li>5
<span class="icon"></span>
</li>
</ul>
</footer>
</li>
#doge {
font-size: 16px;
background-color: white;
border: 1px solid #ececec;
}
#doge img {
border-radius: 3px;
}
div.doge-info h2 {
color: #333333;
}
#doge footer .counter {
font-size: 11px;
}
.icon {
color: #EF88A8;
}
Nie róbcie tego w domu!
• Użycie takiego kodu będzie kłopotliwe, jeśli dany komponent jest
używany w wielu miejscach aplikacji (brak elastyczności)
• Zbyt duża specyficzność selektorów (kod spaghetti, łatwo
doprowadzić do rozrostu nadpisujących klas)
• Relacja 1:1 selektorów i struktury HTML
• Warto spojrzeć na layout „z lotu ptaka”
• A może pomocne okażą się paradygmaty znane z języków
programowania?
sztyborek martasztybor.pl
Programowanie obiektowe
• Żyjemy w świecie obiektów – wszystko, co nas otacza to „obiekty”
• W programowaniu obiektowym klasa to abstrakcja. Służy do opisu
cech i zachowania modelowanego rodzaju obiektów
• Definiujemy modele danych jako klasy obiektów
sztyborek martasztybor.pl
Zwierzę
Ssak
Pies Kot
Komponenty aplikacji jako obiekty
sztyborek martasztybor.pl
Komponenty aplikacji jako obiekty
• Projektując aplikację, aby zachować wizualną spójność tworzymy
powtarzalne wzorce (visual patterns)
• Komponent posiada ściśle zdefiniowane cechy, na które nie ma wpływu jego
umiejscowienie w aplikacji (enkapsulacja)
• Komponent może się składać z innych komponentów (kompozycja)
• W ten sposób możemy budować layout jak z cegiełek albo klocków
• Zaczynamy od najdrobniejszych powtarzających się elementów (np.
przyciski, pola tekstowe), poprzez bardziej złożone (np. menu, komentarze)
kończąc na całych layoutach
sztyborek martasztybor.pl
DRY
Don’t Repeat Yourself
CSS z klasą
• Naszą najpotężniejszą bronią przeciwko bałaganowi w kodzie są selektory
klas
• Klasa wskazuje na rodzaj komponentu (programowanie obiektowe)
• Odseparowujemy strukturę komponentu (HTML) od jego wyglądu (CSS)
• Rozwiązujemy problem ze specyficznością
sztyborek martasztybor.pl
Konwencje i metodyki CSS
• Jako konwencje nazewnicze ułatwiają czytanie i rozumienie kodu (kod się
częściowo sam dokumentuje). Zmuszają do bardziej przemyślanego
nazywania klas i przeciwdziałają konfliktom nazw
• Mogą być powiązane z architekturą komponentów w aplikacji – tworzyć
dodatkową warstwę abstrakcji do opisu jej wyglądu
• Bardziej przejrzysty i przemyślany kod prowadzi do mniejszej liczby
powtórzeń deklaracji. Krótszy plik CSS to szybsze ładowanie stylów na
stronie.
sztyborek martasztybor.pl
OOCSS
BEM
SMACSS
Atomic Design
Object Oriented CSS (OOCSS)
• Obiekt rozumiemy jako kawałek kodu HTML wraz z odpowiadającymi mu
klasami
• Separacja struktury od stylu
• Separacja kontenerów od ich zawartości
sztyborek martasztybor.pl
Object Oriented CSS (OOCSS)
sztyborek martasztybor.pl
HTML CSS
<li class="card">
<img src="dog1.jpg" class="card-img">
<div class="card-info">
<h2 class="card-title">
<a href="/doge">Pieseł</a>
</h2>
<ul class="card-details">
<li>Samiec</li>
<li>8 lat</li>
</ul>
</div>
<footer class="card-footer">
<ul class="counter">
<li>93
<span class="counter-icon"></span>
</li>
<li>5
<span class="counter-icon"></span>
</li>
</ul>
</footer>
</li>
.card {
font-size: 16px;
background-color: white;
border: 1px solid #ececec;
}
.card-img {
border-radius: 3px;
}
.card-title {
color: #333333;
}
.counter {
font-size: 11px;
}
.counter-icon {
color: #EF88A8;
}
Dla porównania, przypomnijmy...
sztyborek martasztybor.pl
HTML CSS
<li id="doge">
<img src="dog1.jpg">
<div class="doge-info">
<h2 class="doge-name">
<a href="/doge">Pieseł</a>
</h2>
<ul class="doge-details">
<li>Samiec</li>
<li>8 lat</li>
</ul>
</div>
<footer class="footer">
<ul class="counter">
<li>93
<span class="icon"></span>
</li>
<li>5
<span class="icon"></span>
</li>
</ul>
</footer>
</li>
#doge {
font-size: 16px;
background-color: white;
border: 1px solid #ececec;
}
#doge img {
border-radius: 3px;
}
div.doge-info h2 {
color: #333333;
}
#doge footer .counter {
font-size: 11px;
}
.icon {
color: #EF88A8;
}
Block Element Modifier (BEM)
• Blok, Element, Modyfikator
• Blok jest elementem nadrzędnym, wskazuje na komponent
• Element jest częścią składową bloku (subkomponent)
• Modyfikator określa wariant danego komponentu
sztyborek martasztybor.pl
Block Element Modifier (BEM)
• .block – nazwa klasy określająca blok
• .block__element – nazwa klasy określająca element
• .block—modifier – nazwa klasy określająca modyfikator
sztyborek martasztybor.pl
Przykładowy element
sztyborek martasztybor.pl
Jak, będąc projektantem, mogę tworzyć „obiektowe”
layouty?
• Traktuj aplikację jako zbiór pasujących do siebie i reużywalnych
komponentów
• Twórz spójny język wizualny
• Przygotuj UI kit lub bibliotekę komponentów (component library) dla
programisty
sztyborek martasztybor.pl
Materiały
https://github.com/sztyborek/obiektowy-css-demo
https://codepen.io/sztyborek/pen/RgjJEq
https://codepen.io/sztyborek/pen/ZyaRGE
sztyborek martasztybor.pl
Dziękuję za uwagę!

More Related Content

Similar to Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikacji i nie zwariować

WordUp Łódź - Sage - Twoje szablony będą jak supermodelki
WordUp Łódź - Sage - Twoje szablony będą jak supermodelkiWordUp Łódź - Sage - Twoje szablony będą jak supermodelki
WordUp Łódź - Sage - Twoje szablony będą jak supermodelkiInterSynergy
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychThe Software House
 
PSD do WP: od projektu graficznego do działającego serwisu
PSD do WP: od projektu graficznego do działającego serwisuPSD do WP: od projektu graficznego do działającego serwisu
PSD do WP: od projektu graficznego do działającego serwisuKrzysztof Łęcki
 
CSS. Antologia. 101 wskazówek i trików
CSS. Antologia. 101 wskazówek i trikówCSS. Antologia. 101 wskazówek i trików
CSS. Antologia. 101 wskazówek i trikówWydawnictwo Helion
 
Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...
Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...
Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...ecommerce2007
 
WordCamp 2011 Magdalena bród
WordCamp 2011 Magdalena bródWordCamp 2011 Magdalena bród
WordCamp 2011 Magdalena bródbunitas
 
Siebel Developer
Siebel DeveloperSiebel Developer
Siebel DeveloperAstekPolska
 
Wyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerWyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerKamil Nowinski
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuHighWheelSoftware
 
Access 2007 PL. Ćwiczenia praktyczne
Access 2007 PL. Ćwiczenia praktyczneAccess 2007 PL. Ćwiczenia praktyczne
Access 2007 PL. Ćwiczenia praktyczneWydawnictwo Helion
 
Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationMariusz Koprowski
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Mariusz Szatkowski
 
Page Object Pattern dla dużej aplikacji webowej
Page Object Pattern dla dużej aplikacji webowejPage Object Pattern dla dużej aplikacji webowej
Page Object Pattern dla dużej aplikacji webowejtestuj.pl
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaWydawnictwo Helion
 
Seo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiSeo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiAnton Shulke
 

Similar to Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikacji i nie zwariować (20)

Okiełznać SEO w WordPress
Okiełznać SEO w WordPressOkiełznać SEO w WordPress
Okiełznać SEO w WordPress
 
WordUp Łódź - Sage - Twoje szablony będą jak supermodelki
WordUp Łódź - Sage - Twoje szablony będą jak supermodelkiWordUp Łódź - Sage - Twoje szablony będą jak supermodelki
WordUp Łódź - Sage - Twoje szablony będą jak supermodelki
 
XHTML & CSS, WAI
XHTML & CSS, WAIXHTML & CSS, WAI
XHTML & CSS, WAI
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
PSD do WP: od projektu graficznego do działającego serwisu
PSD do WP: od projektu graficznego do działającego serwisuPSD do WP: od projektu graficznego do działającego serwisu
PSD do WP: od projektu graficznego do działającego serwisu
 
CSS. Antologia. 101 wskazówek i trików
CSS. Antologia. 101 wskazówek i trikówCSS. Antologia. 101 wskazówek i trików
CSS. Antologia. 101 wskazówek i trików
 
Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...
Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...
Konferencja e-commerce 2007 Web 3.0 - Internet semantyczny; Kazimierz Pogoda,...
 
WordCamp 2011 Magdalena bród
WordCamp 2011 Magdalena bródWordCamp 2011 Magdalena bród
WordCamp 2011 Magdalena bród
 
Css
CssCss
Css
 
Siebel Developer
Siebel DeveloperSiebel Developer
Siebel Developer
 
Wyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerWyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL Server
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
 
Access 2003 PL. Kurs
Access 2003 PL. KursAccess 2003 PL. Kurs
Access 2003 PL. Kurs
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
Access 2007 PL. Ćwiczenia praktyczne
Access 2007 PL. Ćwiczenia praktyczneAccess 2007 PL. Ćwiczenia praktyczne
Access 2007 PL. Ćwiczenia praktyczne
 
Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentation
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
 
Page Object Pattern dla dużej aplikacji webowej
Page Object Pattern dla dużej aplikacji webowejPage Object Pattern dla dużej aplikacji webowej
Page Object Pattern dla dużej aplikacji webowej
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. Encyklopedia
 
Seo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian SalkowskiSeo Surgery Polska 2 by Damian Salkowski
Seo Surgery Polska 2 by Damian Salkowski
 

More from The Awwwesomes

"Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg...
"Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg..."Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg...
"Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg...The Awwwesomes
 
Ux jako odpowiedzialność programisty - Kasia Iwańska
Ux jako odpowiedzialność programisty - Kasia IwańskaUx jako odpowiedzialność programisty - Kasia Iwańska
Ux jako odpowiedzialność programisty - Kasia IwańskaThe Awwwesomes
 
7 grzechów głównych - frontend i design
7 grzechów głównych - frontend i design7 grzechów głównych - frontend i design
7 grzechów głównych - frontend i designThe Awwwesomes
 
Koderskie doświadczenia 14-latka - Remigiusz Sęk
Koderskie doświadczenia 14-latka - Remigiusz SękKoderskie doświadczenia 14-latka - Remigiusz Sęk
Koderskie doświadczenia 14-latka - Remigiusz SękThe Awwwesomes
 
Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...
Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...
Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...The Awwwesomes
 
Badania z użytkownikami dla każdego - Agnieszka Winczakiewicz
Badania z użytkownikami dla każdego - Agnieszka WinczakiewiczBadania z użytkownikami dla każdego - Agnieszka Winczakiewicz
Badania z użytkownikami dla każdego - Agnieszka WinczakiewiczThe Awwwesomes
 
Projektowanie formularzy - Natalia Cackowska
Projektowanie formularzy - Natalia CackowskaProjektowanie formularzy - Natalia Cackowska
Projektowanie formularzy - Natalia CackowskaThe Awwwesomes
 

More from The Awwwesomes (7)

"Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg...
"Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg..."Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg...
"Cognitive overload, czyli jak nie przyprawić użytkownika o ból głowy" - Małg...
 
Ux jako odpowiedzialność programisty - Kasia Iwańska
Ux jako odpowiedzialność programisty - Kasia IwańskaUx jako odpowiedzialność programisty - Kasia Iwańska
Ux jako odpowiedzialność programisty - Kasia Iwańska
 
7 grzechów głównych - frontend i design
7 grzechów głównych - frontend i design7 grzechów głównych - frontend i design
7 grzechów głównych - frontend i design
 
Koderskie doświadczenia 14-latka - Remigiusz Sęk
Koderskie doświadczenia 14-latka - Remigiusz SękKoderskie doświadczenia 14-latka - Remigiusz Sęk
Koderskie doświadczenia 14-latka - Remigiusz Sęk
 
Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...
Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...
Jak przeprowadzać badania eyetracking, aby były wartością dodaną do testów z ...
 
Badania z użytkownikami dla każdego - Agnieszka Winczakiewicz
Badania z użytkownikami dla każdego - Agnieszka WinczakiewiczBadania z użytkownikami dla każdego - Agnieszka Winczakiewicz
Badania z użytkownikami dla każdego - Agnieszka Winczakiewicz
 
Projektowanie formularzy - Natalia Cackowska
Projektowanie formularzy - Natalia CackowskaProjektowanie formularzy - Natalia Cackowska
Projektowanie formularzy - Natalia Cackowska
 

Marta Sztybor - Zorientowany obiektowo CSS, czyli jak tworzyć layouty aplikacji i nie zwariować

  • 1. Zorientowany obiektowo CSS czyli jak tworzyć layouty aplikacji i nie zwariować Marta Sztybor @sztyborek martasztybor.pl
  • 2. O czym będzie ta prezentacja? • Do czego właściwie służy CSS i jak działa? • O co chodzi z tym programowaniem obiektowym? • Czy w CSS można pisać kod „zorientowany obiektowo”? I dlaczego jest to nieintuicyjne? • Jak podejść do projektowania layoutów, aby ułatwić programiście pracę przy budowaniu strony? • Jakie są podejścia i metodyki pisania „obiektowego” kodu CSS? sztyborek martasztybor.pl
  • 3. W jakim celu powstał CSS? • Strona internetowa napisana w języku HTML to tak naprawdę dokument • Za pomocą CSS możemy stylować elementy zwykle występujące w dokumentach oraz formularzach • CSS ma globalną naturę • Czy to podejście sprawdza się w przypadku aplikacji i dużych portali internetowych? sztyborek martasztybor.pl
  • 4. Cechy CSS • Dziedziczenie – elementy podrzędne w HTML uzyskują cechy rodzica • Kaskadowość • Specyficzność – zestaw reguł, który ustala, jakie właściwości ma uzyskać dany element, jeśli kilka selektorów pasuje do danego elementu w dokumencie sztyborek martasztybor.pl
  • 5. Przykładowy element sztyborek martasztybor.pl HTML CSS <li id="doge"> <img src="img/dog1.jpg"> <div class="doge-info"> <h2 class="doge-name"> <a href="/doge">Pieseł</a> </h2> <ul class="doge-details"> <li>Samiec</li> <li>8 lat</li> </ul> </div> <footer class="footer"> <ul class="counter"> <li>93 <span class="icon"></span> </li> <li>5 <span class="icon"></span> </li> </ul> </footer> </li> #doge { font-size: 16px; background-color: white; border: 1px solid #ececec; } #doge img { border-radius: 3px; } div.doge-info h2 { color: #333333; } #doge footer .counter { font-size: 11px; } .icon { color: #EF88A8; }
  • 6. Nie róbcie tego w domu! • Użycie takiego kodu będzie kłopotliwe, jeśli dany komponent jest używany w wielu miejscach aplikacji (brak elastyczności) • Zbyt duża specyficzność selektorów (kod spaghetti, łatwo doprowadzić do rozrostu nadpisujących klas) • Relacja 1:1 selektorów i struktury HTML • Warto spojrzeć na layout „z lotu ptaka” • A może pomocne okażą się paradygmaty znane z języków programowania? sztyborek martasztybor.pl
  • 7. Programowanie obiektowe • Żyjemy w świecie obiektów – wszystko, co nas otacza to „obiekty” • W programowaniu obiektowym klasa to abstrakcja. Służy do opisu cech i zachowania modelowanego rodzaju obiektów • Definiujemy modele danych jako klasy obiektów sztyborek martasztybor.pl
  • 8.
  • 10. Komponenty aplikacji jako obiekty sztyborek martasztybor.pl
  • 11. Komponenty aplikacji jako obiekty • Projektując aplikację, aby zachować wizualną spójność tworzymy powtarzalne wzorce (visual patterns) • Komponent posiada ściśle zdefiniowane cechy, na które nie ma wpływu jego umiejscowienie w aplikacji (enkapsulacja) • Komponent może się składać z innych komponentów (kompozycja) • W ten sposób możemy budować layout jak z cegiełek albo klocków • Zaczynamy od najdrobniejszych powtarzających się elementów (np. przyciski, pola tekstowe), poprzez bardziej złożone (np. menu, komentarze) kończąc na całych layoutach sztyborek martasztybor.pl
  • 12.
  • 14. CSS z klasą • Naszą najpotężniejszą bronią przeciwko bałaganowi w kodzie są selektory klas • Klasa wskazuje na rodzaj komponentu (programowanie obiektowe) • Odseparowujemy strukturę komponentu (HTML) od jego wyglądu (CSS) • Rozwiązujemy problem ze specyficznością sztyborek martasztybor.pl
  • 15. Konwencje i metodyki CSS • Jako konwencje nazewnicze ułatwiają czytanie i rozumienie kodu (kod się częściowo sam dokumentuje). Zmuszają do bardziej przemyślanego nazywania klas i przeciwdziałają konfliktom nazw • Mogą być powiązane z architekturą komponentów w aplikacji – tworzyć dodatkową warstwę abstrakcji do opisu jej wyglądu • Bardziej przejrzysty i przemyślany kod prowadzi do mniejszej liczby powtórzeń deklaracji. Krótszy plik CSS to szybsze ładowanie stylów na stronie. sztyborek martasztybor.pl
  • 17. Object Oriented CSS (OOCSS) • Obiekt rozumiemy jako kawałek kodu HTML wraz z odpowiadającymi mu klasami • Separacja struktury od stylu • Separacja kontenerów od ich zawartości sztyborek martasztybor.pl
  • 18. Object Oriented CSS (OOCSS) sztyborek martasztybor.pl HTML CSS <li class="card"> <img src="dog1.jpg" class="card-img"> <div class="card-info"> <h2 class="card-title"> <a href="/doge">Pieseł</a> </h2> <ul class="card-details"> <li>Samiec</li> <li>8 lat</li> </ul> </div> <footer class="card-footer"> <ul class="counter"> <li>93 <span class="counter-icon"></span> </li> <li>5 <span class="counter-icon"></span> </li> </ul> </footer> </li> .card { font-size: 16px; background-color: white; border: 1px solid #ececec; } .card-img { border-radius: 3px; } .card-title { color: #333333; } .counter { font-size: 11px; } .counter-icon { color: #EF88A8; }
  • 19. Dla porównania, przypomnijmy... sztyborek martasztybor.pl HTML CSS <li id="doge"> <img src="dog1.jpg"> <div class="doge-info"> <h2 class="doge-name"> <a href="/doge">Pieseł</a> </h2> <ul class="doge-details"> <li>Samiec</li> <li>8 lat</li> </ul> </div> <footer class="footer"> <ul class="counter"> <li>93 <span class="icon"></span> </li> <li>5 <span class="icon"></span> </li> </ul> </footer> </li> #doge { font-size: 16px; background-color: white; border: 1px solid #ececec; } #doge img { border-radius: 3px; } div.doge-info h2 { color: #333333; } #doge footer .counter { font-size: 11px; } .icon { color: #EF88A8; }
  • 20. Block Element Modifier (BEM) • Blok, Element, Modyfikator • Blok jest elementem nadrzędnym, wskazuje na komponent • Element jest częścią składową bloku (subkomponent) • Modyfikator określa wariant danego komponentu sztyborek martasztybor.pl
  • 21. Block Element Modifier (BEM) • .block – nazwa klasy określająca blok • .block__element – nazwa klasy określająca element • .block—modifier – nazwa klasy określająca modyfikator sztyborek martasztybor.pl
  • 23. Jak, będąc projektantem, mogę tworzyć „obiektowe” layouty? • Traktuj aplikację jako zbiór pasujących do siebie i reużywalnych komponentów • Twórz spójny język wizualny • Przygotuj UI kit lub bibliotekę komponentów (component library) dla programisty sztyborek martasztybor.pl