hogyan írjunk fenntartható css-t?

61
Hogyan írjunk fenntartható CSS-t? Hajas Tamás

Upload: hajas-tamas

Post on 17-Jul-2015

119 views

Category:

Internet


3 download

TRANSCRIPT

Page 1: Hogyan írjunk fenntartható CSS-t?

Hogyan írjunk fenntartható CSS-t?

Hajas Tamás

Page 2: Hogyan írjunk fenntartható CSS-t?

Hajas TamásDrupal tanácsadó Integral Vision Kft

Page 3: Hogyan írjunk fenntartható CSS-t?

Egyetlen helyes út!

Page 4: Hogyan írjunk fenntartható CSS-t?

Egyetlen helyes út NINCS!

Page 5: Hogyan írjunk fenntartható CSS-t?

Csapat

Page 6: Hogyan írjunk fenntartható CSS-t?

Csapat » Kommunikáció

Page 7: Hogyan írjunk fenntartható CSS-t?

Coding Standards

Page 8: Hogyan írjunk fenntartható CSS-t?

Drupal CSS Coding Standards https://www.drupal.org/node/1886770

Page 9: Hogyan írjunk fenntartható CSS-t?

Harry Roberts CSS Guidelines http://cssguidelin.es

Page 10: Hogyan írjunk fenntartható CSS-t?

CSS kód formátum CSS kód felépítés CSS fájl struktúra

Page 11: Hogyan írjunk fenntartható CSS-t?

CSS kód formátum CSS kód felépítés CSS fájl struktúra

Page 12: Hogyan írjunk fenntartható CSS-t?

Kommentáld a kódodat!

Page 13: Hogyan írjunk fenntartható CSS-t?

Csapat » Kommunikáció

Page 15: Hogyan írjunk fenntartható CSS-t?

„a kód magától értetődő„kell legyen”

Page 16: Hogyan írjunk fenntartható CSS-t?

/** * Grid container * Must only contain '.cell' children. */ .grid { height: 100%; !

font-size: 0; !

white-space: nowrap; }

Page 17: Hogyan írjunk fenntartható CSS-t?

/** * Grid container * Must only contain '.cell' children. */ .grid { height: 100%; /* Remove inter-cell whitespace */ font-size: 0; /* Prevent inline-block cells wrapping */ white-space: nowrap; }

Page 18: Hogyan írjunk fenntartható CSS-t?

/** * Grid container * Must only contain '.cell' children. * 1. Remove inter cell whitespace. * 2. Prevent inline-block cells wrapping */ .grid { height: 100%; font-size: 0; /* 1 */ white-space: nowrap; /* 2 */ }

Page 19: Hogyan írjunk fenntartható CSS-t?

eszközök:

CSScomb .editorconfig

Page 20: Hogyan írjunk fenntartható CSS-t?

CSS kód formátum CSS kód felépítés CSS fájl struktúra

Page 21: Hogyan írjunk fenntartható CSS-t?

Túl komplex kiválasztó

CSS problémák a HTML struktúra követése

