Skip to content
Nesta Página

Classes de customização

As classes de customização são utilizadas para criar uma ou mais variações de um componente ou elemento especifico.

Essas classes podem ser criadas de duas formas:

Classes Modificadores

São pequenas classes aninhadas dentro da classe principal do componente e inseridas na estrutura HTML de acordo com as necessidades.

Características

  • Possuem um hífen - como prefixo -secondary -big
  • SEMPRE ficam aninhadas dentro de uma classe principal

Benefícios

  • É mais simples
  • Gera menos CSS
  • Funciona muito bem com CSS puro

Desvantagens

  • Contém sobreposição de código
  • Possuem um código compartilhado

Exemplo

html
<button class="button">
	Submit
</button>

<button class="button -big">
	Submit
</button>

<button class="button -secondary -big">
	Submit
</button>
scss
.button {
	display: flex;
    align-items: center;
    justify-content: center;

	max-width: 100%;
	padding: $button-padding;

	color: $button-color;

	&.-secondary {	
		color: $button-color-secondary;
	}

	&.-big {
		padding: $button-padding-big;
	}
}	

Classes de composição

São formadas pelo nome do componente junto com o nome das classes modificadoras.

Características

  • É formado por um nome de classe único
  • Funciona melhor com SASS, pois o uso de @mixins diminui a repetição de código

Benefícios

  • Evita aninhamento
  • Evita sobreposição de código
  • Possui código exclusivo

Desvantagens

  • É mais trabalhoso
  • Gera mais CSS

Exemplo

html
<button class="button">
	Submit
</button>

<button class="button_big">
	Submit
</button>

<button class="button_secondary">
	Submit
</button>

<button class="button_secondary_big">
	Submit
</button>
scss
.button {
	display: flex;
    align-items: center;
    justify-content: center;

	max-width: 100%;
	padding: $button-padding;

	color: $button-color;
}	

.button_big {
	display: flex;
    align-items: center;
    justify-content: center;

	max-width: 100%;
	padding: $button-padding-big;

	color: $button-color;
}

.button_secondary {
	display: flex;
    align-items: center;
    justify-content: center;

	max-width: 100%;
	padding: $button-padding;

	color: $button-color-secondary;
}

.button_secondary_big {	
	display: flex;
    align-items: center;
    justify-content: center;

	max-width: 100%;
	padding: $button-padding-big;

	color: $button-color-secondary;
}

Com @mixins

scss
@mixin button_style(
    $color: $button-color,
) {
	display: flex;
    align-items: center;
    justify-content: center;

	max-width: 100%;

	color: $color;
}

@mixin button_size(
    $padding: $button-padding,
) {
	padding: $padding;
}

.button {
	@include button_style;
	@include button_size;
}	

.button_big {
	@include button_style;
	@include button_size(
		$padding: $button-padding-big
	);
}

.button_secondary {
	@include button_style(
		$color: $button-color-secondary
	);
	@include button_size;
}

.button_secondary_big {	
	@include button_style(
		$color: $button-color-secondary
	);

	@include button_size(
		$padding: $button-padding-big
	);
}

Released under the MIT License.