브라우저 제작사들마다 각각 브라우저가 제공하는 요소의 기본 스타일이 모두 달라서
reset.css
normalize.css
css는 html과 마찬가지로 공백을 규합
/* 한 줄, 여러 줄 모두 이렇게 사용 */
벤더(브라우저 제조사)와 프리픽스(접두어)의 합성어
아직 비표준이거나 실험적인 CSS 속성을 특정 브라우저에서 실행할 수 있도록 CSS 속성 앞에 브라우저 제조사 만의 접두어(prefix)를 붙이는 문법
ex)
-webkit-transition: all 4s ease;
-moz-transition: all 4s ease;
매번 모든 프로퍼티에 작성하려면 힘들기 때문에 자동으로 벤더프리픽스를 붙여주는 프로그램이 있음
ex) Autoprefixer
후자 우선의 원칙
구체성(명시도)의 원칙
한 선택자가 다른 선택자보다 더 구체적으로 작성되었다면 구체적인 선택자가 우선
"어떤 선택자가 더 구체적인가?" 를 판단할때 가중치를 기준으로 판단
가중치 점수
inline-style : 요소의 안에 속성으로 선언되는 스타일, 1000 점의 가중치
id 선택자 : 100점
class, 가상클래스, 속성 선택자 : 10점
타입, 가상요소 선택자 : 1점
전체선택자(Universal Selector) 는 무시
참고링크 : https://specificity.keegan.st/
태그을 많이 겹쳐서 가중치 점수를 올려도 자리올림은 되지 않는다.
ex) class 선택자 > 타입선택자 10개 이상
중요성의 원칙
블록 박스
width
와 height
속성을 사용하여 스타일을 컨트롤인라인 박스
width
와 height
속성을 사용할 수 없음diplay 속성
display
속성은 박스의 성질을 지정하여 다른 박스들과 어떤 방식으로 위치가 배치 될지 결정외부 디스플레이 타입
내부 디스플레이 타입
마진 겹침 현상 (margin collapsing)
마진 겹침 현상이란?
- 요소와 요소의 사이에 마진 탑(margin-top) 혹은 마진 바텀(margin-bottom)의 공간이 있을 경우 더 높은 값의 마진 값이 적용되는 현상
- 부모 요소와 자식 요소가 존재할 때, 자식 요소의 마진 탑 혹은 마진 바텀 값이 부모의 높이에 영향을 미치지 않는 현상
해결방법
1. 부모 요소에 overflow 속성 값을 적용하기
2. 부모 요소에 display: inline-block 값을 적용하기
3. 부모 요소에 border 값을 적용하기
4. 부모 요소에 display 속성으로 flow-root을 사용하기 (IE 지원 불가)
벤더프리픽스 부분은 제가 수업을 놓쳤는데 호수님덕분에 캐치했습니다 감사합니당!!