* {} /* universal selector */
div, footer {} /* tag selector */
.main {}
#only {}
/* attribute selector */
a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }
/* combinators */
/* 부모-자식은 바로 위-아래 관계임. 후손은 단계가 여러 단계. */
div p {} /* descendant combinator, div 안에 어디든 있으면(후손이면) 선택됨. */
div > p {}/* child combinator, div의 자식이여야 함. */
div ~ p {} /* general silbling combinator, div의 형제면서 아래에 있으면 선택됨. */
div + p {} /* adjacent sibling combinator, div의 형제면서 바로 아래에 있으면 선택됨. */
/* Tree-structural pseudo-class (구조 가상 클래스 셀렉터)*/
:first-child
:last-child
:nth-child()
:nth-last-child()
:first-of-type
:last-of-type
:nth-of-type()
:nth-last-of-type()
/* 부정 셀렉터 */
:not()
/* 그 외에 엄청 많다...*/
CSS Selectors Reference (W3C School)
일단 많이 있다는 것만 알아두자.
/* 아래 코드만 있어도 Reset 이 된다. */
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
flexbox는 박스를 유연하게 늘리거나 줄여준다.
부모 요소에
display:flex
를 적용한다.flex-direction: column
으로 세로방향으로 바꿀 수 있다. (default : row
)justify-content
(가로로 움직임)align-items
(세로로 움직임)자식 요소에
flex: <grow> <shrink> <basis>
(default: 1 0 auto
)grow
: 늘어나는 비율shrink
: 줄어드는 비율basis
: 고정 크기 (flex-grow
속성이 0
일때만 basis 값이 적용됨.)flex-grow와 flex-shrink를 함께 사용하지 않는다.
flex-grow
속성에 변화를 주는 방식을 권장.flex-shrink
는 width
나 flex-basis
에 따른 비율이므로 실제 크기를 예측하기가 어려움.flex-grow
로 비율을 변경하는 경우, flex-shrink
는 기본값인 1로 두어도 무방.참고
width
와 flex-basis
를 동시에 적용하는 경우, flex-basis
가 우선됨.width
가 정확한 크기를 보장하지 않음.flex-basis
를 사용하지 않는다면) 콘텐츠가 많아 자식 박스가 넘치는 경우를 대비해, width
대신 max-width
사용가능.