• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Construindo seu framework CSS
 

Construindo seu framework CSS

on

  • 15,498 views

Construir um framework é basicamente escrever o CSS do jeito certo, ou seja, escrever código sem dependências, modular, leve e altamente documentado. ...

Construir um framework é basicamente escrever o CSS do jeito certo, ou seja, escrever código sem dependências, modular, leve e altamente documentado.

Palestra feita pela primeira vez na QCon 2013.

Statistics

Views

Total Views
15,498
Views on SlideShare
2,544
Embed Views
12,954

Actions

Likes
25
Downloads
137
Comments
7

26 Embeds 12,954

http://tableless.com.br 12181
http://cloud.feedly.com 513
http://digg.com 92
http://reader.aol.com 43
http://www.feedspot.com 26
http://myreader.com.br 20
http://127.0.0.1 16
http://summary 11
http://www.goread.io 9
http://paulo.ghost.io 9
http://newsblur.com 8
https://www.facebook.com 5
http://feedly.com 3
http://flavors.me 3
http://www.inoreader.com 3
http://plus.url.google.com 2
http://www.plugmasters.com.br 1
http://translate.googleusercontent.com 1
http://aggregga.com 1
http://feedreader.com 1
http://pt.flavors.me 1
http://192.241.204.123 1
https://www.inoreader.com 1
http://feedproxy.google.com 1
http://wusics.com 1
http://172.16.32.157 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

