이 방식은 HTML 파일과 CSS 파일을 별도로 관리하므로 불러오는 속도도 빠르고 관리 면에서도 효율적 입니다.
미디어 쿼리를 적용할 수 있는 기타 방식들
링크 방식 2
<link rel = "stylesheet" media = "all and (min-width:320px)" href = "style320px.css">
링크 방식 2sms <link> , </link> 태그에 직접 미디어의 종류와 조건문 등을 작성하고 적용할 CSS 파일을 연결하는 방식인데,
이 방식은 되도록 사용하지 않는 것이 좋다.
조건이 여러 개로 나눠지게 되면 그 만큼 CSS 파일의 개수도 늘어나게 되어 CSS 파일을 여러 번 불러와야 하므로 웹 사이트의 속도도 느려지기
때문입니다.
문서 내에 작성하는 방식
<head> <style> @media all and (min-width:320px) {실행문} </style> </head> <body>
</body>
문서 내에 작성하는 방식은 HTML 문서 내에 미디어 쿼리를 작성하는 방식인데, 이 방식은 피하는게 좋다.
그 이유는 CSS 코드를 문서 내에 작성하게 될 경우 문서의 용량이 커지고, 이렇게 커진 용량 때문에 속도가 느려져 웹 사이트를 방문하는
사용자가 웹 사이트를 빨리 볼 수 없기 때문입니다.
-미디어 쿼리 사용시 주의 사항-
띄어 쓰기 주의하기
예를 들어 논리 연산자 중 하나인 and 구문을 사용할 때 and 구문 뒤에는 항상 공백을 한 칸 띄워줘야 합니다.
만약 공백을 한 칸 띄어주지 않고 미디어 쿼리를 작성하면 정상적으로 작동하지 않습니다.
접두사인 min/max 사용 시 작성 순서 주의하기
미디어 쿼리를 사용할 때는 min/max 와 크기 조건문 (width) 을 사용해서 해상도별로 웹사이트를 다양하게 보여줄 수 있습니다.
그런데 min을 사용할 때는 반드시 크기가 작은 순서대로 작성해야 하고, max를 사용할 때는 반드시 크기가 큰 순서대로
작성해야 합니다.
min을 사용할 때 크기 (width)가 작은 순서대로 작성해야 하는 이유는 min은 최소 또는 그 이상이라는 뜻으로,
점차 커지는 것을 의미하기 때문에 반드시 작은 순서부터 큰 순서로 작성해야 합니다.
반대로 max는 최대 또는 그 이하라는 뜻으로, 점차 작아지는 것을 의미하기 때문에 max를 사용할 때는 반드시 큰 순서부터 작은
순서로 작성해야 합니다.
@media all and (min-width:320px) {실행문}
@media all and (min-width:768px) {실행문}
@media all and (min-width:1024px) {실행문}
미디어 쿼리로 브라우저 크기 감지 시 주의하기
미디어 쿼리를 이용해서 크기를 감지할 때는 보이는 영역을 뜻하는 뷰포트 크기를 기준으로 감지한다.
Inline 속성
Inline 속성이란, 쉽게 말해서 줄을 바꾸지 않고 다른 요소와 함께 한 행에 위치하려는 성향 입니다. 대표적인 Inline 속성을 가진 태그로는 <a> 태그가 있습니다. 상, 하단 외부 여백 속성을 정의해도 적용되지 않습니다. 인라인 요소의 상, 하 여백은 magin이 아니라 line-height 속성에 의해 발생합니다. 아래 예문을 보면 <a> 태그들이 줄을 넘기지 않고 한 줄에 연속해서 붙는 결과를 볼 수 있습니다.
링크 링크 링크 링크
Block 속성
Block 속성은 Inline 과 달리 한 줄에 나열되지 않고 그 자체로 한 줄을 완전히 차지합니다. 대표적인 블록 요소로 <p> 태그가 있습니다.
첫번째 문장입니다.
두번째 문장입니다.
Inline와 Block의 합친 속성
inline-block 라는 속성은 인라인과 같이 한줄에 표현하면서도 margin, width, height 속성을 정의하면 표현해 줍니다.
웹 사이트를 만들 때도 이러한 여백이 필요합니다. 예를 들어 웹사이트 구조를 보면 사이 사이 벌어져 있는 공간들이 잇는데, 이것을 여백 또는 간격이라고 합니다.
패딩(두께)이란?
면과 면 사이가 물체나 공간 등으로 채워져 있는 것을 말하며, 속 또는 충전재라고도 합니다. 우리가 겨울에 입는 패딩 점퍼의 면과 면 사이가 오리털로 채워져 있듯이 패딩은 면과 면 사이에 어떠한 것이 채워져 있는 상태를 말합니다. 웹 사이트에서도 특정 요소에 두께를 만들거나 빈 공간 또는 간격을 만들 때 마진과 패딩이 사용 됩니다.
반응형 웹사이트에서는 모든 요소가 가변적이어야 합니다.
기존의 고정되어 있는 마진 (여백) 을 변할 수 있게 설정해줘야 합니다.
가변 마진은 가변 그리에서 사용했던 공식과 같습니다.
(가변 마진을 적용할 마진값 ÷ 적용할 박스를 감싸고 있는 박스의 가로 너비) x 100 = 가변 마진값
-가변 패딩을 적용하는 두 가지 방법-
-기본 방법-
가변 그리드 공식을 이용해서 가변 패딩으로 적용
(가변 패딩을 적용할 패딩값 ÷ 적용할 박스를 감싸고 있는 박스의 가로 너비) x 100 = 가변 패딩 % 값
-제한적인 조건이 있을 때-
박스에 패딩을 적용하더라도 박스의 정해진 너빗값 이상이 되지 말아야 하는 경우에 이용하는 방법입니다.
(가변 패딩을 적용할 패딩값 ÷ 적용할 박스를 감싸고 있는 박스의 가로 너비) x 100 = 가변 패딩 % 값
하지만 픽셀은 모니터의 해상도를 기준으로 하기 때문에 화면이 확대되거나 축소되는 환경에는 맞지 않습니다.
웹 페이지를 표시하는 모니터 해상도에 따라 픽셀 크기가 달라지기 때문입니다.
따라서 정확하게 글자 크기를 나타내려면 상대적인 단위인 em을 사용하는 것이 좋습니다.
em의 단위는 대문자 M의 너비를 1em으로 표현한 것으로, 16px이 1em에 해당합니다.
반응형 웹에서 글자 크기를 상대적인 단위로 사용할 때 상속 문제를 해결해주는 방법을 가변 폰트라고 합니다.
가변 폰트는 지금까지 이용한 가변 그리드 공식을 이용해서 적용할 수 있다.
(가변 폰트를 적용할 글자 크깃값 ÷ 적용할 요소를 감싸고 있는 요소의 글자 크깃값) = 가변 폰트값
-rem 단위-
em 단위는 자신의 부모 박스에 글자 크기가 지정되어 있을 경우 자식 박스에게 글자 크기가 상속됩니다.
그래서 자식 박스의 글자 크기를 지정할 때 공식을 이용하여 글자 크기를 지정해야 하는 등 복잡해집니다.
rem 단위는 최상위, 즉 웹 문서의 시작인 <html>, </html> 태그를 기준으로 하기 때문에 상속 문제가 발생하지 않아
유용하게 사용할 수 있는 단위 중 하나입니다.
- vw(viewport width) 단위 -
vw 단위는 웹 브라으저의 너비를 100을 기준으로 하여 크기를 결정하는 단위입니다.
(vw 단위를 적용할 글자 크깃값 x 브라우저의 너빗값) ÷ 100 = 크깃값
- vh(viewport height) 단위 -
vh 단위는 웹 브라우저의 높이를 100을 기준으로 하여 크기를 결정하는 단위입니다.
(vh 단위를 적용할 글자 크깃값 x 브라우저의 높잇값) ÷ 100 = 크깃값
- vmin (viewport minimum) 단위 -
vmin 단위는 웹 브라우저의 너비와 높이 중 짧은 쪽을 기준으로 하여 크기를 결정하는 단위입니다.
만약 글자 크기를 5vmin으로 설정하면 글자 크기는 웹 브라우저의 너비, 높이 중 작은 쪽을 100을 기준으로 해서 결정합니다.
- vmax (viewport maximum) 단위 -
vmax 단위는 웹 브라우저의 너비와 높이 중 큰 쪽을 기준으로 하여 크기를 결정하는 단위입니다.
만약 글자 크기를 5vmax로 설정하면 글자 크기는 브라우저의 너비와 높이 중 큰 쪽을 100으로 하고, 기준으로 해서 결정합니다.
- width와 max-width의 차이점 -
width 속성과 max-width 속성은 비슷해 보이지만 분명한 차이가 있습니다. width 속성은 속성값을 100%로 설정할 경우 요소의 크기를 100%로 유지하지만, max-width 속성은 속성값을 100%로 설정할 경우 요소의 기본 크기 이상으로는 크기가 조절되지 않습니다.
- 상/하 퍼센트 패딩값의 기준 -
상/하 퍼센트 패딩 값은 해당 요소의 부모 요소 가로 너비를 기준으로 합니다. 보통은 부모 요소의 높이를 기준으로 할 것으로 생각하지만, CSS 스펙을 살펴보면 상/하 퍼센트 패딩 값은 부모 요소의 너빗값을 기준으로 한다고 명시되어 있습니다. 헷갈릴수도 있으니 반드시 기억!!
아래 책은 제가 공부할때 활용했던 책으로 추천드리는 책이니 한번씩 읽어보시는것을 추천드립니다!! ㅎㅎ
가로 너비가 넒을 때는 차이가 없지만 가로 너비를 줄이면 폭에 맞게끔 박스의 크기가 줄어든 것을 확인할 수 있다.
이것을 가변 그리드 기술이라고 한다.
미디어 쿼리
화면의 크기와 환경 감지 및 웹 사이트를 변경하는 기술. 컴퓨터나 기기의 환경 또는 종류를 감지해야 그 기기에 맞게 웹사이트의 구조를 바꿀 수 있기 때문에 반응형 웹을 제작할 때 반드시 필요한 기술이다.
뷰 포트
화면을 제어하는 기술. 미디어 쿼리로 수많은 기기의 화면 크기를 감지해야 할 때 꼭 필요하다. 스마트 기기는 기본 설정값이 자동으로 보이는 영역으로 설정되기 때문에 미디어 쿼리를 사용해도 스마트 기기에서 화면의 크기를 정확하게 감지하지 못하기 때문에 스마트 기기의 보이는 영역을 기기의 실제 화면 크기로 변경하여 미디어 쿼리가 기기의 화면 크기를 정확하게 감지할 수 있도록 하기 위해 뷰포트라는 기술을 이용한다.
일치 연산자로 ===좌항과 우항이 '정확'하게 같을 때 true 다르면 false가 된다. '==='은 숫자 1과 문자 1을 다르게 인식한다. 반면에 '=='은 양쪽의 값을 같다고 판단한다. 바로 이것이 '정확'의 의미이다. 즉 ===은 서로 같은 수를 표현하고 있더라도 데이터 형이 같은 경우에만 같다고 판단하기 때문이다. ==연산자 대신 ===연산자를 쓰는것을 강력하게 권한다.