1 RT = 1 dica rápida de front-end
.description[lang="en"] { color: red };
.description[lang="pt-br"] { color: blue };
felipefialho.com/css-components…
a[class="active"]
span[class*="icon-"]
span[class~="icon arrow-right"]
span[class^="icon"]
a[href^="https://"]
[disabled] { cursor: not-allowed; }
<li class="last">
li { border: black solid 1px; }
.last { border: 0 }
:last-child { border: 0 }
li:not(:last-child} { border: black solid 1px; }
felipefialho.com/blog/2016/css-…
div:empty { display: none }
.btn:last-child:not(:first-child)
.header:not(.active) + .main .title:not(h2)
.btn.active + .btn { color: red }
.btn.active ~ .btn { color: red }
input[type="checkbox"]:checked ~ p { color: red; }
p { display: none; }
input[type="checkbox"]:checked ~ p { display: block; }
Essa é a base de todos os joguinhos e componentes desenvolvidos somente com CSS e apesar de parecer bruxaria, você acabou de ver que é super simples.
felipefialho.com/blog/2014/e-po…
- # header
- .header
- header
- nav + header
- main > h1
- main header
- *
- [type="text"]
- .header:before, header: after
body header ul li
Colisão de estilos é a maior causa de problemas quando trabalhamos com CSS em grandes projetos.
- CSS Modules
- CSS-in-JS
Elas garantem que o estilo não vaze para outros componentes.
github.com/LFeh/kratos-bo…
Ao invés de usar: .header__title
Você pode usar só: .title
Tipo em um header com logo na esquerda e um botão de menu na direita, na qual você pode usar:
.header {
align-items: center;
display: flex;
justify-content: space-between;
height: 60px;
}
Também funciona muito bem para criar uma lista de cards por exemplo.
Além de escalar fácil no mobile.
Costuma funcionar melhor usar o conceito mobile-first e ir escalar o componentes subindo as resoluções.
Isso significa que pode manter tudo que for genérico pra todas as resoluções fora das media-queries e dentro dela apenas o que for especifico daquela resolução.
felipefialho.com/blog/2015/otim…
Eu costumo adicionar como irmão das tags <header> e <footer> principais.
<body>
<header><header>
<main></main>
<footer></footer>
</body>
Eles podem ser usados para definir cabeçalho ou rodapé de qualquer contexto, como dentro de <article> ou <section> por exemplo.
github.com/frontendbr/for…
Você também pode ter multiplos <nav> pela aplicação.
Ele permite fornecer um feedback para o usuário caso o JavaScript não esteja disponível por algum motivo.
developer.mozilla.org/pt-BR/docs/Web…
Sou apaixonado pelo MDN. É o lugar que mais sinto confiança em validar as coisas e sempre aprendo alguma coisa nova.
developer.mozilla.org
Dica de ouro da @larienmf 😄
WAI-ARIA é dividido em duas categorias: roles e states / properties.
<div role="dialog">
<header role="banner">
<footer role="contentinfo">
Funciona bem com ícones:
<svg aria-hidden="true">
De novo um exemplo com ícone:
<svg aria-label="Facebook">
É uma maneira de fornecer acessibilidade e significado para as tags que você criou.
felipefialho.com/blog/2016/sobr…
:before { content: "Já acabou?"; }
:inline { content: "Ainda não"; }
Detalhe que por padrão eles são inline.
Pensa que com apenas 1 elemento HTML, você na verdade tem 3. Isso abre um mar de possibilidades.
Significa que o texto não será acessível.
Use apenas para complementos puramente visuais.
Desenvolva componentes separados e faça com que o agrupamento deles vire a página.
Isso vale tanto para aplicações SPAs como pra projetos estáticos.
Converse com sua equipe, principalmente designers, e explique sobre componentes e como todas as aplicações modernas são baseadas neles.
Isso vai fazer seus códigos ficarem muito mais assertivos.