메뉴 건너뛰기

XEDITION

project2018

Layer 화면 중앙정렬 방법

proin 2018.06.10 23:50 조회 수 : 4

http://nuli.navercorp.com/sharing/blog/post/1132794


1. position:absolute와 margin 마이너스값을 이용한 중앙 정렬

  • 장점 : ie7 이상 모든 브라우저에서 지원 가능합니다.
  • 단점 : width와 height값이 고정사이즈인 상태에서만 사용할 수 있습니다.
<div class="layer">Layer Contents</div>
.layer{
  position:absolute;
  top:50%;
  left:50%;
  width:100px;
  height:100px;
  background:#f00;
  margin:-50px 0 0 -50px;
}


2. position:absolute와 inline-block을 이용한 중앙 정렬

  • 장점
    • ie7 이상 모든 브라우저에서 지원 가능합니다.
    • layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
  • 단점
    • 불필요한 span 태그가 하나더 필요합니다. (모바일에선 :after로 대체 가능)
<div class="layer">
  <span class="content">Layer Contents</span>
  <span class="blank"></span>
</div>
.layer{position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}
.layer .content{display:inline-block;background:#f00;vertical-align:middle}
.layer .blank{display:inline-block;width:0;height:100%;vertical-align:middle}


3. position:absolute와 tabel-cell을 이용한 중앙 정렬

  • 장점
    • ie8 이상 모든 브라우저에서 지원 가능합니다.
    • layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
  • 단점
    • 코드 중첩이 여러번 되어야 합니다.
<div class="layer">
  <div class="layer_inner">
    <div class="content">Layer Contents</div>
  </div>
</div>
.layer{position:absolute;display:table;top:0;left:0;width:100%;height:100%}
.layer .layer_inner{display:table-cell;text-align:center;vertical-align:middle}
.layer .content{display:inline-block;background:#f00}


4. position:absolute와 transform을 이용한 중앙 정렬

  • 장점
    • ie9 이상 모든 브라우저에서 지원 가능합니다. (모바일 작업시 적합)
    • layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
    • transform 속성은 GPU가속이 가능해서 속도향상에 도움이 됩니다.
    • 짧은 소스로 간결하게 만들수 있습니다.
  • 단점
    • 모바일에서 사용시 기기별로 버그가 생길 가능성이 있습니다.
<div class="layer">Layer Contents</div>
.layer{
  position:absolute;
  top:50%;
  left:50%;
  background:#f00;
  transform:translate(-50%, -50%)
}


5. position:absolute와 flex를 이용한 중앙 정렬

  • 장점
    • ie10 이상 모든 브라우저에서 지원 가능합니다. (모바일 작업시 적합)
    • layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
    • 짧은 소스로 간결하게 만들수 있습니다.
  • 단점
    • 구버전 브라우저에서는 display:box와 병행해야 합니다.
<div class="layer">
  <span class="content">Layer Contents</span>
</div>
.layer{
  position:absolute;
  top:0;right:0;bottom:0;left:0;
  display:flex;
  align-items:center;
  justify-content:center;

  display:-webkit-flex;
  -webkit-align-item;center;
  -webkit-justify-content:center;
}
.layer .content{background:#f00}

display:flex 는 display:box, display:flexbox를 거쳐서 나온 최종 문법입니다.
하위 버전까지 대응하시려면 display:box 를 prefix붙여서 같이사용하시는게 좋습니다.
Chrome Safari Firefox Opera IE Android iOS
20- (old)
21+ (new)
3.1+ (old)
6.1+ (new)
2-21 (old)
22+ (new)
12.1+ (new) 10 (tweener)
11+ (new)
2.1+ (old)
4.4+ (new)
3.2+ (old)
7.1+ (new)
  • (new) 가장 최근의 문법 (display:flex;)
  • (tweener) 2011년부터 사용된 비공식 문법 (display:flexbox;)
  • (old) 2009년 부터 사용된 오래된 문법(display:box;)

6. position:absolute와 box를 이용한 중앙 정렬

  • 기본 적인 내용은 위에 설명한 flex와 같습니다. 브라우저 구버전을 대응하기 위해서 box를 같이 적용해 보았습니다.
<div class="layer">
  <span class="content">Layer Contents</span>
</div>
.layer{
  position:absolute;
  top:0;right:0;bottom:0;left:0;
  display:-webkit-box;
  display:-moz-box;
  display:-ms-flexbox;
  display:-webkit-flex;
  display:flex;

  align-items:center;
  justify-content:center;
  -webkit-align-items:center;
  -webkit-justify-content:center;

  -webkit-box-pack:center;
  -webkit-box-align:center;
  -moz-box-pack:center;
  -moz-box-align:center;
  -ms-box-pack:center;
  -ms-box-align:center;
}
.layer .content{background:#f00}


감사합니다 :)

번호 제목 글쓴이 날짜 조회 수
91 [검색] [Udacity] SelfDrivingCar- 2-4. 차선 인식(응용) proin 2018.06.20 5
90 [검색] 자율 주행 프로젝트 (opencv, stereo camera , 차선인식 , 장애물 감지 및 회피) proin 2018.06.20 3
89 [검색] [자율주행장난감] Hough Transform을 통한 차선 검출 proin 2018.06.20 2
88 [검색] 강좌 6 OpenCV를 이용한 차선 검출 proin 2018.06.20 4
87 [Open CV] Visual Studio 2015에서 OpenCV 3.2 연동하기 proin 2018.06.19 2
86 [OpenCV] Visual Studio 2017에서 OpenCV 3.4.1를 사용하는 방법 proin 2018.06.19 1
85 ubuntu 16.04에서 iptables설정 save하기 proin 2018.06.18 1
84 PHP 서버 timezone 설정 방법 proin 2018.06.18 2
83 Ubuntu 서버 16.04에 LEMP 스택 설치하기 (Nginx, MySQL, PHP) proin 2018.06.17 5
82 [자율주행] 뭔가 참고하기 괜찮을 듯한 것 proin 2018.06.14 1
81 [YouTube] OpenCV를 이용한 자율주행 자동차 proin 2018.06.14 1
80 [검색] 강좌 7 OpenCV를 이용한 자율 주행 소개 proin 2018.06.14 1
» Layer 화면 중앙정렬 방법 proin 2018.06.10 4
78 [Ubuntu] MySQL 외부접속 설정하기 proin 2018.06.10 2
77 한번에 끝내는 Ubuntu 웹서버세팅 (우분투 서버세팅) proin 2018.06.07 9
76 [linux] 리눅스 링크 폴더 만들기 proin 2018.06.07 2
75 [기본] 리눅스의 퍼미션(권한)을 조정하기 (chmod, chown) proin 2018.06.07 2
74 우분투 - FTP 서버의 설치와 이용법 - vsftpd proin 2018.06.07 1
73 DNSZi에서 Dynamic DNS (리눅스 DDNS 자동 업데이트 설정)관리 하는 법 proin 2018.06.05 1
72 iptables를 사용한 방화벽 설정 proin 2018.06.05 3
위로