1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
---
title: align-items
slug: Web/CSS/align-items
tags:
- CSS
- CSS Flexible Boxes
- CSS Propriedade
- Referencia
translation_of: Web/CSS/align-items
---
<p>A propriedade <a href="/en-US/docs/Web/CSS">CSS</a> <strong><code>align-items</code></strong> estabelece o valor {{cssxref("align-self")}} em todos filhos diretos como um grupo. A propriedade align-self estabelece o alinhamento de um certo item dentro do bloco que o contém. Em Flexbox ele controla o alinhamento dos itens em {{glossary("Cross Axis")}}, enquanto que no Grid Layout, controla o alinhamento dos itens no Eixo de Bloco dentro de sua <a href="/en-US/docs/Glossary/Grid_Areas">grid area</a>.</p>
<p>O exemplo interativo abaixo demonstra alguns dos valores para <code>align-items</code> usando grid layout.</p>
<div>{{EmbedInteractiveExample("pages/css/align-items.html")}}</div>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="brush:css no-line-numbers">/* Palavras-chave básicas */
align-items: normal;
align-items: stretch;
/* Posicionamento do alinhamento */
/* align-items não recebe valores left e right */
align-items: center; /* Itens posicionados ao redor do centro */
align-items: start; /* Posiciona itens a partir do início */
align-items: end; /* Posiciona itens a partir do fim */
align-items: flex-start; /* Posiciona itens-flex a partir do início */
align-items: flex-end; /* Posiciona itens-flex a partir do fim */
align-items: self-start;
align-items: self-end;
/* Alinhamento da baseline */
align-items: baseline;
align-items: first baseline;
align-items: last baseline; /* Overflow alinhamento (apenas para alinhamento de posição) */
align-items: safe center;
align-items: unsafe center;
/* Valores globais */
align-items: inherit;
align-items: initial;
align-items: unset;
</pre>
<h3 id="Valores">Valores</h3>
<dl>
<dt><code>normal</code></dt>
<dd>O efeito desta palavra-chave depende do modo de layout em que nos encontramos:
<ul>
<li>Em layouts absolutamente posicionados, a palavra-chave se comporta como <code>start</code> em <em>replaced</em> de caixas absolutamente posicionadas, e como <code>stretch</code> em <em>all others</em> de caixas absolutamente posicionadas.</li>
<li>Em posição estática de layouts absolutamente posicionados, a palavra-chave se comporta como <code>stretch</code>.</li>
<li>Para itens-flex, a palavra chave se comporto como <code>stretch</code>.</li>
<li>Para itens-grid, esta palavra-chave leva a um comportamento similiar ao <code>stretch</code>, exceto para caixas com um aspect ratio ou tamanhos intrínsecos, onde se comporta como <code>start</code>.</li>
<li>A propriedade não se aplica para caixas block-level, e para células de tabela.</li>
</ul>
</dd>
<dt><code>flex-start</code></dt>
<dd>As bordas da margem superior dos itens-flex são juntados com a borda superior da linha.</dd>
<dt><code>flex-end</code></dt>
<dd>As bordas da margem inferior dos itens flex são juntados com a borda inferior da linha.</dd>
<dt><code>center</code></dt>
<dd>As caixas de margem dos itens flex são centralizados ao longo da linha do eixo. Caso o tamanho de um item seja superior ao container flex, irá transbordar de maneira igual em ambas direções.</dd>
<dt><code>start</code></dt>
<dd>Os itens são posicionados, para cada um, em direção a borda início do container de alinhamento no eixo apropriado. </dd>
<dt><code>end</code></dt>
<dd>Os itens são posicionados, para cada um, em direção a borda fim do container de alinhamento no eixo apropriado.</dd>
<dt><code>self-start</code></dt>
<dd>Os itens são posicionados para a borda do container de alinhamento do lado inicial do item, no eixo apropriado.</dd>
<dt><code>self-end</code></dt>
<dd>Os itens são posicionados para a borda do container de alinhamento do lado final do item, no eixo apropriado.</dd>
</dl>
<dl>
<dt><code>baseline</code></dt>
<dt><code>first baseline</code></dt>
<dt><code>last baseline</code></dt>
<dd>Todos itens-flex são alinhados de tal forma que suas <a href="https://drafts.csswg.org/css-flexbox-1/#flex-baselines" rel="external">baselines de container flex</a> estejam alinhados. O item com a maior distância entre o eixo de início de sua margem e sua baseline é juntado com eixo de início da linha.</dd>
<dt><code>stretch</code></dt>
<dd>Itens-flex são esticados de tal maneira que o tamanho da caixa de margem do item seja o mesmo da linha, respeitando as restrições de comprimento e altura.</dd>
<dt><code>safe</code></dt>
<dd>Usado em conjunto com uma palavra-chave de alinhamento. Se a palavra-chave escolhida signifique que o item transborde o alinhamento do container, causando assim perda de dados, o item é alinhado como estivesse no modo <code>start</code>.</dd>
<dt><code>unsafe</code></dt>
<dd>Usado em conjunto com uma palavra-chave de alinhamento. Independente dos tamanhos relativos do item, do alinhamento do container e caso overflow possa causar perda de dados, o valor de alinhamento estabelecido é mantido.</dd>
</dl>
<h3 id="Sintaxe_formal">Sintaxe formal</h3>
{{csssyntax}}
<h2 id="Exemplo">Exemplo</h2>
<h3 id="CSS">CSS</h3>
<pre class="brush: css; highlight[4]">#container {
height:200px;
width: 240px;
align-items: center; /* Pode ser mudado na amostra ao vivo */
background-color: #8c8c8c;
}
.flex {
display: flex;
flex-wrap: wrap;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 50px);
}
div > div {
box-sizing: border-box;
border: 2px solid #8c8c8c;
width: 50px;
display: flex;
align-items: center;
justify-content: center;
}
#item1 {
background-color: #8cffa0;
min-height: 30px;
}
#item2 {
background-color: #a0c8ff;
min-height: 50px;
}
#item3 {
background-color: #ffa08c;
min-height: 40px;
}
#item4 {
background-color: #ffff8c;
min-height: 60px;
}
#item5 {
background-color: #ff8cff;
min-height: 70px;
}
#item6 {
background-color: #8cffff;
min-height: 50px;
font-size: 30px;
}
select {
font-size: 16px;
}
.row {
margin-top: 10px;
}</pre>
<h3 id="HTML">HTML</h3>
<pre class="brush: html"><div id="container" class="flex">
<div id="item1">1</div>
<div id="item2">2</div>
<div id="item3">3</div>
<div id="item4">4</div>
<div id="item5">5</div>
<div id="item6">6</div>
</div>
<div class="row">
<label for="display">display: </label>
<select id="display">
<option value="flex">flex</option>
<option value="grid">grid</option>
</select>
</div>
<div class="row">
<label for="values">align-items: </label>
<select id="values">
<option value="normal">normal</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center" selected>center</option>
<option value="baseline">baseline</option>
<option value="stretch">stretch</option>
<option value="start">start</option>
<option value="end">end</option>
<option value="self-start">self-start</option>
<option value="self-end">self-end</option>
<option value="left">left</option>
<option value="right">right</option>
<option value="first baseline">first baseline</option>
<option value="last baseline">last baseline</option>
<option value="safe center">safe center</option>
<option value="unsafe center">unsafe center</option>
<option value="safe right">safe right</option>
<option value="unsafe right">unsafe right</option>
<option value="safe end">safe end</option>
<option value="unsafe end">unsafe end</option>
<option value="safe self-end">safe self-end</option>
<option value="unsafe self-end">unsafe self-end</option>
<option value="safe flex-end">safe flex-end</option>
<option value="unsafe flex-end">unsafe flex-end</option>
</select>
</div>
</pre>
<div class="hidden">
<h3 id="JavaScript">JavaScript</h3>
<pre class="brush: js">var values = document.getElementById('values');
var display = document.getElementById('display');
var container = document.getElementById('container');
values.addEventListener('change', function (evt) {
container.style.alignItems = evt.target.value;
});
display.addEventListener('change', function (evt) {
container.className = evt.target.value;
});
</pre>
</div>
<h3 id="Resultado">Resultado</h3>
<p>{{EmbedLiveSample("Example", "260px", "290px")}}</p>
<h2 id="Especificações">Especificações</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificação</th>
<th scope="col">Status</th>
<th scope="col">Comentário</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName("CSS3 Box Alignment", "#propdef-align-items", "align-items")}}</td>
<td>{{Spec2("CSS3 Box Alignment")}}</td>
<td>Atualização para últimas definições de sintaxe.</td>
</tr>
<tr>
<td>{{SpecName('CSS3 Flexbox', '#propdef-align-items', 'align-items')}}</td>
<td>{{Spec2('CSS3 Flexbox')}}</td>
<td>Definição inicial</td>
</tr>
</tbody>
</table>
<p>{{cssinfo}}</p>
<h2 id="Compatibilidade_de_Navegador">Compatibilidade de Navegador</h2>
<h3 id="Support_in_Flex_layout">Support in Flex layout</h3>
<p>{{Compat("css.properties.align-items.flex_context")}}</p>
<h3 id="Support_in_Grid_layout">Support in Grid layout</h3>
<p>{{Compat("css.properties.align-items.grid_context")}}</p>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li>CSS Flexbox Guide: <em><a href="/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox">Basic Concepts of Flexbox</a></em></li>
<li>CSS Flexbox Guide: <em><a href="/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Aligning_Items_in_a_Flex_Container">Aligning items in a flex container</a></em></li>
<li>CSS Grid Guide: <em><a href="/en-US/docs/Web/CSS/CSS_Grid_Layout/Box_Alignment_in_CSS_Grid_Layout">Box alignment in CSS Grid layouts</a></em></li>
<li><a href="/en-US/docs/Web/CSS/CSS_Box_Alignment">CSS Box Alignment</a></li>
<li>The {{cssxref("align-self")}} property</li>
</ul>
<div>{{CSSRef}}</div>
|