웹 프론트엔드 CSS 튜토리얼 CSS의 미디어 미디어 쿼리에 대한 자세한 설명

CSS의 미디어 미디어 쿼리에 대한 자세한 설명

Oct 28, 2020 pm 05:56 PM
css media 언론문의

CSS의 미디어 미디어 쿼리에 대한 자세한 설명

반응형 디자인에 있어서 미디어 쿼리 미디어는 확실히 떼어놓을 수 없습니다. 일반적으로 미디어 쿼리는 CSS3에 새로 추가된 것으로 간주됩니다. 실제로 CSS2는 이미 존재하며 CSS3에는 새로운 미디어 속성과 사용 시나리오가 추가됩니다(IE8 브라우저에서는 지원되지 않음). 이 글에서는 미디어 쿼리가 무엇인지 자세히 설명합니다.

(추천 튜토리얼: CSS 튜토리얼)

미디어 유형

CSS2에서 미디어 쿼리는

screen 컴퓨터 화면(기본값)
tty 고정 폭 문자 격자를 사용하는 텔레타프라이터 및 유사 미디어

tv TV 유형 장치(저해상도, 제한된 화면 스크롤 기능)
프로젝션
휴대용
휴대용(작은 화면, 제한된 대역폭)
인쇄 인쇄 미리보기 모드/페이지 인쇄
시각 장애인을 위한 점자 피드백 장치
청각
청각 음성 합성기
all 모든 장치에 적합

매우 널리 사용되는 미디어 유형 모든 브라우저와 호환되는 것은 'screen' 및 'all'입니다

<style media="screen">
.box{height: 100px;width: 100px; background-color: lightblue;}    
</style>
<div class="box"></div>
로그인 후 복사

Media 속성

Media 속성은 CSS3의 새로운 콘텐츠이며 대부분의 미디어 속성에는 표현에 사용되는 "min-" 및 "max-" 접두사가 있습니다. "작거나 같음" 및 "크거나 같음". 이렇게 하면 HTML 및 XML과 충돌하는 "<" 및 ">" 문자를 사용할 수 없습니다.

[참고] 미디어 속성은 대괄호()로 묶어야 합니다. 그렇지 않으면 유효하지 않습니다.

모든 미디어 속성은 아래 표에 나열되어 있습니다.

최소 너비 | 최대 너비

높이 | 최소 높이

장치 너비 | -width

장치 높이 | 최대 장치 높이

종횡비 | 최대 종횡비

장치 종횡비 - 비율 | 최대 장치 종횡비

색상 | 최대 색상색상

색상 지수 | 최대 색상 지수

단색 최대값 | 최소 해상도 | 최대 해상도

scan | 그리드

【1】Color(색상)

출력 장치의 각 픽셀 단위의 비트 값을 지정합니다. 기기가 출력 색상을 지원하지 않는 경우 값은 0

색상을 표시할 수 있는 모든 기기에 스타일시트 적용

<style>
@media (color){
    .box{height: 100px;width: 100px;background-color: lightblue;}    
}    
</style>
<div class="box"></div>
로그인 후 복사

【2】색상 인덱스(color-index)

색상 인덱스는 색상 쿼리를 지정합니다. 출력 장치에서 테이블의 항목 수, 색상 조회 테이블을 사용하지 않으면 값은 0

256개 이상의 인덱스 색상을 사용하는 모든 장치에 스타일 시트를 적용합니다. (다음 코드는 표시되지 않습니다. 반환 값이 0임을 나타냄)

<style>
@media (min-color-index: 256){
    .box{height: 100px; width: 100px;background-color: lightgreen;}    
}    
</style>    
<div class="box"></div>
로그인 후 복사

【3 】Aspect-ratio(aspect-ratio)

aspect ratio는 출력 장치의 대상 디스플레이 영역의 화면 비율을 나타냅니다. 값은 "/"로 구분된 두 개의 양의 정수로 구성됩니다. 가로 픽셀 수(첫 번째 값)와 세로 픽셀 수(두 번째 값)의 비율을 나타냅니다.

