Nesta demonstração, há dois divs dentro do div do contêiner de grade css. É possível centralizá-los para que o segundo item fique dentro e em cima do primeiro item e ambos sejam centralizados vertical e horizontalmente? Pensei que talvez align-self
o fizesse...
<div
style="
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr;
height: 200px;
width: 200px;
background-color: blue;
"
>
<div
style="
width: 100px;
height: 100px;
background-color: red;
align-self: center;
"
></div>
<div
style="
align-self: center;
width: 50px;
height: 50px;
background-color: yellow;
"
></div>
</div>
Você pode simplesmente centralizar divisões dentro de divisões adicionando
atributos ao contêiner principal. Então isso vai funcionar:
coloque-os na mesma área (
grid-area:1/1
) e use-place-self
os para alinhá-los vertical e horizontalmente.Sim, é possível centralizar os dois elementos dentro do contêiner de grade CSS para que o segundo item fique dentro e acima do primeiro item, e ambos sejam centralizados vertical e horizontalmente. As propriedades
align-self: center;
ejustify-self: center;
podem ser usadas.Eu adicionei as seguintes alterações:
justify-self: center;
foi adicionado a ambos<div>
os elementos para centralizá-los horizontalmente dentro da célula da grade.position: relative;
foi adicionado a ambos<div>
os elementos para criar um contexto de posicionamento para o posicionamento absoluto do interior<div>
.<div>
,position: absolute;
é usado para posicioná-lo absolutamente dentro do contêiner pai.top: 50%; and left: 50%;
são usados para posicionar o amarelo<div>
50% abaixo do topo e 50% da esquerda, o que coloca seu canto superior esquerdo no centro do pai.transform: translate(-50%, -50%);
é usado para deslocar a<div>
metade amarela de sua largura e altura para centralizá-la perfeitamente dentro do pai.Com esses ajustes, os dois
<div>
elementos serão centralizados vertical e horizontalmente, e o segundo item ficará dentro e acima do primeiro item.Você pode experimentá-lo