CSS속성
위치
위치에 관한 속성은
-
배경 또는 공간의 위치에 관련된 속성들
-
background, position, float, overflow
-
텍스트의 정렬, 위치에 관련된 속성들
-
text-align, vertical-align, line-height, text-indent, overflow
이렇게 나눈 기준은 block, inline 요소이다.
보통 배경 또는 공간은 가지는 요소들은 block요소가 많다.
텍스트를 가지는 요소들은 inline요소가 많다.
inline요소가 공간을 가지도록 할 수도 있는데 display: block; 을 사용하는 것이다.
이는 inline요소를 block요소처럼 보이게 만들어 공간을 부여할 수 있다.
텍스트의 위치 속성은 다음 장에서 알아보도록 하고 이번에는 배경의 위치 속성을 알아보자
먼저 background(배경) 속성에 대해 알아보자
background
CSS에서 이것 빼면 시체라고 할 정도로 background속성은 정말 중요하다.
background와 관련된 많은 속성과 속성 값이 있다.
그중 색, 이미지, 이미지의 반복 여부, 위치, 위치의 고정여부에 대해서 알아보자
background-color: 배경 색에대한 속성이며 색 단위를 선택해 색을 넣으면 페이지에 나타난다.
background-image: 단위URL을 통해 이미지의 경로를 적어주면 이미지가 나타난다.
background-repeat: 페이지에 이미지의 반복 여부를 결정하는 속성이다.
background-position: 이미지의 위치를 설정하고 x축, y축 순의 방향으로 px이나 %를 이용한다.
background-attachment: 이미지의 위치를 고정, 스크롤, 로컬로 나타낼 수 있으며
https://developer.mozilla.org/ko/docs/Web/CSS/background-attachment
여기서 확인해 각각의 속성값을 확인해 볼 수 있다.
/*예시*/
body {
/*각각 쓴 경우*/
background-color: #262a25;
background-image: url(images/banner2.png);
background-repeat: no-repeat;
background-position-x: right;
background-position-y: top;
background-position: 50% 0; /* 하나의 값이 생략될 경우 center로 적용 */
background-attachment: fixed;
/*합쳐서 쓴 경우*/
background: #262a25 url(images/banner2.png) no-repeat 50%(가로) 0(세로) fixed;
}
배경 안의 이미지의 위치는 background-position으로 설정할 수 있다.
그렇다면 배경 자체의 위치는 어떻게 설정할까?
바로 position 속성이다.
position
가장 쉽게 공간의 위치를 설정할 수 있는 속성이다.
단순 구조 보다는 복잡한 레이아웃 구조를 위해 사용되고 있다.
단, 모든 공간을 position으로 설정해 버린다면 페이지 수정 요청이 들어온다면 새로 만드는 것이 빠를지도 모른다.
position의 속성 값은 static(정적), relative(상대적), absolute(절대적), fixed(고정적)이 있다.
숫자에 -(마이너스)를 사용할 수 있으며 이는 '반대 방향으로 숫자만큼'의 의미이다.
static: 기본 값으로 위치가 지정되었다기보단 공간이 원래 가지고 있는 위치이다.
.static {
position: static;
}
relative: 상대적으로 위치를 지정할 수 있으며, 이 말은 기준이 될 요소를 지정해야 한다는 뜻이다.
.relative1 {
position: relative;
}
.relative2 {
position: relative;
top: -20px;
left: 20px;
width: 500px;
}
relative1의 position:relative; 는 static과 동일하게 적용된다. ( 만일 relative2처럼 방향 값을 지정한다면 상황은 달라진다.)
중요한 것은 relative2의 속성들인데 position: relative; 를 적용 후 top, right, bottom, left를 사용하여 위치 값을 지정한다.
relative는 원래 위치를 기준으로하여 방향 값을 적용하는 방법이다.
absolute: 절대적으로 위치를 지정할 수 있으며, 이 말은 기준이 될 요소가 정해져 있다는 뜻이다.
.absolute{
position: absolute;
top: 40px; left: 40px;
}
기준이 되는 요소는 위치 지정을 한 부모 요소(static이 아닌 다른 값을 가지고 position속성을 사용한 다른 요소)이다.
만일 그런 부모 요소가 없다면 브라우져의 왼쪽 맨 위를 기준으로 한다.
마찬가지로 방향값을 적용하여 사용한다.
fixed: 배경고정인 background-attachment: fixed;와 비슷하지만 배경이 아닌 요소를 고정한 다는 점에서 다르다.
.fixed {
width: 200px;
position: fixed; /* 브라우저 창 기준 */
}
스크롤에 관계없이 브라우저 위치에 고정되어있을 수 있다.
sticky: relative처럼 작동하다가 스크롤에 따라 fixed처럼 작동하는 유용한 속성 값.
.sticky{
position: sticky;
top: 20px;
}
복잡한 레이아웃 구조를 만드는데 필요한 position속성을 알아보았다.
그렇다면 단순 구조의 위치를 위한 속성은?
바로 float속성이다.
float
단순 구조 뿐 아니라 가로로 나열하는데도 사용되는 float는 '동동 뜨다'라는 의미를 가지고 있다.
쉽게 남는 영역을 채워주는 속성으로 이해할 수 있다.
원래 이미지와 텍스트의 배치 용도로 사용했지만 레이아웃 용으로 많이 사용된다.
우리는 앞서 HTML 문서의 구조화를 배운 바 있다.
Naver를 예로 들면 각각의 구조들이 자리에 알맞게 들어가 있는 모습을 볼 수 있다
이것이 바로 float를 이용한 것이다.
속성 값으로는 left, right, none 등이 있다.
지금 보여지는 것처럼 왼쪽에 이미지를 두고
글을 쓸 수 있다.
float:left;를 사용하여 이렇게 만들 수 있다.
float:right;는 그 반대이다.
이 이미지는 레이아웃에 색을 입혀 나타낸 것으로 위에서부터 헤더, 메인, 섹션, 어사이드, 푸터이다.
이렇게 레이아웃을 만들기 위해서는 float를 어느 부분에서 해제해야 할 때가 있다.
해제하지 않으면 밑의 그림과 같이 푸터가 사이의 공간으로 들어와 버리게 된다.
이럴 때 float를 해제하는 방법은 다음과 같다.
float를 적용 후 해제하는 방법 4가지
1. float를 적용한 요소의 부모가 없는 경우
다음에 오는 요소에게 clear를 적용한다.
2. float를 적용한 요소의 부모가 있는(container) 경우
2-1 부모 요소에 height를 적용(하지만 높이가 고정됨)
2-2 부모요소에 overflow를 적용(hidden/auto)
2-3 부모 요소에게 ::after 가상 클래스(전후 문자 선택자)를 적용하여
{content:""; display: block; clear: both;}의 값을 준다.
예제를 많이 다뤄봐야 각각의 경우에 대해 알 수 있다.
여기서 나온 overflow속성은 텍스트와도 관련이 있다.
공감 또는 훈수 부탁드립니다.(내가 그걸 모를 꺼 같니?? 라던가 응 아니야~이거야~ 해주세요)
그럼~ 앙 제바
'IT아카데미 > CSS' 카테고리의 다른 글
홈페이지 만들기 - CSS[6] (0) | 2020.05.13 |
---|---|
홈페이지 만들기 - CSS[4] (0) | 2020.05.11 |
홈페이지 만들기 - CSS[3] (0) | 2020.05.09 |
홈페이지 만들기 - CSS[2] (0) | 2020.05.07 |
홈페이지 만들기 - CSS[1] (0) | 2020.05.06 |