댓글 목록

CSS레이아웃-가로및세로정렬

페이지 정보

작성자 운영자 작성일 17-10-29 19:19 조회 1,637 댓글 0

동영상 강좌는 유튜브 채널 '웹학교'를 이용하시기 바랍니다.

요소 : 가운데 정렬(수평)


<div>와 같은 블록요소를 가로로 가운데에 배치하려면 margin:auto; 을 사용합니다.

요소의 너비를 설정하면 해당 요소의 가장자리까지 늘어나지 않습니다.

요소는 지정된 너비를 차지하고 나머지 공간은 두 여백(margin) 사이에서 균등하게 분할됩니다.

.center {
    margin: auto;
    width: 50%;
    border: 3px solid green;
    padding: 10px;
}

** width속성을 설정하지 않으면 (또는 100%로 설정한 경우) 가운데 맞춤은 효과가 없습니다.


텍스트 : 가운데 맞춤

요소 내부의 텍스트를 가운데 정렬하려면 text-align:center;를 사용하면 됩니다.

.center {
    text-align: center;
    border: 3px solid green;
}

이미지 중앙 정렬

이미지를 가운데 배치하려면 margin:auto;을 사용하고 블록 요소로 만들면 됩니다.

img {
    display: block;
    margin: auto;
    width: 40%;
}

좌우 정렬 - 위치 사용

요소를 정렬하는 한가지 방법은 다음을 사용하는 것입니다. position:absolute;

.right {
    position: absolute;
    right: 0px;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}

** 절대 위치된 요소는 정상 흐름에서 제거되며 요소가 겹칠 수 있습니다.

** position을 갖고 요소를 정렬할 때 body요소에 margin과 padding을 항상 정의합니다. 이것은 브라우저마다 시각적인 차이를 피하기 위한 것입니다.


position속성을 사용할 때 IE8이하 버전에서 문제가 있습니다. 

body {
    margin: 0;
    padding: 0;
}

.container {
    position: relative;
    width: 100%;
}

.right {
    position: absolute;
    right: 0px;
    width: 300px;
    background-color: #b0e0e6;
}

좌우 정렬 - float 사용

요소를 정렬하는 또 다른 방법은 다음과 같이 float속성을 사용하는 것입니다.

.right {
    float: right;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}

float을 가지고 요소 정렬을 할 때, 항상 <body>에 margin과 padding을 정의해야 합니다. 이것은 브라우저마다 시각적인 차이를 피하기 위한 것입니다.

IE8이하 버전에서는 문제가 있습니다. !DOCTYPE선언이 없는 IE8이하 버전에서는 오른쪽에 17픽셀의 여백을 추가합니다. 이 공간은 스크롤바를 위해 예약된 것 같습니다. 따라서 float속성을 사용할 때 항상 DOCTYPE선언을 설정해야 합니다.

body {
    margin: 0;
    padding: 0;
}

.right {
    float: right;
    width: 300px;
    background-color: #b0e0e6;
}

수직 중심 - padding 사용

CSS에서 요소를 세로로 가운데에 배치하는 방법은 여러가지가 있습니다. 간단한 해결책은 위쪽과 아래쪽에 padding속성을 사용하는 것입니다.

.center {
    padding: 70px 0;
    border: 3px solid green;
}

수직 중심 - line-height사용

또 다른 속임수는 line-height속성과 동일한 값으로 height속성을 사용하는 것입니다.

.center {
    line-height: 200px;
    height: 200px;
    border: 3px solid green;
    text-align: center;
}

/* If the text has multiple lines, add the following: */
.center p {
    line-height: 1.5;
    display: inline-block;
    vertical-align: middle;
}

수직 중심 - position & transform 사용

세 번째 솔루션은 position과 transform속성을 사용하는 것입니다.

.center { 
    height: 200px;
    position: relative;
    border: 3px solid green; 
}

.center p {
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}


댓글목록 0

등록된 댓글이 없습니다.

CSS Flexbox강좌

CSS Variables강좌 

CSS Grid강좌