본문 바로가기
HTML5 & CSS3

HTML & CSS #15 : 미디어 쿼리

by haheehee 2022. 12. 16.

접속하는 미디어(device)에 따라 특정 CSS스타일을 사용할 수 있도록 하는 것!

 

브라우저 창의 너비가 조절될 때마다 화면에 표시되는 column 갯수가 달라지고,

사용하는 디바이스의 크기에 따라 웹사이트의 layout이 바뀌는 것이 그 예시이다.


미디어 쿼리 구문

@media [only|not] 미디어_유형 [and 조건] * [and 조건]

 

미디어 유형은 

all, print, screen, tv, aural, braille, handheld, projection, tty, embossed 가 있다.


미디어 쿼리의 조건 - viewport (가로 너비와 세로 높이)

속성으로는 

1. width, height

2. min-width, min-height

3. max-width, max-height 가 있다.

단말기 크기의 viewport를 하나로 통일해 사용하기 위해 "width=device-width"로 주로 사용한다.

<meta name="viewport" content="width=device-width, initial-scale=1">

위 코드를 <head>태그 안에 삽입하면 된다.

<head>
<meta charset="utf-8">
<title>Media Queries</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
	background: url(images/bg0.jpg) no-repeat fixed;
	background-size: cover;
}

@media screen and (max-width: 1024px) {
	body {
		background: url(images/bg1.jpg) no-repeat fixed;
		background-size: cover;
	}
}

@media screen and (max-width: 768px) {
	body {
		background: url(images/bg2.jpg) no-repeat fixed;
		background-size: cover;
	}
}

@media screen and (max-width: 320px) {
	body {
		background: url(images/bg3.jpg) no-repeat fixed;
		background-size: cover;
	}
}
</style>
</head>

화면 크기를 조정하면 조정된 화면 크기에 따라 해당하는 이미지가 배경화면으로 변경된다.

 


미디어 쿼리의 조건 - orientation (화면 회전)

1. orientation: portrait : 단말기 세로 방향

2. orientation: landscape : 단말기 가로 방향

위 조건을 미디어 쿼리 구문의 조건에 넣어서 설정할 수 있다.

<head>
<meta charset="utf-8">
<title>Media Queries</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
	background-color: #eee
}

@media screen and (orientation: landscape) {
	body {
		background-color: orange;
	}
}

@media screen and (orientation: portrait) {
	body {
		background-color: yellow;
	}
}
</style>
</head>

F12를 눌러 형광펜으로 표시한 Toogle device toolbar로 orientation 작동을 확인할 수 있다. 


그 밖에, 미디어쿼리 조건은

화면비율(aspect-ratio, min-aspect-ratio, max-aspect-ratio),

단말기 화면 비율(device-aspect-ratio, min-device-aspect-ratio, max-device-aspect-ratio),

색상당 비트 수(color, min-color, max-color) 등이 있다.


미디어 쿼리 중단점 (breakpoint)

서로 다른 css를 적용할 화면 크기

"미디어 쿼리의 조건 - viewport"의 예시 코드 처럼 미디어쿼리로 조건을 나누어 기준을 세우는 것을 말한다.


외부 CSS 파일 연결

1. <link> 태그 사용 - <head> 태그 안에 아래의 두 코드 중 한가지 코드를 삽입하면 된다.

이미지와 비디오, 음성 파일 등과 같이 외부 파일을 로딩하여 사용하는 것과 동일한 방법이다. 

<link rel="stylesheet" media="미디어쿼리조건" href="css파일경로/css파일이름.css">

2. @import 구문 사용 - <style>태그 안에 삽입하면 된다.

@import url(css파일경로/css파일이름.css) 미디어쿼리조건

 


미디어쿼리 예시

css파일에서 미디어 쿼리 부분

@media screen and (min-width: 768px) and (max-width: 1719px) {
	#container {
		width: 570px;
		margin: 50px auto;
	}
	.card {
		position: relative;
		width: 550px;
		height: 250px;
		margin: 20px 10px;
		border: 1px solid #0f0f0f33;
	}
	.words {
		position: absolute;
		width: 200px;
		left: 310px;
		top: 50px;
		text-align: center;
		color: #8c8cff;
	}
}

@media screen and (min-width: 1720px) {
	#container {
		width: 1710px;
		margin: 50px auto;
	}
	.card {
		position: relative;
		float: left;
		width: 550px;
		height: 250px;
		margin: 10px;
		border: 1px solid #0f0f0f33;
	}
	.words {
		position: absolute;
		left: 310px;
		top: 50px;
		text-align: center;
		width: 200px;
		color: #6EE0FF;
	}
}

<head>태그 안에 <link>태그를 사용하여 따로 생성한 css파일을 불러오는 방법으로 해보았다.

<head>
<meta charset="utf-8">
<title>Media Queries</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../css/style-media-query-practice-web.css" rel="stylesheet" type="text/css">
</head>

창 크기를 조정함에 따라 설정한 대로 변경되는 것을 확인할 수 있다. 

미디어쿼리 예시 (사진 출처 : pixabay, 기본적 내용 출처: Do it! HTML5 + CSS3 웹 표준의 정석)

 

 

 

 

 

 

 

 

 

출처 : Do it! HTML5 + CSS3 웹 표준의 정석 (고경희)

사진 출처 : Pixabay

댓글