가시 영역이 정사각형 또는 와이드스크린인 기기에 스타일 시트 적용

<style>
@media (min-aspect-ratio: 1/1) {
    .box{height: 100px;width: 100px; background-color: lightgreen; }        
}
</style>
<div class="box"></div>
로그인 후 복사

【4】장치 종횡비(device-aspect-ratio)

장치 종횡비는 출력 장치의 종횡비를 나타냅니다. 값은 "/"로 구분된 두 개의 양의 정수로 구성됩니다. 가로 픽셀 수(첫 번째 값)와 세로 픽셀 수(두 번째 값)의 비율을 나타냅니다.

화면 비율이 16:9인 특수 와이드스크린 장치에 스타일 시트를 적용합니다.

<style>
@media (device-aspect-ratio:16/9) {
    .box{ height: 100px;width: 100px; background-color: pink;}        
}
</style>
<div class="box"></div>
로그인 후 복사

【5】Device-height

Device-height는 출력 장치의 높이를 나타냅니다.

최소 높이로 표시하려면 1000px 화면에 표시되는 문서에 스타일 시트 적용

<style>
@media (min-device-height: 1000px) {
    .box{ height: 100px;width: 100px; background-color: pink;}        
}
</style>
<div class="box"></div>
로그인 후 복사

【6】Device-width

Device-width는 출력 장치의 너비를 나타냅니다.

화면에 표시되는 문서에 스타일 시트를 적용합니다. 최소 너비 1000px

<style>
@media (min-device-width: 1000px) {
    .box{ height: 100px; width: 100px;background-color: lightblue; }        
}
</style>
<div class="box"></div>
로그인 후 복사

【7】Grid

Grid는 출력 장치가 그리드 장치인지 비트맵 장치인지를 결정합니다. 이 값은 장치가 그리드 기반(예: 텔레타이프 터미널 또는 하나의 문자만 표시할 수 있는 전화기)인 경우 1이고, 그렇지 않은 경우 0입니다.

그리드가 아닌 장치에 스타일 시트 적용

<style>
@media (grid:0) {
    .box{height: 100px;width: 100px; background-color: lightgreen;}        
}
</style>
<div class="box"></div>
로그인 후 복사

[8] 높이(높이)

높이는 출력 장치 렌더링 영역의 높이를 나타냅니다(예: 시각적 영역의 높이 또는 프린터 트레이의 높이). )

시각적 영역 높이가 800px 이상인 장치에 스타일 시트 적용

<style>
@media (min-height:800px) {
    .box{ height: 100px; width: 100px;background-color: lightgreen; }        
}
</style>
<div class="box"></div>
로그인 후 복사

[9] 너비(width)

Width는 출력 장치의 렌더링 영역 너비를 나타냅니다

적용 너비가 800px보다 큰 시각적 영역을 가진 장치에 스타일 시트를 적용

<style>
@media (min-width:800px) {
    .box{ height: 100px;width: 100px; background-color: lightgreen;}        
}
</style>
<div class="box"></div>
로그인 후 복사

【10】흑백(단색)

黑白指定了一个黑白(灰度)设备每个像素的比特数。如果不是黑白设备,值为0

向非黑白设备应用样式表

<style>
@media (monochrome:0) {
    .box{height: 100px; width: 100px; background-color: lightgreen;}        
}
</style>
<div class="box"></div>
로그인 후 복사

【11】方向(orientation)

方向指定了设备处于横屏(宽度大于宽度)模式还是竖屏(高度大于宽度)模式

值:landscape(横屏) | portrait(竖屏)

向竖屏设备应用样式表

<style>
@media (orientation: portrait) {
    .box{height: 100px;width: 100px;background-color: lightgreen; }        
}
</style>
<div class="box"></div>
로그인 후 복사

【12】分辨率(resolution)

分辨率指定输出设备的分辨率(像素密度)。分辨率可以用每英寸(dpi)或每厘米(dpcm)的点数来表示

