일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- webhacking
- Linux
- mysql
- 백엔드
- Shellcode
- 러닝 스칼라
- flask
- BOF
- 인공지능
- deep learning
- Javascript
- Web
- 러닝스칼라
- 경제
- c++
- ChatGPT
- backend
- 챗GPT
- 리눅스
- 파이썬
- 딥러닝
- hackerschool
- c
- php
- 웹해킹
- BOF 원정대
- Scala
- Python
- hacking
- hackthissite
- Today
- Total
jam 블로그
Center를 장악해보자 본문
Element의 Center를 찾기
화면 레이아웃을 만들고 스타일 잡다보면 vertical, horizontal center 만드는게 여간 까다로운게 아닙니다.
한번 정리를 해봅니다.
horizontal center는 간단한 부분이 많지만 vertical center가 까다롭고 parent element의 영향이 많습니다.
Horizontal Center
Text를 horizontal center 하는 것
Text는 horizontal center는 간단합니다. text-align을 사용하면 되는데 text를 둘러싸고 있는 element가 block인지 inline 속성인지에 따라 text-align을 하는 부분이 달라집니다.
Text를 둘러 싸고 있는 tag가 inline 속성이라면?
<!DOCTYPE html>
<html>
<body>
<div class="inline-wrap">
<!-- text가 span이라는 inline tag에 둘러 쌓여 있습니다.-->
<span class="inline">text</span>
</div>
</body>
</html>
위와 같은 경우 inline 클래스에 text-align이 아닌 그 위의 부모에 text-align을 적용해줘야 합니다.
.inline-wrap {
text-align: center;
}
이유는 inline인 경우 text의 width에 맞춰서 영역이 생기기 때문에 text를 center로 할 공간이 없습니다.
그래서 center를 하려는 element의 block인 부모에 center를 지정해줘야 합니다.
Element를 horizontal center를 하는 방법
Element를 horizontal center를 하려면 현재 center를 하려는 element의 display 속성에 따라 달랍니다.
현재 element가 block 이라면 width를 지정해줘야 합니다. 아니면 inline or inline-block 이어야 합니다.
<!DOCTYPE html>
<html>
<body>
<div class="block">
Block element center
</div>
<div class="inline-wrap">
<div class="inline">
Inline element center
</div>
</div>
</body>
</html>
.block {
width: 100px;
margin: 0 auto;
}
.inline-wrap {
text-align: center;
}
.inline {
/*display: inline-block;*/
display: inline;
}
Vertical center
Text, Element를 vertical center 하는 방법
저나 많은 분들이 젤 어려워 하는 부분이 이 vertical center 하는 부분일꺼라 생각됩니다.
다음과 같은 방법들이 있습니다.
- position absolute
- display flex
Position absolute
이 방식은 부모 element의 속성이 relative이면서 height가 있어야 합니다.
<!DOCTYPE html>
<body>
<div id="relative">
<div id="center">Vertical text</div>
</div>
</body>
</html>
html,
body {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
#relative {
position: relative;
height: 100%;
}
#center {
position: absolute;
top: 50%;
transform: translateY(-50%);
/*
여기서 transform을 쓰지않고 top에 calc로 계산해서 넣을 수도 있습니다.
*/
}
position absolute를 하면 부모에서 자식의 크기를 알 수 없기에 height를 채워 줄 수 있는 스타일이나 다른 element가 필요로 합니다.
display flex
이 방식은 flex를 사용하는 방식입니다.
<!DOCTYPE html>
<body>
<div id="relative">
<div id="center">Vertical text</div>
</div>
</body>
</html>
html,
body {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
#relative {
display: flex;
height: 100%;
align-items: center;
/*
justify-content: center;
위 스타일을 쓰면 horizontal center도 가능합니다.
*/
}
실무에서 작업할 때는 좀 더 복잡하겠지만 flex를 잘 사용하면 깔끔한 레이아웃을 볼 수 있습니다.
'개발 및 관련 자료 > WEB' 카테고리의 다른 글
[es6] parameter (0) | 2019.10.20 |
---|---|
지긋지긋한 CORS 파헤쳐보자 (0) | 2019.10.20 |
[PHP] 로컬 환경 PHP 서버에서 CURL 사용시 SSL certificate error: unable to get local issuer certificate 나온다면? (0) | 2018.10.08 |
[php] phpmyadmin 2002 MySQL 서버에 로그인할 수 없습니다. 해결법 (0) | 2014.05.13 |
[php] 배열들의 키값 같을때 값만 더하기 (0) | 2013.07.02 |