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; }
링크예제 : http://codepen.io/myting/pen/LpKxro
2. position:absolute와 inline-block을 이용한 중앙 정렬
- 장점
- ie7 이상 모든 브라우저에서 지원 가능합니다.
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
단점 - 불필요한 span 태그가 하나더 필요합니다. (모바일에선 :after로 대체 가능)
1 2 3 4 | <div class="layer"> <span class="content">Layer Contents</span> <span class="blank"></span> </div> |
1 2 3 | .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} | cs |
3. position:absolute와 tabel-cell을 이용한 중앙 정렬
- 장점
- ie8 이상 모든 브라우저에서 지원 가능합니다.
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
- 단점
- 코드 중첩이 여러번 되어야 합니다.
12345 <div class="layer"> <div class="layer_inner"> <div class="content">Layer Contents</div> </div></div>
123 .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} cs
- ie8 이상 모든 브라우저에서 지원 가능합니다.
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
- 코드 중첩이 여러번 되어야 합니다.
1 2 3 4 5 | <div class="layer"> <div class="layer_inner"> <div class="content">Layer Contents</div> </div> </div> |
1 2 3 | .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} | cs |
4. position:absolute와 transform을 이용한 중앙 정렬
- 장점
- ie9 이상 모든 브라우저에서 지원 가능합니다. (모바일 작업시 적합)
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
- transform 속성은 GPU가속이 가능해서 속도향상에 도움이 됩니다.
- 짧은 소스로 간결하게 만들수 있습니다.
- 단점
- 모바일에서 사용시 기기별로 버그가 생길 가능성이 있습니다.
1 <div class="layer">Layer Contents</div> cs
1234567 .layer{ position:absolute; top:50%; left:50%; background:#f00; transform:translate(-50%, -50%)}
- 장점
- ie9 이상 모든 브라우저에서 지원 가능합니다. (모바일 작업시 적합)
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
- transform 속성은 GPU가속이 가능해서 속도향상에 도움이 됩니다.
- 짧은 소스로 간결하게 만들수 있습니다.
- 단점
- 모바일에서 사용시 기기별로 버그가 생길 가능성이 있습니다.
1 | <div class="layer">Layer Contents</div> | cs |
1 2 3 4 5 6 7 | .layer{ position:absolute; top:50%; left:50%; background:#f00; transform:translate(-50%, -50%) } |
5. position:absolute와 flex를 이용한 중앙 정렬
- 장점
- ie10 이상 모든 브라우저에서 지원 가능합니다. (모바일 작업시 적합)
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
- 짧은 소스로 간결하게 만들수 있습니다.
- 단점
- 구버전 브라우저에서는 display:box와 병행해야 합니다.
123 <div class="layer"> <span class="content">Layer Contents</span></div>
123456789101112 .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}
- 장점
- ie10 이상 모든 브라우저에서 지원 가능합니다. (모바일 작업시 적합)
- layer 안의 content 영역이 고정값이 아니라 가변이어도 자동으로 중앙정렬이 됩니다.
- 짧은 소스로 간결하게 만들수 있습니다.
- 단점
- 구버전 브라우저에서는 display:box와 병행해야 합니다.
1 2 3 | <div class="layer"> <span class="content">Layer Contents</span> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 | .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} |
6. position:absolute와 box를 이용한 중앙 정렬
- 기본 적인 내용은 위에 설명한 flex와 같습니다. 브라우저 구버전을 대응하기 위해서 box를 같이 적용해 보았습니다.
123 <div class="layer"> <span class="content">Layer Contents</span></div>
12345678910111213141516171819202122 .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}
- 기본 적인 내용은 위에 설명한 flex와 같습니다. 브라우저 구버전을 대응하기 위해서 box를 같이 적용해 보았습니다.
1 2 3 | <div class="layer"> <span class="content">Layer Contents</span> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .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} |
링크예제 : http://codepen.io/myting/pen/PPMKZG
'공학' 카테고리의 다른 글
php 간단 암호화 함수 (0) | 2019.07.13 |
---|---|
Born AI 세대 (0) | 2019.01.26 |
티스토리 쉽게 코드입력하기(복사/붙여넣기) (0) | 2016.08.03 |
탭메뉴(php) 소스 (0) | 2016.04.21 |
나비에 스톡스 방정식(Navier-Stokes equation) (0) | 2016.04.20 |
Deep Link 란? (0) | 2016.03.27 |
분자의 운동은 어떻게 측정할까? (0) | 2016.03.24 |