[注意]关于屏幕三要素(屏幕尺寸、分辨率、像素密度)的相关内容移步至此

向每英寸至少90点的设备应用样式

<style>
@media (min-resolution: 90dpi) {
    .box{height: 100px;width: 100px; background-color: lightgreen; }        
}
</style>
<div class="box"></div>
로그인 후 복사

【13】扫描(scan)

扫描描述了电视输出设备的扫描过程

值: progressive | interlace

语法

媒体查询包含了一个CSS2已有的媒介类型(或称为媒体类型)和CSS3新增的包含一个或多个表达式的媒体属性,这些媒体属性会被解析成真或假。

当媒体查询为真时,相关的样式表或样式规则就会按照正常的级联规则被应用。即使媒体查询返回假, 标签上带有媒体查询的样式表仍将被下载(只不过不会被应用)。

<link rel="stylesheet" href="style.css" media="print">
<div class="box"></div>
로그인 후 복사

media并不是'print',所以媒体查询为假。但是,style.css文件依然被下载

CSS의 미디어 미디어 쿼리에 대한 자세한 설명

逻辑操作符:

操作符not、and、only和逗号(,)可以用来构建复杂的媒体查询

and

and操作符用来把多个媒体属性组合起来,合并到同一条媒体查询中。只有当每个属性都为真时,这条查询的结果才为真

[注意]在不使用not或only操作符的情况下,媒体类型是可选的,默认为all

满足横屏以及最小宽度为700px的条件应用样式表

@media all and (min-width: 700px) and (orientation: landscape) { ... }
로그인 후 복사

由于不使用not或only操作符的情况下,媒体类型是可选的,默认为 all,所以可以简写为

@media (min-width: 700px) and (orientation: landscape) { ... }
로그인 후 복사

or

将多个媒体查询以逗号分隔放在一起;只要其中任何一个为真,整个媒体语句就返回真,相当于or操作符

满足最小宽度为700像素或是横屏的手持设备应用样式表

@media (min-width: 700px), handheld and (orientation: landscape) { ... }
로그인 후 복사

not

not操作符用来对一条媒体查询的结果进行取反

[注意]not关键字仅能应用于整个查询,而不能单独应用于一个独立的查询

@media not all and (monochrome) { ... }
//等价于
@media not (all and (monochrome)) { ... }
로그인 후 복사

only

only操作符表示仅在媒体查询匹配成功时应用指定样式。可以通过它让选中的样式在老式浏览器中不被应用

media="only screen and (max-width:1000px)"{...}
로그인 후 복사

上面这行代码,在老式浏览器中被解析为media="only",因为没有一个叫only的设备,所以实际上老式浏览器不会应用样式

media="screen and (max-width:1000px)"{...}
로그인 후 복사

上面这行代码,在老式浏览器中被解析为media="screen",它把后面的逻辑表达式忽略了。所以老式浏览器会应用样式

所以,在使用媒体查询时,only最好不要忽略

方法

window.matchMedia()方法用来检查CSS的mediaQuery语句

[注意]IE9-浏览器不支持,可以使用第三方函数库matchMedia.js

属性

window.matchMedia()方法接受一个mediaQuery语句的字符串作为参数,返回一个MediaQueryList对象。该对象有media和matches两个属性。

media:返回所查询的mediaQuery语句字符串

matches:返回一个布尔值,表示当前环境是否匹配查询语句

