div {
background-color: orange;
width: 800px;
}
div: 타입 선택자
background-color: 속성(property)
orange: 값(value)
div
의 크기는 부모 요소의 크기에 관련해 결정됨
width
는 국가에 따라 기준이 달라진다 (ex 한국은 왼쪽, 아랍은 오른쪽)
width: auto;
부모 기준으로 높이 자동 조절
height: auto;
부모가 아닌 자식 기준으로 높이 자동 조절
margin-left: auto;
자동으로 좌측 여백을 취하겠다 → 오른쪽으로 이동
margin-right: auto;
자동으로 우측 여백을 취하겠다 → 왼쪽으로 이동
margin: 0 auto;
블록 요소의 가운데 정렬 방법 (width 값이 필요함)
width: 400px;
margin: 0 auto;
기본 초기값을 명시적으로 쓰는 것
IE에서는 지원하지 않기 때문에 잘 쓰지 않고 0으로 많이 씀
✔️ TIP
background-color의 initial value는 tranparent
상속되는 속성이 있고 되지 않는 속성이 있으니 검색해 볼 것
원래 상속이 지원되는 속성은 초기화 할 때 inherit 키워드 즐겨 쓰자
상속이 지원되지 않으면 initial
%: 기본값은 0% 0%
이미지 스프라이트 기법 사용 시에 사용하면 편리
이미지 스프라이트(image sprite): 여러 개의 이미지를 하나의 이미지로 합쳐서 관리하는 이미지
이미지를 하나만 관리할 수 있다는 장점이 있음
이미지 예시
코드로 사용하는 법
해당 코드처럼 입력하면 모든 아이콘마다 적용될 hover 기능을 하나씩 적어야 한다는 번거로움이 있다
.icon.github {
background-color: black;
background-position: left top;
}
.icon.facebook {
background-color: dodgerblue;
background-position: center top;
}
.icon.email {
background-color: orangered;
background-position: right top;
}
.icon.github:hover {
background-position: left top;
}
.icon.facebook:hover {
background-position: center top;
}
.icon.email:hover {
background-position: right top;
}
background-position-y 사용해 한 번에 해결 가능
.icon:hover {
background-position-y: bottom;
}
inline일 때 text-align, block 요소일 때 margin
부모에게 text-align: center;
를 주고 <h1>
, <p>
를 작성
<h1>
, <p>
는 블록 요소이기 때문에 박스는 고정, 글자만 가운데 정렬되는 것둘 다 부모 요소가 가지고 있는 너비만큼 꽉 채운다는 점은 동일
width: 100%
width: auto
<a>
, <span>
, <em>
etcmargin: 20px;
로 값을 줄 경우 위아래는 적용되지 않음
padding: 20px;
로 값을 줄 경우 보여지기는 하지만 상하단이 공간을 차지하지는 않음
a 태그 최초 작성 시 가로로 배치된 것을 확인할 수 있음
종류: <div>
, <p>
, <h1>
etc
<div class="wrapper">
<div class="box">A</div>
<div class="box">B</div>
</div>
.wrapper {
margin: 100px auto;
width: 260px;
}
.box {
margin: 30px;
}
부모와 자식 모두가 블록 요소일 경우에 margin을 주면 위아래 margin이 눈에 안 보일 수 있음
이유: margin이 겹쳐 margin 상쇄 일어남
→ 부모의 margin이 100으로 더 크기 때문에 부모 margin이 적용되고 자식의 margin 30은 그 안에 포함되어 있는 값이 되는 것
.wrapper {
margin: 100px auto;
width: 260px;
padding: 1px;
}
.box {
margin: 30px;
}
padding을 주게 될 경우 부모와 자식의 margin이 분리됨
혹은 overflow: hidden;
이나 display: flow-root;
로도 해결 가능
overflow
는 IE를 고려한 선택, flow-root
는 IE가 빠진 밝은 미래의 해결책
display: block;
inline으로 태어났지만 block으로 살겠다는 의미
display: inline-block;
블록 요소이지만 인라인 형태로 쓰고 싶을 때 사용
기준점: 텍스트의 베이스라인
height 속성을 제거하면 text의 양만큼 씀
background-color: orange;
padding: 20px;
display: inline-block;
같은 요소가 여러 선언의 대상이 된 경우 어떤 선언의 CSS 속성을 우선 적용할지 결정하는 방법
점수가 높은 선언이 우선
점수가 같은 경우 가장 마지막에 해석된 선언이 우선
.wow {
background-color: blue;
}
.wow {
background-color: purple;
}
같은 클래스에서 동일한 속성 작성 시 나중에 작성한 속성이 적용
#wow {
background-color: aqua;
}
.wow.wow {
background-color: purple;
}
h1.wow.wow2 {
background-color: blue;
}
h1 {
background-color: orange;
}
h1 {
background-color: blue;
}
우선순위를 높여야겠다고 판단되면 붙여쓰면서 클래스 강조
.wow .wow : wow 클래스 하위의 wow 클래스
.wow.wow : wow 클래스 강조하며 우선순위 높임
css 작성 시 공통적인 부분 + 스타일 초기화 부분은 가장 위로 뺄 것
div {
margin: 10px;
padding: 15px;
border: 10px solid royalblue;
}
margin
: 외부 여백
padding
: 내부 여백
설정하는 만큼 요소의 크기가 커짐
border
: 테두리를 설정해 주는 속성
border의 굵기는 width에 더해짐
https://9elements.github.io/fancy-border-radius/fancy-border-radius.png
타입 셀렉터는 위험하다!
후손 선택자로 작성할 것