CSS와 문서를 연결하는 방법 4가지
1. Inline
2. Internal
<style>
을 활용한 방법으로, <head>
내부에 들어가며 위 코드로 모든 div에 스타일을 줄 수 있습니다. 그러나 페이지가 많아지고 스타일 규칙 내용이 많아지면 사용하기 힘들다는 단점이 있습니다. 3. External
External은 외부 스타일 시트 파일을 이용한 방법입니다.
외부 스타일 시트는 스타일 규칙들을 별도의 외부 파일을 만들어 넣는 방식으로 수정과 적용에 용이하여 관리가 편하면서도 용량이 작기 때문에 주로 사용되는 방식입니다.
외부 파일은 확장자가 .css가 되며 css 파일이라고 부릅니다.
CSS파일을 하나 만들고 스타일 규칙들을 선언한 다음 link를 통해 CSS파일을 연결하는 방식으로 사용합니다.
rel 속성은 연결되는 파일이 문서와 어떤 관계인지를 명시하는 속성으로 CSS파일은 'stylesheet'라고 적습니다.
4. Import
<style>
내부 상단이나 외부 스타일시트 상단에 선언하는데 성능상 좋지 않아 거의 쓰이지 않는다고 합니다. 선택자에는 어떤 규칙이 우선으로 적용되어야 하는지에 대해 정해진 규칙이 있습니다.
이 규칙을 '구체성'이라고 합니다.
구체성은 선택자를 얼마나 명시적으로(구체적으로) 선언했느냐를 수치화한 것으로,
구체성의 값이 클수록 우선으로 적용이 됩니다.
(구체성과 상속, cascading 관련 설명링크)
margin auto
margin에서는 수치 이외에 사용할 수 있는 'auto' 값이 있습니다. 좌우 margin을 모두 auto로 적용하였다면 브라우저는 요소가 가질수 있는 가로 영역에서 자신의 width를 제외한 나머지 여백에 크기에 대해 균등 분할하여 적용합니다.
margin collapse(마진 병합)
마진 병합은 인접한 두 개 이상의 수직 방향 박스의 마진이 하나로 합쳐지는 것을 의미합니다.(큰 값을 기준으로 병합됨.)
마진 병합이 다음 세가지의 경우에 일어납니다.
관련 추가 정리
(1) 마진 병합은 수직 방향으로만 이루어지며, 좌우에 대해서는 일어나지 않습니다.
(2) 마진 병합은 마진이 반드시 맞닿아야 발생하기 때문에 2,3번째의 경우 패딩 및 보더가 없어야 합니다.
(3) margin은 padding과 달리 음수 값을 지정할 수 있습니다.
(4) margin collapse는 절대 위치나 상대 위치가 주어진 요소들에서는 발생하지 않습니다.
margin과 padding은 px과 같은 고정적인 단위 외에도 %라는 상대적인 단위를 사용 할 수 있습니다. 얼핏 생각하면, 상하는 height 값에 대해 좌우는 width 값에 대해 크기가 계산될 거 같지만, %는 상하좌우 방향에 관계없이 모두 요소의 width 값을 기준으로 값이 결정된다는 특징을 가집니다.
font-family: family-name | generic-family ( | initial | inherit );
모든 요소는 자기가 기본적으로 가지고 있는 display 값이 있고, 그 값에 따라 블록 레벨, 인라인 레벨 등 렌더링 박스의 유형이 결정됩니다.
display 속성으로 해당 요소의 렌더링 박스의 유형을 변경할 수 있고, 렌더링 여부도 결정할 수 있습니다.
그외에 list-item, flex, inline-flex, table, table-cell 등 다양한 속성 값 존재
단, display 속성을 바꾸더라도 태그의 본질을 바꾸는 것은 아니므로 문법적오류가 없도록 태그를 작성해야합니다.
ex)<span>
의 display 속성을 블록으로 바꿨다 해도, 그 안에<div>
와 같은 블록을 넣으면 안됩니다.
요소를 보통의 흐름에서 벗어나 띄워지게 하는 속성
속성값으로 none, left, right를 갖습니다.
주변 텍스트나 인라인요소가 주의를 감싸는 특징을 갖습니다.
대부분의 요소의 display 값을 block으로 변경합니다.
(예외: inline-table, flex 등)
floating 요소는 주변 요소들의 배치에도 영향을 줍니다.
그러므로 가끔 주변 요소들이 의도하지 않은 대로 나타날 수 있는데, clear 속성을 사용하여 이 문제를 해결할 수 있습니다.
요소의 레이아웃을 설정하는 대표적인 속성은 position 속성입니다. position을 사용하기 위해서는 요소를 이동시키기 위한 좌표 속성인 offset에 대해서도 알아야 합니다.
position과 offset 속성을 잘 활용하면 더 다양하고 화려한 레이아웃을 구현할 수 있습니다.
Normal-flow란?
offset의 %단위 사용
이전에 padding과 margin에서 % 값을 적용할 때, 상하좌우 방향에 관계없이 가로 사이즈를 기준으로 %값을 계산된다고 배웠습니다. 그러나 offset은 top, bottom (상하) 는 기준이 되는 요소의 height 값 left, right (좌우) 는 width값에 대하여 계산되어집니다.
position의 fixed 속성값에 대해 공부하다보니 평소 스크롤을 내려도 따라오는 것들이 position: fixed
를 사용한 것일까? 궁금해져서 확인해보았더니 진짜 맞았다.
position에는 sticky라는 속성값도 존재하지만,
브라우저들의 지원율이 낮아 실무에서 활용하기 어렵다고 합니다. (브라우저 지원율은 'can i use'에서 확인가능)
z-index (기본 값 : auto)
요소가 겹치는 순서(쌓임 순서 또는 stack order)를 지정하는 속성입니다.
속성값
-- auto : 쌓임 순서를 부모와 동일하게 설정(기본값)
-- number : 해당 수치로 쌓임 순서를 설정(음수 허용)
설명
-- position 값이 static이 아닌 경우 지정가능
-- 순서 값이 없을 경우 생성순서(코드상 순서)에 따라 쌓임
-- 부모가 z-index 값이 있을 경우 부모 안에서만 의미있음
-- 큰 값이 가장 위쪽(음수 사용 가능)
HTML/CSS 코드를 작성하고 나면 항상 유효성 테스트를 실시해야 합니다.
유효성 검사를 통해 마크업 문법상 에러가 없는지 표준에 맞게 작성되었는지 알 수 있고,
사용성과 접근성, SEO 최적화 개선에도 도움이 됩니다.
<유효성 검증 사이트 w3c>
미디어쿼리는 동일한 웹 페이지를 다양한 환경의 사용자들에게 최적화된 경험을 제공할 수 있는 '반응형 웹사이트'로 작동하도록 도와주는 도구입니다.
w3schools와 생활코딩님 영상을 참고하시면 좋습니다.
https://mediaqueri.es/
위 사이트에서는 미디어쿼리를 사용해 만들어진 반응형웹사이트들을 소개하고 있습니다. (가로사이즈를 변경하면서 확인해보시면 웹사이트가 변화하는 것을 확인하실 수 있습니다.)
CSS 레이아웃 작성방식인 GRID와 FLEX에 대해서
1분코딩님의 정리를 통해서 학습하고, cssgridgarden이라는 웹사이트를 통해 한번 더 정리해보았습니다.