Uma coleção de dicas para aumentar suas habilidades no CSS.
Dê uma olhada em mais algumas listas fantásticas mantidas por [@sindresorhus](https://github.com/sindresorhus/).
box-sizing
      unset em vez de redefinir todas as propriedades
      :not() para Aplicar/Remover Bordas
      line-height no body
      :focus para elementos de formulário
      nth-child Negativo
      max-height
      rem para Definir Tamanhos Globais; Use
          em para Definir Tamanhos Locais
      :root para uma Tipografia Flexível
      font-size em Elementos de Formulário para uma
          Melhor Experiência Mobile
      display: none em quebras de linha usadas como
          espaçamento
      Resetar o CSS vai te ajudar a manter a consistência de estilo em diferentes navegadores com um ponto de partida limpo para elementos de estilo. Você pode usar a biblioteca de reset CSS como Normalize, ou se preferir, usar uma abordagem mais simplificada.:
      Agora os elementos estarão sem margens, preenchimento e
      box-sizing. Te permitindo gerenciar o layout com o seu CSS.
    
      Nota: Se você seguir a dica
      Herde o box-sizing abaixo você pode
      optar por não incluir a propriedade box-sizing em sua
      redefinição de CSS.
    
box-sizing
      Faça com que o box-sizing seja herdado do html:
    
      Assim fica fácil de alterar o box-sizing em plugins ou outros
      componentes que tenham um comportamento diferente.
    
unset em vez de redefinir todas as propriedades
    Ao redefinir as propriedades de um elemento, não é necessário redefinir cada propriedade individual:
button {
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  outline: none;
  padding: 0;
}
    
      Você pode especificar todas as propriedades de um elemento usando a
      abreviação all. Definir o valor como
      unset altera as propriedades de um elemento para seus valores
      iniciais:
    
      Nota: a abreviação all eunset
      não é compatível com o IE11.
    
:not() para Aplicar/Remover Bordas
    Ao invés de colocar a borda…
…para então remover no último elemento…
      …utilize a pseudo-classe :not() para aplicar a borda
      apenas nos elementos corretos:
    
O seletor CSS define a borda da maneira que um humano a descreveria.
Você pode verificar se uma fonte está instalada localmente antes de buscá-la remotamente, o que também é uma boa dica de desempenho.
@font-face {
  font-family: "Dank Mono";
  src:
    /* Full name */
    local("Dank Mono"),
    /* Postscript name */
    local("Dank Mono"),
    /* Otherwise, download it! */
    url("//...a.server/fonts/DankMono.woff");
}
code {
  font-family: "Dank Mono", system-ui-monospace;
}
    Dica de chapéu para Adam Argyle por compartilhar este protip e exemplo.
line-height no body
    
      Você não precisa adicionar o line-height para cada
      <p>, <h*>, et al.
      separadamente. Apenas adicione ao body:
    
      Dessa maneira elementos de texto vão herdar o line-height do
      body.
    
:focus para elementos de formulário
    Os usuários de teclado com visão dependem do foco para determinar onde os eventos de teclado vão na página. Faça com que os elementos do formulário se foquem e sejam consistentes com a implementação padrão do navegador:
a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus {
  box-shadow: none;
  outline: #000 dotted 2px;
  outline-offset: .05em;
}
    Que bruxaria é essa? Não é bruxaria! Você realmente pode centralizar elementos verticalmente:
html,
body {
  height: 100%;
  margin: 0;
}
body {
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  display: -webkit-flex;
  display: flex;
}
    …e também com CSS Grid:
Isso não resolveu seu problema? O site CSS-Tricks tem um guia completo de como centralizar elementos com CSS.
Aviso: Fique atento com os bugs quando utilizar flexbox no IE11.
Transforme listas normais em listas separadas por vírgula:
      Utilize a pseudo-classe :not() para evitar que a
      vírgula seja adicionada depois do último item.
    
Aviso: Se considerarmos acessibilidade essa dica pode não ser ideal, especialmente para usuários de leitores de tela. Além disso, copiar e/ou colar não funcionam em conteúdo criado com CSS. Proceda com cautela.
nth-child Negativo
    
      Utilize nth-child negativo no CSS para selecionar itens de 1
      a n.
    
      Já que você aprendeu um pouquinho sobre como usar a
      pseudo-classe
      using :not(), você pode tentar:
    
/* selecione todos os itens, exceto os primeiros 3 e exiba-os */
li:not(:nth-child(-n+3)) {
  display: none;
}
    Mais fácil que isso só dois disso.
Não tem porque você não usar ícones em SVG:
A vantagem do SVG é que o ícone fica bom em qualquer resolução, além de ter suporte amplo em todos os browsers desde o IE9. Agora você pode se desfazer dos seus arquivos .png, .jpg, ou ainda .gif-jif-qissomano.
Aviso: Se você tem botões feitos apenas com ícones SVG, a dica a seguir o ajudará a manter a acessibilidade:
      O nome é super estranho (coruja lobotomizada), mas o uso do seletor
      universal (*) com o seletor adjacente (+) pode
      ser muito útil:
    
      Nesse exemplo, todos os elementos acompanhados de outros elementos recebem
      margin-top: 1.5em.
    
Para mais exemplos utilizando o seletor “lobotomized owl”, leia o artigo escrito por Heydon Pickering no site A List Apart.
max-height
    
      Crie sliders usando apenas CSS com max-height e
      overflow-y: hidden:
    
.slider {
  max-height: 200px;
  overflow-y: hidden;
  width: 300px;
}
.slider:hover {
  max-height: 600px;
  overflow-y: scroll;
}
    
      O elemento se expandirá ao valor definido no max-height no
      hover e você terá um slider devido ao uso do overflow.
    
      Não tem nada mais chato do que trabalhar com tabelas, mas você pode usar
      table-layout: fixed para manter as células do mesmo tamanho:
    
Tabelas sem dor de cabeça.
      Quando definir o espaçamento entre as colunas, você pode deixar os
      seletores nth-, first-, e
      last-child de lado e usar a propriedade
      space-between do flexbox:
    
Assim as colunas ficam espaçadas uniformemente.
      Mostre links para tags <a> vazias que possuem o
      atributo href:
    
Mão na roda.
Defina estilos para links “default”:
      Dessa forma, links que são inseridos por CMS – que normalmente não possuem
      o atributo class – vão ser estilizados sem comprometer outros
      links.
    
      Para criar uma div com proporção de tela fixa, tudo que você precisa fazer
      é adicionar padding (top ou bottom)
      a div pai:
    
.container {
  height: 0;
  padding-bottom: 20%;
  position: relative;
}
.container div {
  border: 2px dashed #ddd;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
    
      Se você usar 20% no padding a altura da div vai ser igual a
      20% de sua largura. Independente da largura do viewport, a div
      filho vai sempre manter a proporção de tela (100% / 20% = 5:1).
    
Faça com que imagens quebradas fiquem esteticamente mais agradáveis com um pouquinho de CSS:
img {
  display: block;
  font-family: sans-serif;
  font-weight: 300;
  height: auto;
  line-height: 2;
  position: relative;
  text-align: center;
  width: 100%;
}
    Agora adicione regras com pseudo-elementos para mostrar uma mensagem e a URL da imagem quebrada:
img::before {
  content: "Desculpe, a imagem abaixo não pode ser carregada :(";
  display: block;
  margin-bottom: 10px;
}
img::after {
  content: "(url: " attr(src) ")";
  display: block;
  font-size: 12px;
}
    Leia mais sobre como estilizar imagens quebradas no artigo original por Ire Aderinokun.
rem para Definir Tamanhos Globais; Use
      em para Definir Tamanhos Locais
    
      Depois de definir o tamanho de fonte base na raíz (html { font-size: 100%; }), defina o tamanho de fonte para elementos de texto utilizando
      em:
    
      Então defina o tamanho da fonte de módulos utilizando rem:
    
Assim fica mais fácil de estilizar e manter cada módulo, além de ser flexível.
Ótima dica para uma stylesheet personalizada. Evite sobrecarregar o usuário com som de vídeos em autoplay. Se o som não estiver no mudo, esconda o vídeo:
      E aqui mais uma entre as muitas vantagens de usar a
      pseudo-classe
      :not().
    
:root para uma Tipografia Flexível
    
      O tamanho de fonte de um site responsivo deveria ser ajustável de
      acordo com cada viewport. Você pode calcular o tamanho da fonte
      baseado na largura e na altura do viewport usando
      :root:
    
      Assim você pode utilizar a unidade de medida root em baseada
      no valor calculado por :root:
    
font-size em Elementos de Formulário para uma Melhor
      Experiência Mobile
    
      Para evitar zoom indesejado em elementos de formulários de navegadores
      mobile (iOS Safari, et al) quando um
      <select> é selecionado, adicione
      font-size no seletor:
    
:dancer:
Eventos de ponteiro permitem que você especifique como o mouse interage com o elemento que está tocando. Para desativar o evento de ponteiro padrão em um botão, por exemplo:
É simples assim.
display: none em quebras de linha usadas como
      espaçamento
    Como Harry Roberts apontou, isso pode ajudar a impedir que os usuários do CMS usem quebras de linha extras para espaçamento:
Versões atuais do Chrome, Firefox, Safari, Opera, Edge, e IE11.