미디어쿼리
뷰포트의 해상도에 따라 CSS를 분기시키는 미디이쿼리는 반응형 프로젝트에서 반드시 필요한 기법이다.
< link~media="">
< ink rel="stylesheet" type="text/css" media="all and (min-width: 1000px)" href="style_pc.css">
최소 가로폭이 1000px보다 넓은 해상도일 때 style_pc.css를 연결 한다는 뜻
모바일 기기 | 가로 | 세로 |
---|---|---|
iPhone X | 375 | 812 |
iPhone 6,7,8 | 375 | 667 |
iPhone 5 | 320 | 568 |
Galaxy S5,S8 | 360 | 640 |
Galaxy Note 8 | 360 | 640 |
Galaxy | 414 | 736 |
iPad Pro | 1024 | 1366 |
: | : | : |
@media
@media all and (min-width : 1000px) { 모든 기기에서 해상도가 최소 1000px 인 경우 적용할 속성들...}
처음 로딩할 때 성능이 저하되지 않도록 CSS 파일을 하나로 만들어서 CSS내부에서 조건에 따라 분시기시는 것이 일반적인 형태의 반응형웹 CSS 입니다.
body {color : red; }
@media only screen and (mex-width : 768px){
body {color : blue;}
}
=>이 구문은 원래 글자색이 빨간색인데, 화면이 768px 보다 작아졌을 때는 파란색으로 지정한다는 뜻이므로 pc에서는 글자 색상이 빨간색으로, 모바일에서는 파란색으로 나타난다.
=>color 를 반대로 쓰고 max->min 으로 바꾸면 원래 글자는 파란색인데 768px보다 커지면 글자색을 빨간색으로 지정한다.
@media only screen and (orientation : portrait){
body {background : skyblue;}
}
=> 모바일 기기를 세워 세로가 가로보다 긴 세로방향이 되면 배경색을 하늘색으로 지정한다는 뜻.
=> orientation : landscape 로 background : lightgreen; 으로 바꾸면 모바일 기기를 눕히면 배경색이 연두색으로 바뀐다.
@media screen and (mex - width : 900px) and (min - width : 600px), (min - width : 1100px){
body {color : red;}
}
=> 가로가 600px에서 900px 사이일 때, 그리고 1100px 이상일 때 에만 글자색을 빨간색으로 한다는 뜻.
Media Type | 설명 |
---|---|
all | 모든 미디어 장치에 사용(기본값) |
프린터에 사용 | |
screen | PC, 태블릿, 스마트폰에 사용 |
speech | 스크린리더기가 페이지를 읽는데 사용 |
예제
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>오르셰미술관<title>
<style type="text/css">
</style>
<head>
<body>
<div class="wrap">
<header>
<h1>Musee d'Orsay</h1>
</header>
<div id="container" class="clear">
<div class="1nb">
<ul>
<li> <a href="#">작가의 작품 </a> </li>
<li> <a href="#">작가의 시대 </a> </li>
<li> <a href="#">작가의 일생 </a> </li>
</ul>
</div>
<div class="content">
<h2>PICTURES</h2>
<p><a href="#">피리부는 소년</a> <br><a href="#">고흐의 방</a<br><a href="#">
황색 그리스도가 있는 화가의 자화상</a></br><a href="#">오페라좌의 관현악단</a><br><a href="#">만종
</a><br><a href="#">제비꽃 장식을 단 베르트모리조</a></br><a href="#">피리부는 소년</a><br><a
href="#">고흐의 방</a><br><a href="#">황색 그리스도가 있는 화가의 자화상</a><br><a href="#">오페라좌의
관현악단</a><br><a href="#">만종</a><br><a href="#">제비꽆 장식을 단 베르트모리조</a><br>
</div
<div class="aside">
<ul class="ext">
<li><h2>Workshop Go</h2><a href="#">Life drawing workshop</a></li>
<li><h2>Summer Exhibition</h2
<a href="#">A-1evel Summer Exibition Online 2010</a></li>
<li><h2>RA Collection</h2><a href="#">RA Collections</li>
</ul>
</div>
</div>
<footer>
<p>$copy ;2018 Les Amis du Musee d'Orsay. All rights reserved. </p>
</footer>
</div>
</body>
</html>
결과
media query를 흉내내는 script
function initLayout(){
var widthWin = $(window).width();
if (widthWin < 1000) $(;'body').addClass('mob').removeClass('pc');
else $('body').removeclass('mob').addClass('pc');
}
창의 가로 크기를 재고 1000px 보다 좁으면 body 에 mob 클래스를 붙이고 pc클래스는 제거하고, 1000px 이상이면 body 에 pc 클래스를 붙이고, mob 클래스는 제거한다는 뜻이다.
$(window).resiza(function() {
initLayout();
});
미리 만들어둔 스크립트를 창 크기가 바뀔 때마다 실행합니다.
...
body.mob {max-width : 720px}
...
css에서 body.mob에 속성을 추가하면 모바일일 때의 속성이 등록된다.
'CSS' 카테고리의 다른 글
css 단위 (4) | 2022.08.23 |
---|---|
이미지 스프라이트 / IR 효과 / 백그라운드 표현 (2) | 2022.08.20 |
Scss (1) | 2022.08.18 |
CSS 기본 문법 (1) | 2022.08.14 |
벡터 방식, 비트맵 방식 (10) | 2022.08.09 |
댓글