Propriedades CSS relacionadas ao modelo de caixa
Este artigo explica as propriedades CSS relacionadas ao modelo de caixa.
Você pode aprender sobre os casos de uso e a sintaxe para propriedades como width, height e margin.
YouTube Video
HTML para Visualização
css-box.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Box Model Related CSS Properties</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-box.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>Box Model Related CSS Properties</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Box Model Related Properties</h2>
20 </header>
21 <article>
22 <h3>width and height</h3>
23 <section>
24 <header><h4>width: 250px; height: 150px;</h4></header>
25 <section class="sample-view">
26 <div class="width-height-fixed">Fixed size(250px,150px)</div>
27 </section>
28 </section>
29 <section>
30 <header><h4>width: 50%; height: 50%;</h4></header>
31 <section class="sample-view">
32 <div class="width-height-percent">Percentage size(50%,50%)</div>
33 </section>
34 </section>
35 <section>
36 <header><h4>width: min-content; height: min-content;</h4></header>
37 <section class="sample-view">
38 <div class="width-height-min-content">This is an example of min-content.</div>
39 </section>
40 </section>
41 <section>
42 <header><h4>width: max-content; height: max-content;</h4></header>
43 <section class="sample-view">
44 <div class="width-height-max-content">This is an example of max-content.</div>
45 </section>
46 </section>
47 <section>
48 <header><h4>width: fit-content; max-width: 150px;</h4></header>
49 <section class="sample-view">
50 <div class="width-height-fit-content">This is an example of fit-content.</div>
51 </section>
52 </section>
53 </article>
54 <article>
55 <h3>margin and padding</h3>
56 <section style="height: auto;">
57 <h4>Margin & padding</h4>
58 <header><h4>margin: 20px; padding: 15px;</h4></header>
59 <section class="sample-view">
60 <div class="margin-padding">margin & padding</div>
61 </section>
62 </section>
63 <section style="height: auto;">
64 <h4>Margin only(no padding)</h4>
65 <header><h4>margin: 20px; padding: 0;</h4></header>
66 <section class="sample-view">
67 <div class="margin-only">margin only</div>
68 </section>
69 </section>
70 <section style="height: auto;">
71 <h4>No margin & padding example</h4>
72 <header><h4>margin: 0; padding: 0;</h4></header>
73 <section class="sample-view">
74 <div class="no-margin">no margin & padding</div>
75 </section>
76 </section>
77 </article>
78 <article>
79 <h3>box-sizing</h3>
80 <section style="height: auto;">
81 <header><h4>box-sizing: content-box</h4></header>
82 <section class="sample-view">
83 <div style="width: 300px;">width: 300px</div>
84 <div class="content-box">Content Box</div>
85 <div style="width: 360px;">width: 360px</div>
86 </section>
87 </section>
88 <section>
89 <header><h4>box-sizing: border-box</h4></header>
90 <section class="sample-view">
91 <div style="width: 300px;">width: 300px</div>
92 <div class="border-box">Border Box</div>
93 </section>
94 </section>
95 </article>
96 <article>
97 <h3>visibility</h3>
98 <section>
99 <header><h4>visibility: visible</h4></header>
100 <section class="sample-view">
101 <div class="visibility-visible">Visible Box</div>
102 </section>
103 <header><h4>visibility: hidden</h4></header>
104 <section class="sample-view">
105 <div class="visibility-hidden">Hidden Box</div>
106 </section>
107 <header><h4>visibility: collapse</h4></header>
108 <section class="sample-view">
109 <div class="visibility-collapse">Collapsed Box (Hold layout space)</div>
110 </section>
111 <header><h4>HTML</h4></header>
112 <pre><div class="visibility-collapse">Collapsed Box (Hold layout space)</div></pre>
113 <header><h4>visibility: collapse</h4></header>
114 <section class="sample-view">
115 <table style="height: 200px; margin: auto;">
116 <tr class="visibility-collapse">
117 <td>Cell 1 (Remove layout space)</td>
118 </tr>
119 <tr>
120 <td>Cell 2</td>
121 </tr>
122 </table>
123 </section>
124 <header><h4>HTML</h4></header>
125<pre>
126<table style="height: 200px; margin: auto;">
127 <tr class="visibility-collapse">
128 <td>Cell 1 (Remove layout space)</td>
129 </tr>
130 <tr>
131 <td>Cell 2</td>
132 </tr>
133</table>
134</pre>
135 </section>
136 </article>
137 </main>
138</body>
139</html>
Relacionado ao Modelo de Caixa
Propriedades width
e height
1.width-height-fixed {
2 width: 250px;
3 height: 150px;
4 background-color: lightblue;
5}
6
7.width-height-percent {
8 width: 50%;
9 height: 50%;
10 background-color: lightblue;
11}
12
13.width-height-min-content {
14 width: min-content;
15 height: min-content;
16 background-color: lightblue;
17}
18
19.width-height-max-content {
20 width: max-content;
21 height: max-content;
22 background-color: lightblue;
23}
24
25.width-height-fit-content {
26 width: fit-content;
27 max-width: 150px;
28 background-color: lightblue;
29}
As propriedades width
e height
são usadas no CSS para especificar a largura e a altura de um elemento. Elas são particularmente usadas ao definir o tamanho de elementos de bloco, imagens, vídeos, etc.
- Na classe
width-height-fixed
, valores fixos são especificados para largura e altura. - Na classe
width-height-percent
, valores percentuais são especificados para largura e altura.
Valores que podem ser especificados
As propriedades width
e height
podem ter os seguintes valores.
auto
: Tamanho padrão. Ajusta automaticamente o tamanho em relação ao elemento pai.- Valores fixos: Especifica uma largura fixa em pixels, porcentagens ou unidades relativas.(ex:
100px
,50%
,10rem
)- Por exemplo,
250px
define o tamanho do elemento como 250 pixels, e50%
define como 50% do tamanho do elemento pai.
- Por exemplo,
min-content
: Ajusta-se ao tamanho mínimo do conteúdo.max-content
: Ajusta-se ao tamanho máximo do conteúdo.fit-content
: Ajusta o tamanho do elemento adequadamente com base no tamanho do conteúdo.
Especificando Valores Mínimos e Máximos
min-width
, max-width
, min-height
e max-height
são propriedades CSS usadas para definir restrições de tamanho em relação à largura e altura de um elemento. Com elas, você pode garantir que um elemento permaneça dentro de um intervalo de tamanho específico.
Propriedades margin
e padding
1.margin-padding {
2 margin: 20px; /* Margin outside the element */
3 padding: 15px; /* Padding inside the element */
4 border: 1px solid #333;
5 background-color: lightblue;
6 width: 300px;
7 height: 40px;
8}
9
10.margin-only {
11 margin: 20px; /* Margin outside the element */
12 padding: 0; /* No padding inside the element */
13 border: 1px solid #333;
14 background-color: lightblue;
15 width: 300px;
16 height: 40px;
17}
18
19.no-margin {
20 margin: 0; /* No margin outside the element */
21 padding: 0; /* No padding inside the element */
22 border: 1px solid #333;
23 background-color: lightblue;
24 width: 300px;
25 height: 40px;
26}
Margin
e padding
são propriedades do CSS usadas para controlar os espaços externos e internos dos elementos dentro do modelo de caixa. Elas são usadas para ajustar o espaço entre os elementos e para melhorar a aparência.
- Na classe
margin-padding
, tantomargin
quantopadding
são especificados. Há o espaço demargin
fora da borda sólida e o espaço depadding
dentro da borda sólida. - Na classe
margin-only
, apenas omargin
é especificado. Você pode ver que a área azul é menor em comparação com a classemargin-padding
, pois não há espaço depadding
dentro da borda sólida. - Na classe
no-margin
, tantomargin
quantopadding
são definidos como 0. Você pode ver que a área azul é empurrada completamente para a esquerda porque não há espaço demargin
fora da borda sólida.
Dessa forma, a propriedade margin
define o espaço externo de um elemento, ajustando a distância entre os elementos. Por outro lado, a propriedade padding
define o espaço interno de um elemento, ajustando a distância entre o conteúdo e a borda.
Propriedade margin
-
A propriedade
margin
define o espaço externo (margem) de um elemento. É usada para criar espaço entre elementos adjacentes. Os seguintes valores podem ser especificados:. -
Valores fixos: Você pode especificar o tamanho da margem em pixels, unidades relativas (em, rem) ou porcentagens.(ex:
10px
,1em
,5%
) -
auto
: Útil para centralizar elementos de bloco. Quando a largura é especificada, ela ajusta automaticamente as margens esquerda e direita. -
Valores positivos e negativos: Valores positivos expandem o espaço, enquanto valores negativos aproximam os elementos.
Notação compacta:
1div.one-value {
2 margin: 20px;
3}
4
5div.two-value {
6 /* top-bottom left-right */
7 margin: 10px 5px;
8}
9
10div.three-value {
11 /* top left-right bottom */
12 margin: 10px 5px 15px;
13}
14
15div.four-value {
16 /* top right bottom left */
17 margin: 10px 5px 15px 20px;
18}
A propriedade margin
pode aceitar de um a quatro valores.
- Um valor: Aplica-se a todos os lados.
- Dois valores: O primeiro aplica-se ao topo e à base, o segundo aplica-se à esquerda e à direita.
- Três valores: Aplica-se na ordem de topo, lados esquerdo e direito, base.
- Quatro valores: Aplica-se na ordem de topo, direita, base, esquerda.
Propriedade padding
Função:
-
A propriedade
padding
define o espaço interno (recuo) de um elemento. É usada para criar espaço entre o conteúdo e a borda de um elemento. Os seguintes valores podem ser especificados:. -
Valores fixos: Especifica o tamanho do preenchimento (padding).(ex:
10px
,1em
,5%
) -
Valores negativos não podem ser utilizados. Os valores de preenchimento (padding) só podem ser especificados como números positivos.
Notação compacta:
1div.one-value {
2 padding: 20px;
3}
4
5div.two-value {
6 /* top-bottom left-right */
7 padding: 10px 5px;
8}
9
10div.three-value {
11 /* top left-right bottom */
12 padding: 10px 5px 15px;
13}
14
15div.four-value {
16 /* top right bottom left */
17 padding: 10px 5px 15px 20px;
18}
Assim como o margin
, você pode especificar de um a quatro valores.
- Um valor: Aplica-se a todos os lados.
- Dois valores: O primeiro aplica-se ao topo e à base, o segundo aplica-se à esquerda e à direita.
- Três valores: Aplica-se na ordem de topo, lados esquerdo e direito, base.
- Quatro valores: Aplica-se na ordem de topo, direita, base, esquerda.
Propriedade box-sizing
1/* Default content-box : 300px + 2 * 20px + 2 * 10px = 360px */
2.content-box {
3 width: 300px;
4 padding: 20px;
5 border: 10px solid blue;
6 box-sizing: content-box;
7 background-color: lightblue;
8}
9
10/* Using border-box */
11.border-box {
12 width: 300px;
13 padding: 20px;
14 border: 10px solid red;
15 box-sizing: border-box;
16 background-color: lightcoral;
17}
box-sizing
é uma propriedade CSS que controla como a largura e a altura de um elemento são calculadas.
- Na classe
content-box
, a largura do elemento é 360px. Awidth
é 300px, com opadding
à esquerda e à direita totalizando 40px e aborder
à esquerda e à direita totalizando 20px, resultando em um total de 360px. - No
border-box
, a largura do elemento é 300px. Opadding
e aborder
estão incluídos na largura (width
) especificada.
Valores de box-sizing
Existem principalmente dois valores para box-sizing
: content-box
e border-box
, sendo content-box
o valor padrão.
content-box
1.content-box {
2 box-sizing: content-box;
3 width: 200px;
4 padding: 20px;
5 border: 10px solid black;
6}
7/*
8260px = 200px(width) +
920px(padding-left) + 20px(padding-right) +
1010px(border-left) + 10px(border-right)
11*/
Quando content-box
é especificado, somente a largura e altura do conteúdo são definidas pela width
e height
. O padding
e a border
são adicionados para determinar o tamanho final. Em outras palavras, width
e height
referem-se apenas à área de conteúdo.
Neste exemplo, a width
especificada é 200px, mas ao adicionar as larguras do padding
e border
à esquerda e à direita, a largura final real do elemento é 260px.
border-box
1.border-box {
2 width: 200px;
3 padding: 20px;
4 border: 10px solid black;
5 box-sizing: border-box;
6}
Quando border-box
é especificado, a width
e a height
são calculadas incluindo o padding
e a border
. Em outras palavras, a width
e a height
especificadas tornam-se o tamanho total do conteúdo, padding
e border
.
Nesse caso, a width
especificada é 200px, e como o padding
e a border
também estão incluídos, a largura final real do elemento permanece 200px. O padding
e a border
são ajustados dentro dele.
Resumo das diferenças de box-sizing
Propriedade | Método de Cálculo | Cálculo da Largura Real |
---|---|---|
content-box (padrão) |
largura refere-se apenas ao conteúdo. padding e bordas são adicionados. |
width + padding + border |
border-box |
width é tudo (inclui conteúdo, padding , border ) |
A width especificada é usada como está. |
Vantagens do box-sizing
-
Usar
border-box
estabiliza o layout. Adicionarpadding
ouborder
não altera o tamanho especificado, tornando os cálculos simples. -
É útil ao criar layouts flexíveis. Em designs responsivos ou layouts complexos,
border-box
é frequentemente usado para evitar variações de tamanho inesperadas.
Como aplicar border-box
globalmente
1*,
2*::before,
3*::after {
4 box-sizing: border-box;
5}
Configurando o CSS dessa maneira, você pode aplicar border-box
a todos os elementos para evitar mudanças inesperadas de tamanho.
Resumo
box-sizing
controla sepadding
eborder
estão incluídos nawidth
e naheight
de um elemento.- Usar
border-box
torna os cálculos de tamanho mais fáceis e é adequado para design responsivo.
Propriedade visibility
1.visibility-visible {
2 visibility: visible;
3}
4
5.visibility-hidden {
6 visibility: hidden;
7}
8
9.visibility-collapse {
10 visibility: collapse;
11}
A propriedade visibility
é usada para mostrar ou ocultar elementos, mas, diferentemente da propriedade display
, ela afeta o layout mesmo que o elemento esteja oculto. Ela apenas oculta o elemento, mantendo sua posição e tamanho originais sem afetar o layout de outros elementos.
Sintaxe Básica
1element {
2 visibility: value;
3}
value
: Um valor que especifica a visibilidade do elemento.
Tipos de valores
- A propriedade
visibility
pode ser configurada com os seguintes valores:.
visible
- Especificar
visible
exibirá o elemento. Este é o valor padrão.
hidden
- Especificar
hidden
ocultará o elemento, mas o espaço do layout será reservado.
collapse
collapse
é usado principalmente para linhas ou colunas de tabelas. O elemento se torna invisível e seu espaço também é ignorado. Quando aplicado a linhas ou colunas de tabelas, as linhas ou colunas ocultas são completamente removidas do layout.- No entanto, quando usado em elementos de bloco ou inline comuns, exceto elementos de tabela, ele se comporta como
hidden
e o espaço do layout é mantido.
inherit
- Especificar
inherit
herdará o valor da propriedadevisibility
do elemento pai.
Diferenças entre visibility
e display
Existem as seguintes diferenças entre visibility
e display
.
visibility: hidden
oculta o elemento, mas mantém o seu espaço e layout.display: none
remove completamente o elemento do layout, permitindo que outros elementos ocupem esse espaço.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.