본문 바로가기

HTML \ CSS \ JavaScript/CSS

[CSS] 화면 정중앙에 요소 배치(반응형)

팀프로젝트를 진행하면서 화면단의 통일성을 위해 한 사람이 웹 디자인-퍼블리싱을 맡기로 했다.

그리고 그게 나다.

 

오늘부터 프로젝트 진행 중 막혔던 부분과 해결한 방법을 위주로 포스팅을 하려고 한다.

 

로그인 화면 - 화면 정중앙에 요소 배치하기

사진과 같이 중앙에 로그인 폼을 위치시키고 싶었다.

<!-- HTML 코드 -->

<main class="form-signin"> <!-- 클래스 부여 -->
  <form action="/login" method="post" >
    <input  type="text" name="uid" placeholder="Your ID" required autofocus">
    <input type="password" name="upw" placeholder="Password" required><br>
    <button type="submit">Sign in</button>
  </form>
</main>
/* CSS 코드 */

.form-signin{
    max-width: 390px;
    position: absolute;
    width: 100%;
    padding: 10px;
    top: 50%; /* 전체 높이 위에서부터 절반 */
    left: 50%; /* 전체 넓이 왼쪽에서부터 절반 */
    transform: translate(-50%, -50%); /* 해당 요소의 높이, 넓이의 절반만큼 돌아가기 */
  }

위와같이 html 를 구성하고 가장 바깥쪽인 main 태그에 'form-singin' 클래스를 걸었다.

form-signin 의 속성으로는

 

    position: absolute // 가장 가까운 조상 요소를 기준으로 함
    top: 50% // 높이의 절반
    left: 50% // 넓이의 절반

 

여기까지 하면 화면의 정중앙을 가리킨다.

정중앙으로부터 해당 요소 (main 태그)를 그리게 되면 다음과 같다.

    transform: translate(-50%, -50%) // 자신의 넓이, 높이의 절반만큼 다시 빼준다.

이렇게 해줘야 정중앙에 요소를 위치시킬 수 있다. 

고정된 값이 아닌 %로 값을 넣어주었기 때문에 화면 사이즈에 상관 없이 반응형으로 그려지기 때문에

모바일 환경이나 태블릿 환경에서도 동일하게 적용된다.

 

 

 

 

 

 

 

 

'HTML \ CSS \ JavaScript > CSS' 카테고리의 다른 글

[CSS] footer 하단에 고정하기  (0) 2022.03.05