CSS 'n stuff Antti Mattila @anttti Agenda CSS: Käytännön ongelmat CSS: Käytännön ratkaisut Workflow CSS Käytännön ongelmat Yksi namespace Kehittäjä A, ajanhetkellä n: /* style.css, line 30 */ .alert { background: red; color: white; } Kehittäjä B, ajanhetkellä n+100: /* style.css, line 2564 */ .alert { color: red; border: 1px solid red; } !important Konstikas cascade .element { float: left; } @media screen and (max-width: 600px) { .element { float: none; } } vs. mobile first: @media screen and (min-width: 600px) { .element { float: left; } } Deep coupling HTML:n kanssa <div id="box"> <ul> <li> <a href="#">This is a link</a> </li> </ul> </div> #box ul a { display: block; float: left; margin: 0; } Deep coupling JavaScriptin kanssa .js--is-visible Selainyhteensopivuus CSS Käytännön ratkaisut Selainyhteensopivuus Graceful degradation Progressive enhancement caniuse.com Arkkitehtuuri Mobile first Tiedostojako @import @import @import @import "general.css"; "header.css"; "footer.css"; "sidebar.css"; @import @import @import @import "general"; "header"; "footer"; "sidebar"; colors.scss a { color: #b4d455; } colors.scss $link-color: #b4d455; a { color: $link-color; } colors.scss $primary-color: #b4d455; $link-color: $primary-color; a { color: $link-color; } variables.scss & typography.scss // variables.scss $baseFontFamily: "Open Sans", Helvetica, Arial, sans-serif; $baseFontSize: 16px; $baseFontWeight: 400; // typography.scss body { font-family: $baseFontFamily; font-size: $baseFontSize; font-weight: $baseFontWeight; } Metodologiat • BEM • SMACSS • OOCSS BEM .block {} .block__element {} .block--modifier {} BEM .site-search {} .site-search__field {} .site-search--is-open {} CSS Wizardry: MindBEMding BEM & .u-- -luokat Resetit • * { margin: 0; padding: 0; } • Meyer Reset • Normalize.css Sass-apukirjastot • Compass • Bourbon Frameworkit • Bootstrap • Foundation • Pure.css <div class="container"> <div class="row"> <div class="col-md-8"> <div class="row"> <div class="col-md-8"> ... </div> </div> </div> </div> </div> Workflow Chrome DevTools Setup Develop Build Setup • HTML5 Boilerplate • Bootstrap / Foundation • jQuery, Polymer, React... Develop • Watch • Livereload • Linttaus • ... Build • Linttaus • Concatenointi • Minifiointi • Kuvien optimointi • ... Develop Build Sass ➜ CSS • CodeKit Sass ➜ CSS 1 sass input.scss output.css 1 sass Minifiointi • Smaller • cssminifier.com Minifiointi 2 cleancss -o output.css input.css 2 cleancss Linttaus • CSS Lint Linttaus 3 scss-lint sass/**/*.scss 3 SCSS-lint Livereload • LiveReload Livereload browser-sync start --server --files "css/*.css, 4 *.html" 4 BrowserSync Kuvien optimointi • ImageOptim Kuvien optimointi 5 imagemin input output 5 imagemin Sass → CSS Minifiointi Linttaus Livereloadaus Kuvien optimointi CodeKit CLI. Node.js & NPM 1- install node.js 2- install git ... 15- install jscs 16- install jslint ... 21- install grunt 22- install broccoli 23- install gulp ... 32- install yeoman ... 45- install mocha 46- install karma ... 81- start coding HTML 82- start coding CSS 83- start coding JS 84- display "Hello w" in the browser window 85- start debugging and finding what part has swallow "orld" CLI! Toistettava Jaettava Automatisoitava Gulp Gulp sass cleancss scss-lint browser-sync imagemin ! ! ! ! ! gulp-sass gulp-minify gulp-scss-lint browser-sync gulp-imagemin Duunia? JBWS! GitHub T/π tammerforce.futurice.com Linkkejä • CSS-tricks • HTML5 Rocks • Mozilla Developer Network • DevDocs • DevTools State of the Union Lähteet • Gulp streams -kuva: Addy Osmani, Front-end Tooling Workflows Kiitti! @anttti BONUS @extend & @mixin @extend .is-highlighted { font-weight: bold; text-shadow: 1px 1px 0 #333; } strong { @extend .is-highlighted; } .nav-menu-item { @extend .is-highlighted; } p.important { @extend .is-highlighted; color: #555; } @extend strong, .nav-menu-item, p.important { font-weight: bold; text-shadow: 1px 1px 0 #333; } p.important { color: #555; } @extend .product .single_add_to_cart_button, .cart .button, input.checkout-button.alt.button, .shipping-calculator-form .button, .multistep_step .button, #place_order.button, .single-product .single_add_to_cart_button.button.alt, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit, .woocommerce #content input.button, .woocommerce-page a.button, .woocommerce-page button.button, .woocommerce-page input.button, .woocommerce-page #respond input#submit, .woocommerce-page #content input.button { background-color: #605f5e; } @mixin HSLa Hue Saturation Lightness alpha Hue (°) Saturation (%) Lightness (%) alpha (0-1) hsla(218, 54%, 32%, 1) rgba(37, 68, 126, 1) #25447e (ei alphaa)
© Copyright 2025