Westagram 로그인 화면을 만드는데 먼저 해야 한 것은 가운데 정렬이었습니다. 웹페이지의 창이 커지나 작아지나 중앙에 위치시키고 싶었습니다.
여러가지 방법이 있지만, 가장 먼저 생각 한 것은 display
, justify-content
, align-items
이었습니다.
display: flex
이용하기<body>
<main>
<div>
<h1>Westagram</h1>
<form>
<input />
<input />
<button></button>
</form>
<a></a>
</div>
</main>
</body>
main{
display: flex;
justify-content: center;
align-items: center;
}
부모태그인
main
태그에 중앙정렬 코드를 부여합니다.
즉, 가운데 가고싶으면 부모한테 코드부여!
display: grid
이용하기main{
display: grid;
place-items: center;
}
grid
를 이용하는 조금은 생소한 방법입니다. 부모태그에grid
를 부여해 격자를 만들어 자식들을 가운데 정렬할 수 있습니다.
position: relative
이용하기main{
position: relative;
}
div{
position: absolute;
top: 50%;
left 50%;
transform: translate(-50%, -50%);
부모태그인
main
태그에position: relative
를 부여하고 자식한테position: absolute
를 부여하여top
으로부터 50% 당기고left
로부터 50% 당깁니다.
그런데 문제가 생겼습니다. 50%씩 당기면서 가운데 올 줄 알았지만, 오른쪽 아래에 위치하게 되었습니다. 이동기준이 왼쪽, 위 모서리라서 이러한 결과가 나온 것입니다.
이를 해결하기위해 코드 마지막줄에transform: translate(-50%, -50%)
을 추가하여 수정 이동을 하여 정중앙에 위치 시킬 수 있습니다.