var result = window.matchMedia(&#39;(min-width: 600px)&#39;);
console.log(result.media); //&#39;(min-width: 600px)&#39;
console.log(result.matches); // true
로그인 후 복사

可以根据matchMedia()方法的matches属性的不同结果,进行对应的设置

var result = window.matchMedia(&#39;(min-width: 600px)&#39;);
if (result.matches) {
  //
}else{
 //
}
로그인 후 복사

[注意]如果window.matchMedia无法解析mediaQuery参数,matches属性返回的总是false,而不是报错

var result = window.matchMedia(&#39;123&#39;);
console.log(result.matches);//false
로그인 후 복사

事件

window.matchMedia方法返回的MediaQueryList对象有两个方法,用来监听事件:addListener方法和removeListener方法

// 指定回调函数
mql.addListener(mqCallback);
// 撤销回调函数
mql.removeListener(mqCallback);
로그인 후 복사

注意,只有mediaQuery查询结果发生变化时,才调用指定的回调函数

所以,如果想要mediaQuery查询未变化时,就显示相应效果,需要提前调用一次函数

下面这个例子是当页面宽度小于1000px时,页面背景颜色为品红色;否则为淡蓝色

var mql = window.matchMedia("(min-width: 1000px)");
mqCallback(mql);
mql.addListener(mqCallback);
function mqCallback(mql) {
  if (mql.matches) {
    document.body.background = &#39;pink&#39;;
  }else{
      document.body.background = &#39;lightblue&#39;;
  }
}
로그인 후 복사

打印样式

媒体查询的一个常用功能是打印样式的设置,主要是背景清除、字体颜色变黑等

@media print{
    *,*:before,*:after{
        background:transparent!important;
        color:#000 !important;
        box-shadow: none !important;
        text-shadow: none !important;
    }
    a,a:visited{
        text-decoration: underline;
    }
    a[href]:after{
        content:"(" attr(href) ")";
    }
    abbr[title]:after{
        content:"(" attr(title) ")";
    }
    a[href^="#"]:after,a[href^="javascript:;"]:after{
        content:"";
    }
    pre,blockquote{
        border: 1px solid #999;
        /*只有opera浏览器起作用,避免在元素内部插入分页符*/
        page-break-inside:avoid;
    }
    thead{
        display:table-header-group;
    }
    tr,img{
        page-break-inside:avoid;
    }
    img{
        max-width:100%!important;
    }
    p,h2,h3{
        /*元素内部发生分页时,最少保留3行*/
        orphans:3;
        /*元素内部发生分页时,元素顶部最少保留3行*/
        windows:3;
    }
    h2,h3{
        /*避免在元素后面插入一个分页符*/
        page-break-after:avoid;
    }
}
로그인 후 복사

相对单位

如果媒体查询@media使用的是相对单位,如rem,这里有一个坑需要着重强调一下。

一般而言,rem是相对于HTML的字体大小的。但是,由于媒体查询的级别非常高,它并不是HTML的子元素,不是相对于HTML,而是相对于浏览器的,而浏览器的默认字体大小是16px。

如果HTML设置字体大小为12px,设置如下媒体查询:

media="only screen and (max-width:1rem)"
로그인 후 복사

实际上,max-width等于16px,而不是12px

而正是由于媒体查询是相对于浏览器的, 所以使用rem就没有必要,完全可以使用em来替代

media="only screen and (max-width:1em)"
로그인 후 복사

更多编程相关知识,请访问:编程入门!!

위 내용은 CSS의 미디어 미디어 쿼리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

HTML, CSS 및 JavaScript 이해 : 초보자 안내서 HTML, CSS 및 JavaScript 이해 : 초보자 안내서 Apr 12, 2025 am 12:02 AM

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

부트 스트랩에 분할 라인을 작성하는 방법 부트 스트랩에 분할 라인을 작성하는 방법 Apr 07, 2025 pm 03:12 PM

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

부트 스트랩을위한 프레임 워크를 설정하는 방법 부트 스트랩을위한 프레임 워크를 설정하는 방법 Apr 07, 2025 pm 03:27 PM

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

부트 스트랩에 사진을 삽입하는 방법 부트 스트랩에 사진을 삽입하는 방법 Apr 07, 2025 pm 03:30 PM

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩 버튼을 사용하는 방법 부트 스트랩 버튼을 사용하는 방법 Apr 07, 2025 pm 03:09 PM

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.

부트 스트랩 크기를 조정하는 방법 부트 스트랩 크기를 조정하는 방법 Apr 07, 2025 pm 03:18 PM

부트 스트랩에서 요소의 크기를 조정하려면 다음을 포함하여 차원 클래스를 사용할 수 있습니다.

See all articles