17 of 7 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Construindo seu framework CSS Construindo seu framework CSS Presentation Transcript

    • CONSTRUINDO UM FRAMEWORK CSS
    • DIEGO EIS slideshare.net/diegoeis bit.ly/locawebstyle @diegoeis @tableless tableless.com.br
    • POR QUE USAR UM FRAMEWORK?
    • PROTOTIPAÇÃO A equipe pode simular o real para chegar a conclusões mais precisas.
    • PRODUTIVIDADE Menos tempo montando wireframes, menos tempo desenhando um layout, menos tempo codificando.
    • MANUTENÇÃO FÁCIL Facilita a manutenção diminuindo o tempo de retrabalho.
    • PADRÃO PRA TUDO Padroniza layout. Padroniza comportamento. Padroniza elementos. Padroniza estrutura. Padroniza código.
    • CONTROLE Um erro pode ser resolvido para todos os sistemas. Uma atualização afeta todos os projetos.
    • POR QUE NÃO USAR UM FRAMEWORK?
    • HTML ENGESSADO O HTML tem que ser bem pensado no início.
    • LAYOUTS DIFERENTES Fica muito difícil de manter se os layouts forem muito diferentes.
    • ATUALIZAÇÃO FREQUENTE E equipe precisa trabalhar no framework, não nos projetos.
    • CURVA DE APRENDIZADO Quando há alguém novo na equipe, a curva de aprendizado não pode ser longa.
    • POR QUE EXISTEM OUTROS NO MERCADO Não reinvente a roda se você não tem um problema específico para resolver.
    • PRINCÍPIOS PRÁTICOS
    • A estrutura de arquivos inicial
    • stylesheetsjavascripts assets
    • colors.css print.css etc...layout reset.css fonts.css base.css etc...base grids.css etc... structure buttons.css collapse.css sliders.css header.css etc... modules
    • // // Manifest // @import “config” @import “structure/grid” @import “base/functional-classes” @import “base/reset” @import “base/mixins” @import “base/extends” @import “base/base” @import “base/fonts” @import “base/icons” @import “base/typography” @import “modules/header” @import “modules/footer” @import “modules/sidebar” @import “modules/collapse” @import “modules/tabs” @import “modules/buttons” @import “layout/colors/colors”
    • MODULARIZE COMPONENTES Módulos são como legos: plugando diversas peças você forma uma peça maior.
    • Módulo
    • Módulo
    • Módulo
    • CSS INCREMENTAL Customize elementos aplicando multiplas classes. Um botão pode ter vários tamanhos, cores ou posições.
    • .btn .btn .btn-large .btn .btn-large .btn-primary .btn .btn-large .btn-primary .ico-star cuidado para não misturar informação com formatação.
    • EVITE TAGS EM SELETORES Mantenha foco nas classes. Um componente pode ser feito usando diferentes tags.
    • Isso pode ser um: • link • input button • span • etc... .btn
    • MINIMIZE SELETORES Quem escreve seletor comprido faz xixi na cama.
    • { ! margin-right: 0; ! padding-right: 0; ! box-shadow: none; } a#main_container.menu_style.menu_orientation_horizontal #site_menu .wrapper ul li:last-child
    • SEPARE O CONTEÚDO DO CONTAINER O estilo do conteúdo não pode ser dependente do seu container. Para isso, trate o container como um módulo.
    • Um título legal Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mauris erat, egestas sit amet vestibulum quis, pulvinar in sem. Sed elit leo, tincidunt at tempus quis, gravida sit amet arcu. Fusce suscipit mattis odio, vel scelerisque libero. Donec et ligula eget augue porta blandit sit amet vel dui. um botão Um título legal Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mauris erat, egestas sit amet vestibulum quis, pulvinar in sem. Sed elit leo, tincidunt at tempus quis, gravida sit amet arcu. Fusce suscipit mattis odio, vel scelerisque libero. Donec et ligula eget augue porta blandit sit amet vel dui. um botão .box-dark .box-uiui
    • SEPARE A ESTRUTURA DO LAYOUT Você pode ter a liberdade de estilizar a estrutura. O container pode ser estruturado de várias formas, com diferentes layouts.
    • Um título legal Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mauris erat, egestas sit amet vestibulum quis, pulvinar in sem. Sed elit leo, tincidunt at tempus quis, gravida sit amet arcu. um botão .grid-4 .box-dark Rosinha, chuchu! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mauris erat, egestas sit amet vestibulum quis, pulvinar in sem. Sed elit leo, tincidunt at tempus quis, gravida sit amet arcu. Sed elit leo, tincidunt at tempus quis, gravida sit amet arcu. um botão .grid-4 .box-uiui Um título legal Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mauris erat, egestas sit amet vestibulum quis, pulvinar in sem. Sed elit leo, tincidunt at tempus quis, gravida sit amet arcu. um botão
    • FONTS PARA ÍCONES Com fonts você consegue aumentar o tamanho e consegue mudar a cor.
    • [class*="ico-"]:before {   display: inline-block;   font-family: font-icon;   speak: none; } .ico-keyboard:before {content: "22";} .ico-split:before {content: "23";} .ico-up-dir:before {content: "24";} .ico-right-dir:before {content: "25";}
    • icomoon.io fontello.com
    • MIXINS PARA CÓDIGOS ESPECIAIS Os mixins te ajudam na repetição e na inserção de código especiais. Como fazer setas, código de clearfix e etc.
    • // ARROWS // Cria setas. // $arrow-color define a cor da seta. $arrow-size define o tamanho da seta. @mixin arrow-structure   content: ""   display: inline-block   width: 0   height: 0 @mixin arrow-up($arrow-color, $arrow-size)   @include arrow-structure   border-left: $arrow-size solid transparent   border-right: $arrow-size solid transparent   border-bottom: $arrow-size solid $arrow-color @mixin arrow-down($arrow-color, $arrow-size)   @include arrow-structure   border-left: $arrow-size solid transparent   border-right: $arrow-size solid transparent   border-top: $arrow-size solid $arrow-color @mixin arrow-right($arrow-color, $arrow-size)   @include arrow-structure   border-top: $arrow-size solid transparent   border-bottom: $arrow-size solid transparent   border-left: $arrow-size solid $arrow-color
    • .title-dropdown " font: .81em verdana font-weight: bolder " color: #2a2a2a " &:after " @include arrow-down(#000, 5px) " " margin: 0 0 0 5px
    • VARIÁVEIS As variáveis te ajudam a não perder o padrão durante o projeto.
    • // GRID // Adequando a largura máxima para o GRID // Todo o resto é controlado pelo Bootstrap $small-screens: "only screen and (max-width: 980px)" $medium-screens: "only screen and (min-width: 980px)" $big-screens: "only screen and (min-width: 1200px)" // Smartphones e telas pequenas @media #{$small-screens} " // Seu código aqui se houver // Tablets e telas médias @media #{$medium-screens} " // Seu código aqui se houver // Desktops @media #{$big-screens} " // Seu código aqui se houver
    • // Para mobile (mobile first) .header " border-bottom: 4px solid $gray1 " background-color: $gray2 // Desktops @media #{$big-screens} " .header " " border-top: 4px solid #bbb " " background-color: #FFF " " margin-bottom: 10px
    • variáveis com cores
    • // // Cor verde // $theme-color: ".color-green" $color1: #8ecf00 $color2: #00a272 $color3: #519700 $color4: #f8fcf0 $color5: #163400
    • #{$theme-color} " a " " color: $color2 " .header " " background-color: $color1 " " border-bottom-color: $color3 " " .menu " " " a " " " border-left-color: $color1
    • NÃO TRAVE AS DIMENSÕES O grid controla a largura. O conteúdo controla a altura. Não trave essas dimensões a não ser que seja extremamente necessário.
    • ALGUMAS CONSIDERAÇÕES...
    • LEVE E RÁPIDO Compilar e minificar seu CSS pode não ser o bastante. Não tente abraçar todos os browsers. Gracefull Degradation e Progressive Enhancement devem estar no seu sangue.
    • SIMPLES Simples de aprender. Simples de implementar em um projeto. Simples de atualizar. Simples de fazer manutenção.
    • MODULAR Possibilidade de combinar componentes para criar elementos de layout.
    • TENHA POUCAS DEPENDÊNCIAS Não saia colocando plugins e outras depêndencias a não ser que sejam úteis para a maioria dos projetos que usarão o framework.
    • REGRA DA SIMILARIDADE Se dois elementos são muito parecidos para estarem em uma página, provavelmente eles são muito parecidos para serem incluídos no framework. Então, escolha um.
    • MANTENHA UMA DOCUMENTAÇÃO ATUALIZADA A documentação não é importante apenas pra você, mas para outras equipes como UX e Back-end. Se o framework for público, outros devs usarão também.
    • USE PRÉ PROCESSADORES COM CUIDADO Pré processadores podem te ajudar em diversas tarefas, mas a sopa de Mixins, Extends e variáveis pode te fazer perder o controle.
    • RESUMINDO: TUDO SE TRATA DE OOCSS CSS Orientado a Objeto não é nada mais do que CSS escrito do jeito certo.
    • ENTÃO, FECHOU! A palestra vai ficar aqui: slideshare.net/diegoeis @diegoeis @tableless tableless.com.br bit.ly/locawebstyle