.relative {
position: relative;
}
.top-20 {
top: -20px;
left: 30px;
}
제일 아래 있는 사각형은 원래 위치에서 왼쪽으로 부터 30px, 위에서 부터 -20px 만큼 이동했다.
p {
margin: 0;
background-color: yellow;
}
.absolute {
position: absolute;
}
.right-0 {
right: 0;
bottom: 0;
}
p태그는 원래 block 요소이기 때문에 한칸을 전부 차지해야 한다. 그 이유는 position을 absolute로 설정했기 때문이다. absolute로 설정하면 내용의 크기만큼만 너비가 설정된다.
top: 30px
로 설정하면, 모니터 상단에서 30px만큼 떨어진 곳에서 고정된다.inline : content(내용)의 크기만큼만 너비가 설정된다. 다음 요소에 대해 줄바꿈이 없다. 대표적인 예로 span태그가 있다. span태그의 content의 크기만큼만 가로 너비가 설정되고 따로 CSS로 width, height, margin 등 의 크기를 바꿀 수 없다.
inline-block : 얘는 그래도 inline보다는 낫다. inline이긴 하지만 block처럼 크기를 바꾸는 것이 더 자유롭다.
block : 내용이 얼마나 길든 짧든 부모 태그의 한 칸을 차지한다. 즉, 부모 태그 너비의 100%만큼의 크기를 가지게 된다. width, height, margin의 크기를 설정할 수 있다. 대표적으로 div, img, p 태그 등이 있다.
참고로 위 속성값들은 display 속성의 값이고 span의 디폴트가 inline이라는 것이지 span을 inline-block이나 block 값으로 변경하지 못하는건 아니다.
float는 사진의 border 테두리를 따라 글씨를 쓸 때 유용한 속성이다.
출처 : www.bilgisayarkutuphanesi.com
위 사진은 이미지 요소의 float 속성값을 none, left, right로 설정했을 때의 각각의 모습이다.
float를 잘 이용하면 페이지 전체의 레이아웃(Layout)을 잡을 때 좋다.
그러나 float를 쓰게 되면 부모가 자식의 높이를 알지 못해서 부모를 벗어나 버리는 경우가 있다. 이를 해결하기 위해 2가지 방법이 있다.
overflow: "hidden";
clear: "both"
clear속성은 float를 해제시키기 위한 속성이다. clear: "left"
는 float: "left"
가 설정된 요소를 해제시키고 clear: "right"
는 float: "right"
가 설정된 요소를 해제시킨다. 그리고 clear: "both"
는 둘 다 해제시켜 준다.
그러나 이 방법은 쓸데 없는 div 요소를 새로 만들어야 한다는 단점이 있다.
따라서 float가 적용된 요소의 부모 요소의 가상 요소를 만들어서 그 가상 요소에 clear속성을 적용해 주면 된다. 참고로 이 방법으로 적용하게 될 때 주의할 점은 가상 요소는 내용이 필수이기 때문에 꼭 content: "";
를 설정해준 뒤 clear: "both"
를 해주는 것이 좋다.
오늘 배운 내용을 가지고 1주차 과제에 적용하여 문제를 풀어보았다. 오류없이 잘 작동하였고 확실히 이해도 잘 되었다.
과제를 수행하면서 막힌 부분은 어떠한 요소에 float: "left"
속성을 적용했을 때 마진이나 패딩을 주면 요소들이 마구잡이로 섞였었다. 이 부분에 대해 찾아보니 float속성은 말 그대로 부모 요소위에 둥둥 떠다니는 것과 같다. 그림으로 설명하면 다음과 같다.
이렇게 부모 요소는 내용 없이 패딩만 남게 되고 자식 요소들은 부모 요소 위에 둥둥 떠다니게 된다. 이것을 해결하기 위한 방법이 위에 설명된 내용이다.
나와 같은 오류가 일어난 상황이고 그것을 해결하는 방법으로 clear속성을 이용했다.