위의 순위를 무시하는 경우 : !important - architecture이 좋지 않은 경우
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<ol>
<li id="special">First</li>
<li>Second</li>
</ol>
<h1 id="special">Hello</h1>
<button>Button 1</button>
<button>Button 2</button>
<div class="red"></div>
<div class="blue"></div>
<a href="naver.com">Naver</a>
<a href="googlenaver.com">Google</a>
<a>Empty</a>
</body>
</html>
/* selector {
property: value;
} */
* {
color: green;
}
li {
color: blue;
}
#special {
color: pink;
}
.red { /* 박스모델은 전체가 바뀌기에 크기 지정해준닷! */
width: 100px;
height: 100px;
padding: 20px;
padding-top: 100px;
padding-right: 100px;
/* 위부터 시계방향
padding: 20px 20px 20px 20px
*/
margin: 20px;
border: 2px dashed red;
/* 복잡 케이스
border-width: 2px;
border-style: solid;
border-color: pink;
*/
/*
padding: 컨텐츠 안에 들어가는 스페이싱
margin: 컨텐츠 밖에 들어가는 스페이싱
*/
background: yellow;
}
button:hover {
color: red;
background: beige;
}
a[href="naver.com"] { /* ^= : 시작 $= : 끝 */
color: purple;
}
display: inline - inline으로 바뀜, 텍스트 크기에 따라 사이즈 바뀜
display: inline-block - inline으로 바뀜, 박스 크기 일정
display: block - block으로 바뀜, 한 줄에 한 block
html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<!-- Block-level -->
<div></div>
<div></div>
<div></div>
<!-- Inline-level -->
<span>1</span>
<span>2</span>
<span>3</span>
</body>
</html>
div, span {
width: 80px;
height: 80px;
margin: 20px;
}
div {
background: red;
display: inline-block;
}
span {
background: blue;
display: block;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<article class="container">
<div></div>
<div class="box">I'm Box</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</article>
</body>
</html>
div {
width: 50px;
height: 50px;
margin-bottom: 20px;
background: red;
}
.container {
background: yellow;
left: 20px;
top: 20px;
position: relative;
}
.box {
background: blue;
}
매우 유연하게 다룰 수 있다
<두가지 성질>
Container에 적용하는 속성값, 각각의 item에 적용하는 속성값이 존재한다
Flexbox에는 중심축과 반대축이 있다
수평축이 중심축, 수직축이 반대축(상대적)
flex-direction
row가 default
row: 왼쪽->오른쪽(행)
row-reverse: 반대로 오른쪽->왼쪽
-> 이 둘은 중심축이 수평축(x축)
column: 위->아래(열)
column-reverse: 아래->위
-> 이 둘은 중심축이 수직축(y축)
flex-wrap
nowrap이 default
wrap: 꽉 차면 아래로 내려가짐
wrap-reverse: 반대순서로 내려가짐
flex-flow
flex-flow: column nowrap: flex-direction, wrap 합친 것
justify-content - 중심축 기준
flex-start: 왼쪽정렬(column은 위쪽정렬)
flex-end: 오른쪽정렬(column은 아래쪽정렬)
center: 가운데정렬
space-around: 각 사이드는 좀 좁고 나머지는 균등 넓게
space-evenly: 간격 균등
space-between: 사이드는 화면에 딱 끼도록, 나머지는 간격 균등
align-items - 반대축 기준
center: 반대축 기준 가운데정렬
baseline: 한 아이템이 패딩 등으로 더 클 경우 텍스트 기준으로 맞주어주기
align-content - justify-content 반대축 버전
justify의 모든 것 사용 가능
wrap이 unwrap이면 아무 효과가 없음!! align-content는 flex-wrap 속성값이 wrap이어서 container가 꽉차서 다음줄로 내려가는 경우에 어떻게 정렬할지에 대한 속성임!!!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<!-- div.container>div.item.item${$}*10 -->
<div class="container">
<div class="item item1">1</div>
<div class="item item2">2</div>
<div class="item item3">3</div>
<div class="item item4">4</div>
<div class="item item5">5</div>
<div class="item item6">6</div>
<div class="item item7">7</div>
<div class="item item8">8</div>
<div class="item item9">9</div>
<div class="item item10">10</div>
</div>
</body>
</html>
.container {
background: beige;
height: 100vh;
/* height: 100%하면 부모의 높이의 100% 의미
100vh는 부모 상관없이 전체 100% 의미*/
display: flex;
flex-direction: row;
flex-wrap: nowrap;
/*
flex-flow: column nowrap;
둘을 한번에 표기
*/
justify-content: flex-start;
align-items: center;
}
.item {
width: 40px;
height: 40px;
border: 1px solid black;
}
.item1 {
background: #ef9a9a;
order: 10;
flex-grow: 1;
flex-shrink: 1;
}
.item2 {
background: #f48fb1;
flex-shrink: 2;
}
.item3 {
background: #ce93d8;
}
.item4 {
background: #b39ddb;
}
.item5 {
background: #90caf9;
}
.item6 {
background: #a5d6a7;
}
.item7 {
background: yellow;
}
.item8 {
background: orange;
}
.item9 {
background: violet;
}
.item10 {
background: brown;
}