div.block .title a:link { #sidebar-first & { .node-19 & {} } }

Page 22: Hogyan írjunk fenntartható CSS-t?

”Qualified ”selectors”

div.block .title a:link { #sidebar-first & { .node-19 & {} } }

CSS problémák a HTML struktúra követése

Page 23: Hogyan írjunk fenntartható CSS-t?

Környezet alapú kiválasztás

div.block .title a:link { #sidebar-first & { .node-19 & {} } }

CSS problémák

Page 24: Hogyan írjunk fenntartható CSS-t?

Gyermek kiválasztók túl általános class névvel

div.block .title a:link { #sidebar-first & { .node-19 & {} } }

CSS problémák

Page 25: Hogyan írjunk fenntartható CSS-t?

„A CSS osztály nevek hasznos információt kell szolgáltassanak a fejlesztőknek” – Nicolas Gallagher

About HTML Semantics and Front-End Architecture

Page 26: Hogyan írjunk fenntartható CSS-t?

.red-box {} !

.message--error {}

Page 27: Hogyan írjunk fenntartható CSS-t?

Az ID kiválasztó használata stílushoz

div.block .title a:link { #sidebar-first & { .node-19 & {} } }

CSS problémák

Page 28: Hogyan írjunk fenntartható CSS-t?

Az !important „felülíró” használata

div.block .title a:link { #sidebar-first & { .node-19 & { …!important; } } }

CSS problémák

Page 30: Hogyan írjunk fenntartható CSS-t?

body #content .data img:hover {} !!!! #content .data img :hover body 0*1000 + 1*100 + 2*10 + 2*1 = 122 0 1 2 2 » 122

Specifikusság példa

Page 31: Hogyan írjunk fenntartható CSS-t?

CSS kód formátum CSS kód felépítés CSS fájl struktúra

Page 32: Hogyan írjunk fenntartható CSS-t?

SMACSS

See purecss.io for kind of an implementation

Page 33: Hogyan írjunk fenntartható CSS-t?

• Base

SMACSS CSS fájl-struktúra

ul { list-style-type: none; padding: 0; margin: 0; }

Page 34: Hogyan írjunk fenntartható CSS-t?

• Base • Layout

SMACSS CSS fájl-struktúra

Page 35: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Module

SMACSS CSS fájl-struktúra

Page 36: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Module • State

SMACSS CSS fájl-struktúra

.is-open :hover @media

Page 37: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Module • State • Theme

SMACSS CSS fájl-struktúra

Page 38: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Module • State • Theme

SMACSS-szerű CSS fájl-struktúra

Page 39: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Component Module • State • Theme

SMACSS-szerű CSS fájl-struktúra

Page 40: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Component Module

• State • Theme

SMACSS-szerű CSS fájl-struktúra

Page 41: Hogyan írjunk fenntartható CSS-t?

Component

Atom, Molecule… Atomic Design

Module SMACSS

Object OOCSS

Block BEM

Page 42: Hogyan írjunk fenntartható CSS-t?

base • elements.css • typography.css layout • layout.css • node-add.css • …

components • buttons.css • buttons.theme.css • … theme • install-page.css • appearance-

page.css

SMACSS-szerű CSS fájl-struktúra (Drupal 8)

Forrás: Drupal 8 Seven theme

Page 43: Hogyan írjunk fenntartható CSS-t?

base layout components shame.scss no-query.scss style.scss

Egy lehetséges Sass fájl struktúra

config • _extendables.scss • _functions.scss • _mixins.scss • _variables.scss

Page 44: Hogyan írjunk fenntartható CSS-t?

Tipp: Sass Globbing

@import "config/**/*", "base/**/*", "layout/**/*", "components/**/*";

https://github.com/chriseppstein/sass-globbing

Page 45: Hogyan írjunk fenntartható CSS-t?

CSS kód formátum CSS kód felépítés CSS fájl struktúra

Page 47: Hogyan írjunk fenntartható CSS-t?

• Base • Layout • Component

• Block• Element• Modifier• State• Theme

John Albin: Managing complex projects with design components

Page 48: Hogyan írjunk fenntartható CSS-t?

<div class="flower__bed"> <div class="flower"> <div class="flower__petals"> <div class="flower__face"></div> </div> <div class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div>

John Albin: Managing complex projects with design components

Component • Block

Page 49: Hogyan írjunk fenntartható CSS-t?

<div class="flower__bed"> <div class="flower"> <div class="flower__petals"> <div class="flower__face"></div> </div> <div class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div>

John Albin: Managing complex projects with design components

Component • Element

Page 50: Hogyan írjunk fenntartható CSS-t?

<div class="flower__bed"> <div class="flower flower--tulip"> <div class="flower__petals"> <div class="flower__face"></div> </div> <div class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div>

John Albin: Managing complex projects with design components

Component • Modifier

Page 51: Hogyan írjunk fenntartható CSS-t?

<div class="flower__bed"> <div class="flower is-pollinating"> <div class="flower__petals"> <div class="flower__face"></div> </div> <div class="flower__stem"> <div class="flower__leaves"></div> </div> </div> </div>

John Albin: Managing complex projects with design components

Component • State

Page 52: Hogyan írjunk fenntartható CSS-t?

John Albin: Managing complex projects with design components

Component • State

.flover:hover {}

Page 53: Hogyan írjunk fenntartható CSS-t?

@media "print" { .flover {} }

John Albin: Managing complex projects with design components

Component • State

Page 54: Hogyan írjunk fenntartható CSS-t?

Proposal: A Style Guide for Seven

Progress bar component

Page 55: Hogyan írjunk fenntartható CSS-t?

CSS architecture (for Drupal 8)

Progress bar component

<div class="progress progress--small"> <label class="label label--small">Uploading sunset.jpg</label> <div class="progress__track"> <div class="progress__bar" style="width: 29%"></div> </div> <div class="progress__description"> <div class="layout-pull">Uploaded 221 of 762KB</div> <strong class="layout-push">29%</strong> </div> <a class="progress__cancel" href="#" title="cancel"> <span class="visually-hidden">cancel</span> </a> </div>

Page 56: Hogyan írjunk fenntartható CSS-t?

CSS architecture (for Drupal 8)

Progress bar component

/** * Progress Bar component */ .progress {} .progress__track {} .progress__bar {} .progress__description {} .progress__cancel {} .progress__cancel:focus, .progress__cancel:hover {} /** * Progress Bar small variant */ .progress--small .progress__track {} .progress--small .progress__bar {} .progress--small .progress__cancel {}

Page 57: Hogyan írjunk fenntartható CSS-t?

Classicitis?!

Page 58: Hogyan írjunk fenntartható CSS-t?

<div class="media attribution"> <a href="http://twitter.com/stubbornella" class="img"> <img src="http://stubbornella.com/profile_image.jpg" alt="me" /> </a> <div class="bd"> @Stubbornella 14 minutes ago </div> </div>

/* ====== media ====== */ .media {margin:10px;} .media, .bd {overflow:hidden; _overflow:visible; zoom:1;} .media .img {float:left; margin-right: 10px;} .media .img img{display:block;} .media .imgExt{float:right; margin-left: 10px;}

http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/

Page 59: Hogyan írjunk fenntartható CSS-t?

%media { overflow: hidden; &:first-child { float: left; } &:last-child { overflow: hidden; } }

.status { @extend %media // ... } !.profile { @extend %media // ... }

http://ianstormtaylor.com/oocss-plus-sass-is-the-best-way-to-css

Page 60: Hogyan írjunk fenntartható CSS-t?

Egyetlen helyes út NINCS!

Page 61: Hogyan írjunk fenntartható CSS-t?

Tamás HajasDrupal consultant Integral Vision Ltd integralvision.hu about.me/tamashajas