Componentização

GDG - RE

Clóvis Neto

Full Stack Developer Enginner

Digital Bits

Tableless

facebook.com/ClovisDaSilvaNeto

github.com/clovisdasilvaneto

@clovissneto

Em 2012...

( Felipe Fialho )

Um piano...

( Felipe Fialho )

Um xadrez

( Felipe Fialho )

Soluções para projetos?

É possível utilizar componentes desenvolvidos apenas com CSS?

Massa... Mas quais são as técnicas?

Pseudo-Elements

Pseudo-Elements

são usados em CSS para adicionar efeitos diferentes em alguns seletores, ou parte de alguns seletores.

:target

Podemos utilizar o :target para adicionar uma interação com um elemento que possui o ID atrelado em algum elemento [href]

HTML

<a href="#menu">Open menu :)</a>

<nav id="menu">
    <ul>    
	<li><a href="">Home</a></li>
	<li><a href="">About</a></li>
	<li><a href="">Contact</a></li>
    </ul>
</nav>

CSS


a[href="#menu"] {  
    text-align: center;
    display: block;
    position: absolute;
    top: 50%;
    z-index: 2;
    margin-top: -200px;
    text-decoration: none;
    width: 100%;
    font-size: 50px;
    color: #229394;
    -webkit-transition:all ease 0.5s;
    -o-transition:all ease 0.5s;
    transition:all ease 0.5s;
}

#menu:target {
    /* Go Code */
}

:checked && ~

Com o :checked, podemos capturar uma interação no elemento alvo e assim utilizamos o ~ para capturar o irmão do elemento em que ocorreu a interação...

HTML

<!-- Collapse -->
<div class="collapse">

  <label class="collapse-btn" for="collapse-1">Lorem ipsum dolor sit amet</label>
  <input class="collapse-open" type="checkbox" id="collapse-1" aria-hidden="true" hidden />

  <div class="collapse-content">
    <div class="collapse-inner">
      ...
    </div>
  </div>

</div>

CSS

.collapse-panel {
  display: none;
}

.collapse-open:checked ~ .collapse-panel {
  display: block;
}

Shoow! :)

CSS COMPONENTS

Mas e a performance?

Um pequeno teste...

Antes

Um resultado de teste no GTMetrix antes da alteração.

Oque foi feito?

1- Todo o js do site foi removido

2 - Passou-se a usar o Modal e o Collapse do framework 

Resultado

Teste Final

1- O carregamento dos icones foi removido e o CSS embedado

Resultado Final

ajustes que muitas vezes esquecemos de fazer, como diminuir requisições, podem causar um impacto muito maior na perfomance de um projeto.

Obrigado!

@clovissneto

facebook.com/ClovisDaSilvaNeto

Componentização com css3

By Clóvis Neto

Componentização com css3

Aprenda como criar componentes customizados utilizando apenas css3

  • 1,494