오늘 수업은 어제보다 더 재미있게 들었다!
수업시간에 간간히 정리하며 이해했지만, 확실히 벨로그로 한 번 더 정리를 하게 되니 더 기억에 오래 남는 것 같다.
앞으로도 꾸준히 써야지
Ex
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="CSS 파일위치">
</head>
<body>
</body>
</html>
브라우저마다 각각의 기본 세팅값이 다르다.(User Agent Stylesheet)
css reset을 하는 이유는 브라우저 간 세팅값이 각각 다르기 때문에 이 차이를 최대한 없애는 코드를 넣어서
브라우저 요소들의 스타일이 0인 상태에서 시작하기 위한 것이다.
Ex
/* UA Reset */
body {
margin: 0;
}
/* Componets */
body {
background-color: orange;
}
예제에서는 margin을 사용했기 때문에 margin으로 설명한다
(0) 내가 쓰는 크롬 브라우저에서는 body의 margin 기본 세팅값은 8px로 지정되어 있기 때문에,
이것을 아예 margin의 초기값(initial value)으로 지정하고 시작한다.
(1) margin의 초기값으로 세팅한 후,
(2) 같은 type selector라도, reset한 selector와 Components가 있는 selector는 따로 표기한다.
(3) 초기값으로 셋팅한 부분엔 위에 주석으로 UA Reset으로 구분해두면 나중에 보기 편하다!
직계 부모가 제공해주는 콘텐츠 영역(Containing block)의 너비,
즉, 부모의 너비만큼 가득 차게 자동으로 계산해서 적용한다.
그렇다면 width나 margin의 값을 지정해준 후 남는 공간은 어떤 공간인가?
→ 사용 가능한 여유 공간 (available space)
오늘 수업에서 앞뜰, 정원 등등 다양한 비유가 나왔다. 정확한 명칭은 사용가능한 공간! 앞으론 이렇게 알기
Ex 1. width 값 지정 후 사용 가능한 공간은?
div {
width: auto;
}
일 경우: div의 너비는 브라우저가 부모 요소가 제공해주는 컨텐츠 영역을 자동으로 계산한다.
따라서, 사용 가능한 공간은 전체 너비로 사용된다.
(집(눈에 보이는 것)과 마당(눈에 보이지 않는 것)으로 비유하자면, 집이 마당 영역을 다 차지하고 있는 것이다.)
* width: 100%;와 width: auto; 다른 점
Ex 2.
div {
margin: auto;
}
일 경우: 사용 가능한 공간은 div의 여백으로 사용된다.
(집과 마당으로 비유하자면, 여백이 되어 보이지 않을 뿐, 여전히 마당이 내 소유인 것처럼, 여백 공간도 div 소유)
부모 요소에게 지정된 속성 중 몇 가지는 자식 요소로 값이 전달되는 것
상속의 우선 순위: 부모의 지정 값 < 자식의 지정 값
text-align, line-height, color, font 등width, height, padding, margin, border, display, background 등Ex 1.
부모 {
color: black;
}
자식 {
}
위의 상황에서 color속성은 상속이 가능한 속성이다.
-> 자식의 color 값= 부모에게 상속된 black
Ex 2.
부모 {
color: black;
}
자식 {
color: red;
}
위 상황에서 자식의 color 값은 red로 지정되었기 때문에
-> 부모 요소에서 color값 상속되지 않음
Ex 3. 만약 부모요소가 div이고 img가 자식요소일 때
div {
display: block;
}
img {
display: 뭘까요?
}
위 상황에서 div 내부에 display: block이 설정되어 있더라도 display 속성은 상속이 되지 않기 때문에 img에 상속이 되지 않는다.
따라서 img의 display 값은 inline(기본값)이다.
(그러나, img에 display: inherit; 을 추가하면 강제로 상속이 되게 할 수 있다.)
Block (Container)
* 모든
inline요소를 포함할 수 있고, 다른block요소 또한 일부 포함 가능
* 기본적으로 가로폭 전체의 넓이를 가지는 직사각형 형태
* 한 줄 전체 공간을 차지 (한 줄에 하나씩)
->block-level element뒤에는 줄바꿈 O
width와 height를 통해 사이즈 조절 가능width: 화면에서 한 줄을 다 차지함 (100&와 전부를 구별하자)height: 컨텐츠만큼 차지<div>, <ul>, <h1~6>, <p>, <article>, <section> 등inline (Contents)
* 항상
block요소 안에 포함되어 있으며,
inline요소 안 다른inline요소가 포함될 수 있다.
* 컨텐츠만큼의 크기를 가진다.
(컨텐츠가 끝나는 지점까지 넓이로 가짐=줄바꿈X)
-> 각 줄 안에서inline element는 쓰기 모드에 따라 수직or수평 모드로 정렬
width와 height의 개념 자체가 없다.margin 적용X, 공간도 차지하지 않음padding 적용X, 시각적으론 보이지만 공간을 차지하진 않는다. line-height나 text-align을 줌으로써 텍스트의 중앙, 좌&우측 정렬 가능img 요소inline element지만 width 값, height 값이 이미 적용되어 있다.margin, padding 또한 적용 가능<a>, <img>, <span>,<script>, <em>, <map> 등inline-block
*
inline의 특성과block의 특성을 합친 것
* 컨텐츠 만큼의 크기를 가진다
* 줄바꿈 X
block 취급, 외부: inline 취급block이지만, 배치된 바깥 레벨에서는 inline으로 취급함inline의 특성을 가지기 때문에text-align 속성에 영향 받는다block의 특성을 가지기 때문에width값과 height값을 지정 가능inline or block or inline-block element 라도 display 속성에 원하는 값을 넣으면 바꿀 수 있다!
Ex. inline을 block으로 바꿀 때
: 원하는 셀렉터에 display: block; 을 추가한다
Q.
h1에text-align: center를 넣었는데,h1의 위치는 그대로고 안의 내용(콘텐츠)만 중앙 정렬이 되었어요!
A.
h1은 block-level element 이다.text-align은 h1 자체를 가운데로 옮기는 것이 아닌 h1의 콘텐츠만 가운데로 정렬한다.h1 뿐만 아니라 p, ... 등등의 block 속성을 가진 셀렉터에도 text-align 속성을 사용하고 싶다면,block 속성을 가진 태그에는 콘텐츠만 가운데로 정렬이 된다!!!margin의 단축속성
margin: 0 auto 40px;: 상 | 좌우 | 하margin: 5% auto;: 상하 | 좌우margin: 2px 1em 0 auto;: 상 | 우 | 하 | 좌margin: 100px;: 네 면 모두 적용
시계방향으로 돌아간다고 생각하면 된다
끝.
inline-block 헷갈렸었는데 정리가 잘되었습니다 감사합니다!