기본 콘텐츠로 건너뛰기

CSS로 레이어 팝업 화면 가운데 정렬하는 방법 (top·left·transform 완전 정리)

레이어 팝업 센터 정렬, 이 코드만 알면 끝 (CSS 예제 포함)

이벤트 배너나 공지사항을 띄울 때 레이어 팝업(center 정렬)을 깔끔하게 잡는 게 생각보다 어렵습니다.
화면 크기가 변해도 가운데에 고정되고, 모바일에서도 자연스럽게 보이게 하려면 position, top, left, transform을 정확하게 이해해야 합니다.

이 글에서는 아래 내용을 예제로 정리합니다.

  • 레이어 팝업(center 정렬)의 기본 개념
  • 자주 사용하는 position: absolute / fixed 정렬 방식
  • 질문에서 주신 스타일 top: 3.25%; left: 50%; transform: translateX(-50%)의 의미
  • 실무에서 바로 쓰는 반응형 레이어 팝업 HTML/CSS 예제

1. 레이어 팝업(center 정렬)이란?

레이어 팝업(레이어 팝업창)은 새 창을 띄우는 것이 아니라, 현재 페이지 위에 div 레이어를 띄워서 공지사항, 광고, 이벤트 등을 보여주는 방식을 말합니다.

검색엔진(SEO) 입장에서도 같은 페이지 안에 HTML이 존재하기 때문에 팝업 안의 텍스트도 정상적으로 인덱싱될 수 있습니다. 즉, “레이어 팝업 센터 정렬”, “레이어 팝업 만드는 방법”과 같이 관련 키워드를 적절히 넣어주면 검색 노출에 도움이 됩니다.

2. 질문에서 주신 레이어 팝업 스타일 분석

질문에서 주신 스타일은 다음과 같습니다.


<div class="layer-popup"
     style="width:1210px; z-index:9001; position:absolute; top:3.25%; left:50%; transform:translateX(-50%);">
    레이어 팝업 내용
</div>
  

각 속성을 하나씩 보면:

  • width:1210px; : 팝업의 가로 고정 크기
  • z-index:9001; : 다른 요소들 위에 보이도록 맨 위 레벨로 올림
  • position:absolute; : 기준 요소(position:relative; 를 가진 부모) 기준으로 배치
  • top:3.25%; : 화면(또는 부모) 상단에서 3.25% 떨어진 위치
  • left:50%; : 수평 위치를 가운데(50%)로 이동
  • transform:translateX(-50%); : 자기 자신의 넓이의 50%만큼 왼쪽으로 이동 → 가로 센터 정렬

즉, 이 코드는 가로 방향은 가운데 정렬이고,
세로 방향은 상단에서 3.25% 떨어진 위치에 고정하는 레이아웃입니다. 완전한 “화면 정중앙(center)”은 아니지만, “위쪽에 떠 있는 가운데 배너”를 만들 때 많이 쓰는 패턴입니다.

3. position + transform으로 화면 정중앙 레이어 팝업 만들기

가장 많이 사용하는 “정중앙 레이어 팝업” 정렬 공식은 아래와 같습니다.


.layer-popup {
  position: fixed;              /* 스크롤과 상관없이 항상 화면 중앙에 고정 */
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%); /* 가로/세로 모두 자기 크기의 50%만큼 이동 */
  width: 1210px;
  max-width: 90%;               /* 화면이 좁을 때는 90%까지만 */
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 10px 30px rgba(0,0,0,.3);
  z-index: 9001;
}
  

HTML 예제는 다음과 같이 사용할 수 있습니다.


<div class="dimmed"></div>

<div class="layer-popup" role="dialog" aria-modal="true" aria-labelledby="layerTitle">
  <div class="layer-header">
    <h2 id="layerTitle">레이어 팝업 센터 정렬 예제</h2>
    <button type="button" class="layer-close" aria-label="레이어 팝업 닫기">×</button>
  </div>

  <div class="layer-body">
    <p>이 레이어 팝업은 CSS의 position과 transform을 이용해 <strong>화면 정중앙</strong>에 배치되었습니다.</p>
    <p>width와 max-width를 조절하면 데스크톱과 모바일에서 모두 자연스럽게 가운데 정렬됩니다.</p>
  </div>
</div>
  

배경을 어둡게 처리하는 dimmed 레이어도 함께 사용하면 좋습니다.


.dimmed {
  position: fixed;
  inset: 0;                     /* top:0; right:0; bottom:0; left:0; 과 동일 */
  background: rgba(0,0,0,.5);
  z-index: 9000;
}
  

4. top: 3.25% + left: 50% + translateX(-50%) 형태로 사용하는 경우

만약 “완전한 중앙”이 아니라 화면 위쪽에 살짝 내려온 형태의 레이어 팝업을 원한다면,


.layer-popup-top {
  position: fixed;
  top: 3.25%;       /* 상단에서 3.25% 떨어진 위치 */
  left: 50%;        /* 가운데 기준 */
  transform: translateX(-50%);  /* 가로만 가운데 정렬 */
  width: 1210px;
  max-width: 95%;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 10px 30px rgba(0,0,0,.3);
  z-index: 9001;
}
  

HTML은 다음처럼 사용할 수 있습니다.


<div class="dimmed"></div>

<div class="layer-popup-top" role="dialog" aria-modal="true" aria-labelledby="eventTitle">
  <h2 id="eventTitle">이벤트 레이어 팝업 (상단 고정)</h2>
  <p>top:3.25%, left:50%, transform:translateX(-50%) 조합으로<br>
     상단에서 조금 내려온 가운데 정렬 레이어를 만들었습니다.</p>
