z-index, float과 clear, overflow, flex, 중앙정렬, 기본레이아웃 실습
fixed
, absolute
+ relative
).z-one {
position: absolute;
z-index: 30;
width: 200px;
height: 200px;
background-color: yellow;
}
.z-two {
position: absolute;
z-index: 20;
width: 200px;
height: 300px;
background-color: blue;
}
absolute
: 두번째가 absolute
, fixed
,relative
->두번째가 위로 겹침fixed
: 두번째가 absolute
, fixed
,relative
->두번째가 위로 겹침relative
: 두번째가 absolute
, fixed
,relative
->겹침 현상 나타나지 않음static
이나 relative
를 사용해야 한다. 순수 3차원 position은 float과 함께 사용할 수 없다.float
속성 끌 때 사용both
: left, right 둘 다 끄기flaot
, clear
사용 시 class=clearfix
사용하기특정 지점부터 float 속성을 끈다는 것을 알아보기 쉽게 표현하기 위해 관례적으로 clearfix
라는 class를 만들어 clear:both
속성만 적용시킴.
<section>
<div class="left-2"></div>
<div class="right-2"></div>
</section>
<div class="clearfix"></div>
<footer></footer>
.clearfix {
clear: both;
}
overflow=hidden
+ 자식 태그 3차원 float: 자식의 높이가 부모에 영향 줄 수 있게 됨overflow: hidden
: 요소 안 내용이 넘치면 요소 크기만큼 보여주고 자르는 속성 (아래에 추가 설명)<section>
<div class="left-2"></div>
<div class="right-2"></div>
</section>
section {
overflow: hidden;
width: 800px;
background-color: orange;
}
.left-2 {
float: left;
width: 100px;
height: 150px;
background-color: cadetblue;
}
.right-2 {
float: right;
width: 100px;
height: 150px;
background-color: chartreuse;
}
요소 안에 content (text, 요소 등)이 요소의 크기를 넘어 넘칠 때 사용하는 옵션
overflow
: 요소 밖으로 넘치는 부분 처리visible
: 넘치는 부분 그대로 보임. defaulthidden
: 넘치는 부분 잘라버림overflow-y:scroll
: y축 기준으로 스크롤 만들어줌overflow-x:scroll
: x축 기준으로 스크롤 만들어줌float
보다 제약사항 적어서 웹사이트 레이아웃 배치할 때 효율적이다.display:flex
쓰면 자식요소들이 x축 기준으로 left 정렬(default)된다.flex-direction
정렬 바꾸기 :row
(default, x축 정렬), column
(y축정렬), row-reverse
(x축 right부터 정렬), colume-reverse
(y축 아래부터 정렬)
flex-wrap
자식 요소 넓이 조정 여부 :nowrap
(부모영역에 맞게 자식 리사이즈), wrap
(넓이 초과 시 자동 줄바꿈)
flex-flow
:flex-direction
, flex-wrap
한 번에 지정
justify-content
x축 정렬하기flex-start
(왼쪽 정렬, default), flex-end
, center
, space-between
(개체 간 공백), space-around
(처음, 끝에도 공백)
align-items
y축 정렬하기flex-start
(위쪽 정렬), flex-end
, center
, baseline
(가장 height 큰 요소 기준 아래변 정렬)
<div class="container">
<div class="item one"></div>
<div class="item two"></div>
<div class="item three"></div>
</div>
.container {
display: flex;
/* flex-direction: row;
flex-wrap: wrap; */
flex-flow: row nowrap;
justify-content: space-between;
align-items: baseline;
width: 1000px;
border: solid 10px red;
height: 500px;
}
.item {
width: 200px;
height: 300px;
}
.one {
background-color: yellow;
height: 100px;
}
.two {
background-color: blue;
height: 200px;
}
.three {
background-color: orange;
height: 300px;
/* width: 900px; */
}
참고링크: https://css-tricks.com/centering-in-css/
(상하마진, 좌우마진) block요소에서 사용
.center-1 {
width: 300px;
height: 300px;
background-color: yellow;
margin: 0 auto;
}
.center-2 {
position: relative;
left: 50%;
margin-left: -150px;
width: 300px;
height: 300px;
background-color: blue;
}
html, body {
margin: 0;
padding: 0;
}
ul {
list-style: none;
margin: 0;
padding:0;
}
a {
color: #000000;
text-decoration: none;
}
line-height = height
(폰트 종류에 따라 미세조정 필요).menu li {
float: left;
width: 100px;
height: 50px;
background-color: yellow;
text-align: center;
line-height: 50px;
}
padding
위 아래 똑같이 주기.menu li a {
display: block;
text-align: center;
padding-top: 15px;
padding-bottom: 15px;
}
border
겹칠 때border-top
등 세부설정한 후 가상선택자 last-child()
로 마지막 요소의 빈 border를 따로 설정해준다.
.menu li {
float: left;
width: 100px;
height: 50px;
background-color: yellow;
/* border: solid 1px red; */
border-top: solid 1px red;
border-bottom: solid 1px red;
border-left: solid 1px red;
}
.menu li:last-child {
border-right: solid 1px red;
}
inline-block
속성으로 맞춰준다..kakao-lists li .kakao-info {
display: inline-block;
}
.kakao-lists li img,
.kakao-lists li .kakao-info {
vertical-align: middle;
}
display:flex
적용.title-wrap .btn-wrap {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
align-content: stretch;
}
아직 어느 태그에 class를 붙여서 사용하면 효율적일지 잘 모르겠다. 실습을 미리 해보니 여러 html 파일이 하나의 css파일을 공유하고 있어서 class나 id등의 이름을 정하는 것도 중복되지 않게 신경써야 될 것 같다.
block 요소들을 x축 정렬하는 방법이 여러 가지가 나왔다. (display: inline-block
, float
, flex
, vertical-align
등)
오늘은 저번주에 이어 css를 이용해 레이아웃을 조절하는 것을 배웠다. 커리큘럼 상 바로 내일부터 여러 웹사이트 레이아웃을 직접 따라 만들어 볼 예정이라 기대가 된다. 빨리 실습을 해 보고 싶어서 내일 분량 영상까지 따라해버렸다. 내일은 개인적으로 helbak 쇼핑몰 레이아웃을 연습해볼까싶다.