안녕하세요~
현재 프론트엔드 개발자를 꿈꾸며
개발공부를 하고 있는 학생? 입니다
제가 공부한 내용을 여기에 조금씩 정리해보려고 합니다!
CSS Layout
position property는 element의 위치를 정하는데 사용함
기본적인(statcic)을 제외하고 나머지 부분 정리
relative
그자체로는 특별한 의미가 없지만 원래 위치를 기준으로 배치됨.
상대적으로 배치 된 요소의 top, right, bottom, left 속성을 설정하면 일반위치에서 멀어지도록 조정됨.
보통위치에서 상대적으로 요소가 자리를 잡기때문에 top과 같은 프로퍼티가 필요하다
```
Ex.
div {
position : relative;
top: -20px; left: 40px;
}
```
*top에 - 값을 주면 위쪽으로 20px만큼 이동*
absolute
부모요소의 position이 fixed, relative, absolute이면 부모 기준으로 절대적으로 위치가 배치된다.
(부모요소가 static이면 해당 position 적용 X)
일반적으로 absolute를 쓸 경우 절대적으로 움직이고 싶은 부모에게 position : relative 를 부여한다.
absolute position을 가지게되면, block element 가로크기는 content의 크기만큼이다!
* 만약 position된 부모태그가 없으면, 해당 element 는 document body를 부모로 사용해서, 페이지가 스크롤링 될때마다 따라다닌다.
````
<style>
div.relative {
position: relative;
width: 400px;
height: 200px;
border: 3px solid #73AD21;
}
div.absolute {
position: absolute;
top: 40px;
right: 0;
width: 200px;
height: 100px;
border: 3px solid #73AD21;
}
</style>
````
div.absolute의 위치는 부모element로 부터 위에서 부터 40px 떨어져있고, 오른쪽에는 아주 딱 붙어있는 자리임!
* top:-20px 이렇게 마이너스 값을 주니깐 element가 부모 element 위쪽으로 이동했다 !
fixed
고정된 위치에 계속 배치되어있는 element
absolute는 relative나 이런 속성을 가진 부모가 필요했으나, fixed 는 필요없음
스크롤을 내리든지, 안내리든지 간에 계속 화면에 고정된 부분에 뜨는 것 !
top, right, bottom, left 값을 주어서 위치를 지정하고 거기에 고정시키는 것
<참고>
이미지위치를 픽셀이 아닌 %로도 줄 수 있다.
어떤 element 기준으로 위치시킬 때, left : 10px 이렇게가 아닌 %값을 주면
부모element 너비의 기준으로 이동하는 것.
예를 들어, 부모element의 너비가 100px 이었다면 내가 left : 50% 값을 주면 left로 50px만큼 이동했다는 것 !
[해당내용 repl it : CSS 17에 나옴]
HTML 웹페이지는 주로 이러한 layout을 가지고 있다.
각 태그는 semantic tag들로서 각 태그 이름자체가 의미를 가지고 있는 tag들이다.
nav
navigation bar 나 , link들을 정의할 때 사용
aside
적혀있는 내용 이외에 내용을 넣는 컨텐트를 표현할 때 사용
float: left 하면 왼쪽으로 element가 뜨고, 그 주변으로 다른 요소들이 잡지의 사진 + 글형식으로 붙는다.
float: right 하면 오른쪽으로 element가 뜨고, 그 주변으로 다른 요소들이 잡지의 사진 + 글형식으로 붙는다.
float속성을 주면 뜨는 값이여서 부모element가 자식element의 높이를 인지 못해서 부모element보다 해당 element가 더 커지는 경우가 있다. 그럴 때 문제를 해결하기 위해서 overflow: hidden 속성이나, clear 를 사용해서 문제를 해결한다.
clear 속성은 쓰여지는 요소에 해당 element float 의 영향을 안받겠다고 말하는 것. float속성을 위에있는 element 가 쓰면 자연스럽게 다음 tag들이 그 element 주변을 둘러싸게 되는데 나는 그런 속성을 받지않을 거면 clear : both를 주면된다.(float property가 상속되는 것은 아님)
Ex.
.after-box {
clear : left;
}
````
*after-box 라는 클래스이름을 가진 element는 float:left라 는 영향을 받지않을 것이다! 라고 말하는 것
그러면 float : left를 준 element 옆쪽으로 글이 붙는 게 아니라, 아예 새로운 줄에서 element 시작할 수 있음*
clear : both 오른쪽왼쪽 float 둘다 영향 안받음
원래 float 효과를 준 다음 element로 오면, float속 성이 붙어서 왼쪽 혹은 오른쪽 정렬이 되고,다음 요소도 float 효과 영향 주기 위해서 자기 너비를 최소화하고, 다 음 요소가 올 수 있게 끔 해주는데 float 속성이 없는 객체는 나머지 공간을 모두 차지한다!
잘 읽고 갑니다^^