</div>
  

이 방식은 질문에서 주신 style과 동일한 구조이며, “위쪽에 떠 있는 공지/이벤트 배너” 형태에 잘 맞습니다.

5. flex를 이용한 레이어 팝업 가운데 정렬 (대안)

조금 더 간단하게, 전체 화면을 감싸는 컨테이너에 flex 속성을 주는 방법도 있습니다.


<div class="layer-wrap">
  <div class="layer-box">
    flex 기반 레이어 팝업(center 정렬) 예제입니다.
  </div>
</div>
  

.layer-wrap {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;     /* 세로 가운데 */
  justify-content: center; /* 가로 가운데 */
  background: rgba(0,0,0,.5);
  z-index: 9000;
}

.layer-box {
  width: 600px;
  max-width: 90%;
  background: #fff;
  border-radius: 10px;
  padding: 24px;
  box-shadow: 0 10px 30px rgba(0,0,0,.3);
}
  

이 방법은 코드가 직관적이고, 가운데 정렬 레이아웃이 필요할 때 재사용하기 좋습니다. 다만 오래된 IE를 지원해야 한다면 flex 대신 앞에서 설명한 top:50%; left:50%; transform 방식을 쓰는 것이 안전합니다.

6. 레이어 팝업 센터 정렬 SEO 팁

  • 제목에 키워드 포함
    예) CSS로 레이어 팝업 센터 정렬하는 방법 (top, left, transform 완전정리)
  • 본문 상단에 핵심 키워드 자연스럽게 사용
    “레이어 팝업 센터 정렬”, “레이어 팝업 가운데 정렬”, “CSS position fixed 팝업” 같은 관련 단어를 문장 흐름에 맞게 포함.
  • 코드 예제에 설명 주석 추가
    검색엔진이 코드를 이해하는 데 직접적인 영향은 적지만, 독자가 머무르는 시간을 늘려 간접적으로 SEO에 도움.
  • 접근성 속성 사용 (role="dialog", aria-modal, aria-labelledby)
    사용자 경험(UX)을 개선하면 이탈률이 줄어드는 효과가 있습니다.

7. 정리

레이어 팝업을 화면 중앙에 정렬하는 핵심은 결국 top, left, transform, position 조합입니다.

  • 완전한 중앙 정렬: top:50%; left:50%; transform:translate(-50%, -50%);
  • 위쪽에 살짝 내려온 배너: top:3.25%; left:50%; transform:translateX(-50%);
  • flex로 감싸서 가운데 정렬: display:flex; align-items:center; justify-content:center;

위 예제들을 그대로 가져다 쓰면서, 자신의 사이트 디자인에 맞게 width / max-width / padding / 색상만 살짝 조정하면 깔끔한 레이어 팝업 센터 정렬 레이아웃을 빠르게 완성할 수 있습니다.

댓글

이 블로그의 인기 게시물

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 (Request Parameter 전체보기)

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 Java Servlet Request Parameter 완전 정복 웹 애플리케이션에서 클라이언트로부터 전달되는 Request Parameter 를 확인하는 것은 필수입니다. 이 글에서는 Java Servlet 과 JSP 에서 GET/POST 요청 파라미터를 전체 출력하고 디버깅하는 방법을 다양한 예제와 함께 소개합니다. 1. 기본 예제: getParameterNames() 사용 Enumeration<String> params = request.getParameterNames(); System.out.println("----------------------------"); while (params.hasMoreElements()){ String name = params.nextElement(); System.out.println(name + " : " + request.getParameter(name)); } System.out.println("----------------------------"); 위 코드는 요청에 포함된 모든 파라미터 이름과 값을 출력하는 기본 방법입니다. 2. HTML Form과 연동 예제 <form action="CheckParamsServlet" method="post"> 이름: <input type="text" name="username"><br> 이메일: <input type="email" name="email"><b...

PostgreSQL 달력(일별,월별)

SQL 팁: GENERATE_SERIES로 일별, 월별 날짜 목록 만들기 SQL 팁: GENERATE_SERIES 로 일별, 월별 날짜 목록 만들기 데이터베이스에서 통계 리포트를 작성하거나 비어있는 날짜 데이터를 채워야 할 때, 특정 기간의 날짜 목록이 필요할 수 있습니다. PostgreSQL과 같은 데이터베이스에서는 GENERATE_SERIES 함수를 사용하여 이 작업을 매우 간단하게 처리할 수 있습니다. 1. 🗓️ 일별 날짜 목록 생성하기 2020년 1월 1일부터 12월 31일까지의 모든 날짜를 '1 day' 간격으로 생성하는 쿼리입니다. WITH date_series AS ( SELECT DATE(GENERATE_SERIES( TO_DATE('2020-01-01', 'YYYY-MM-DD'), TO_DATE('2020-12-31', 'YYYY-MM-DD'), '1 day' )) AS DATE ) SELECT DATE FROM date_series 이 쿼리는 WITH 절(CTE)을 사용하여 date_series 라는 임시 테이블을 만들고, GENERATE_SERIES 함수로 날짜를 채웁니다. 결과 (일별 출력) 2. 📅 월별 날짜 목록 생성하기 동일한 원리로, 간격을 '1 MONTH' 로 변경하면 월별 목록을 생성할 수 있습니다. TO...