일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- event
- Wecode
- Vue transition
- 자료구조
- react
- webpack
- input
- 쉬운설명
- jsx
- sass
- Vue.js
- JavaScript
- 리액트
- HOC
- scss
- State
- 자바스크립트
- mapGetters
- storybook
- MySQL
- v-html
- 댓글달기
- CSS
- TypeScript
- ES6
- express
- nodejs
- Vue
- vuex
- App.vue
- Today
- Total
익명의 개발노트
[CSS] position 본문
1. static : 모든 태그들의 기본. 디폴드 값이 static이라 따로 써주지 않아도 됨.
2. relative : 태그 위치 변경하고 싶을때 position : relative 사용. top, right, bottom, left 속성 사용 할 수 있음.
각각의 방향을 기준으로 태그 안쪽방향으로 이동하기 때문에 바깥쪽으로 이동하게 하려면 -값을 줘야
하는 특징이 있음. static 상태를 기준으로 주어진 값만 큼 움직임.
top, left, right, bottom 속성이 있어야 움직임.
3. absolute : position : static 속성을 가지고 있지 않은 parents를 기준으로 움직인다.
부모 포지션이 relative, absolute, fixed인 태그가 없다면 가장 위의 태그(body)가 기준이 된다.
absolute가 되면 div여도 더는 width가 100%가 아니다.
※ 3번은 부모 중에 position: relative;를 갖고 있는 요소에 의해 절대적인 위치를 갖게 된다.
4. fixed : 위치를 아예 고정시켜버림. 스크롤로 해도 고정됨. absolute와 마찬가지로 더이상 div의 width 100%가
아님.
예시)
박스 두개를 감싸는 div와 감싸져있는 박스 one, two를 만들어보고 포지션을 적용해보자.
노란색 박스는 one, 파란박스는 two 겉에 테두리는 두 박스를 감싸고 있는 div이다.
위의 설명대로 파란색에 absolute를 줘서 위치 이동을 저렇게 하고자 하려면??
감싸고 있는 부모에 포지션 relative를 주면 된다.
그리고 원하는 만큼. top, left, bottom, right를 이용해서 이동~!
노란상자는 fixed를 해놓았다. 이건 부모와 상관없음.
겉에 감싸고 있는 div를 옮기고 싶으면??
이미 포지션 relative를 적용시켜놨으니, 파란색 상자와 같이 top, left, bottom, right 를 이용해서 이동시키면
된다.
만약에 감싸고 있는 div에 포지션값이 없이 top, left, bottom, right 만 속성으로 준다면, 아무런 변화가 없을
것이다.
*하면서 느낀점
태그별로 border : 1px solid red 등 으로 각각 위 그림처럼 테두리나 배경화면 표시 후 움직이는거 보면
작업하기 수월하다. absolute는 내가 어떤 것을 움직일까 고민하고, 움직이고자 하는 물체에 부여하고,
그 물체는 어디에 감싸여있는지 부모태그를 확인해서 position : relative 값을 주면, 이해하기 쉬울 것 같다.
* 포지션 값은 같은 레벨의 태그에게 우선 적용된다.
같은 레벨의 박스 3개가 있다고 보자
<div id="one">
</div>
<div id="two">
</div>
<div id="three">
</div>
#one {
border : 1px solid red;
width : 500px;
height : 500px;
background-color : yellow;
position : absolute;
left : 100px;
}
#two {
border : 1px solid red;
width : 300px;
height : 300px;
background-color : green;
position : absolute;
left : 500px;
}
#three {
border : 1px solid red;
width : 100px;
height : 100px;
background-color : blue;
position : relative;
left : 400px;
}
상자안의 포지션값을 보면 알 수가 있다.
relative는 가장가까운 곳의 relative에게 반응한다.
1번 상자가 relative, 2번상자가 absolute, 3상자가 relative면
1번상자 밑으로 2번상자, 3번상자가 붙어있을 것 이다. 2번이 앱솔루트이기 때문에 3번상자는 1번상자 밑으로 기준을 잡고 이동한다.
1번 상자가 absolute, 2번상자가 absolute, 3상자가 relative면
2번 3번상자는 브라우져를 기준으로 위치를 잡는다.
3개다 릴레티브이면 1번밑에 2번, 2번밑에 3번상자가 온다.
'프로그래밍 > html, css' 카테고리의 다른 글
[CSS] font-family, indent, box-sizing (0) | 2019.06.03 |
---|---|
[CSS] z-index (0) | 2019.03.02 |
[CSS] 정렬방법 (0) | 2019.03.02 |
[CSS] 레이아웃 & Box Model (0) | 2019.03.02 |
[HTML] Tag의 종류 (0) | 2019.02.28 |