@media
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
* Some parts of this feature may have varying levels of support.
@media CSS at è§åå¯ç¨äºåºäºä¸ä¸ªæå¤ä¸ªåªä½æ¥è¯¢çç»ææ¥åºç¨æ ·å¼è¡¨çä¸é¨åã使ç¨å®ï¼ä½ å¯ä»¥æå®ä¸ä¸ªåªä½æ¥è¯¢åä¸ä¸ª CSS åï¼å½ä¸ä»
å½è¯¥åªä½æ¥è¯¢ä¸æ£å¨ä½¿ç¨å
¶å
容ç设å¤å¹é
æ¶ï¼è¯¥ CSS åæè½åºç¨äºè¯¥ææ¡£ã
夿³¨ï¼å¨ JavaScript ä¸ï¼å¯ä»¥ä½¿ç¨ CSSMediaRule CSS å¯¹è±¡æ¨¡åæ¥å£è®¿é®ä½¿ç¨ @media å建çè§åã
å°è¯ä¸ä¸
abbr {
color: chocolate;
}
@media (hover: hover) {
abbr:hover {
color: limegreen;
transition-duration: 1s;
}
}
@media not all and (hover: hover) {
abbr::after {
content: " (" attr(title) ")";
}
}
<p>
<abbr title="National Aeronautics and Space Administration">NASA</abbr> is a
U.S. government agency that is responsible for science and technology related
to air and space.
</p>
è¯æ³
@media at è§åå¯ç½®äºä½ 代ç ç顶屿åµå¥è³å
¶ä»ä»»ä½ç at æ¡ä»¶è§åç»ä¸ã
/* å¨ä½ ç代ç çé¡¶å± */
@media screen and (min-width: 900px) {
article {
padding: 1rem 3rem;
}
}
/* åµå¥è³å
¶ä»ç at æ¡ä»¶è§åä¸ */
@supports (display: flex) {
@media screen and (min-width: 900px) {
article {
display: flex;
}
}
}
æå ³åªä½æ¥è¯¢è¯æ³ç讨论ï¼è¯·åé 使ç¨åªä½æ¥è¯¢ã
æè¿°
>åªä½ç±»å
åªä½ç±»åï¼media typeï¼æè¿°è®¾å¤çä¸è¬ç±»å«ãé¤éä½¿ç¨ not æ only é»è¾è¿ç®ç¬¦ï¼å¦ååªä½ç±»åæ¯å¯éçï¼å¹¶ä¸ä¼ï¼éå¼å°ï¼åºç¨ all ç±»åã
all-
éç¨äºææè®¾å¤ã
print-
éç¨äºå¨æå°é¢è§æ¨¡å¼ä¸å¨å±å¹ä¸æ¥ççå页ææåææ¡£ãï¼æå ³ç¹å®äºè¿äºæ ¼å¼çæ ¼å¼é®é¢çä¿¡æ¯ï¼è¯·åé å页åªä½ãï¼
screen-
主è¦ç¨äºå±å¹ã
夿³¨ï¼CSS2.1 ååªä½æ¥è¯¢ç¬¬ 3 çå®ä¹äºä¸äºé¢å¤çåªä½ç±»åï¼ttyãtvãprojectionãhandheldãbrailleãembossed 以å auralï¼ï¼ä½æ¯å®ä»¬å¨åªä½æ¥è¯¢ç¬¬ 4 çä¸å·²è¢«å¼ç¨ï¼ä¸åºç»§ç»ä½¿ç¨ã
åªä½ç¹æ§
åªä½ç¹æ§ï¼media featureï¼æè¿°äºç¨æ·ä»£çãè¾åºè®¾å¤æç¯å¢çå ·ä½ç¹å¾ãåªä½ç¹æ§è¡¨è¾¾å¼æ¯å®å ¨å¯éçï¼å ¶ç¨äºæµè¯è¿äºç¹å¾æ¯å¦åå¨ä»¥åå®ä»¬çå¼ãæ¯ä¸ªåªä½ç¹æ§è¡¨è¾¾å¼é½å¿ é¡»ç¨æ¬å·æ¬èµ·æ¥ã
any-hover-
æ¯å¦æä»»ä½å¯ç¨çè¾å ¥æºå¶å è®¸ç¨æ·ï¼å°é¼ æ çï¼æ¬åå¨å ç´ ä¸ï¼äºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
any-pointer-
å¯ç¨çè¾å ¥æºå¶ä¸æ¯å¦æä»»ä½æé设å¤ï¼å¦ææï¼å®ç精度å¦ä½ï¼äºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
aspect-ratio-
è§å£ï¼viewportï¼ç宽髿¯ã
color-
è¾åºè®¾å¤æ¯ä¸ªé¢è²åéçæ¯ç¹å¼ï¼å¦æè®¾å¤ä¸æ¯æè¾åºå½©è²ï¼å该å¼ä¸º 0ã
color-gamut-
ç¨æ·ä»£çåè¾åºè®¾å¤å¤§è´ç¨åº¦ä¸æ¯æçè²åãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
color-index-
è¾åºè®¾å¤çé¢è²æ¥è¯¢è¡¨ï¼color lookup tableï¼ä¸çæ¡ç®æ°éï¼å¦æè®¾å¤ä¸ä½¿ç¨é¢è²æ¥è¯¢è¡¨ï¼å该å¼ä¸º 0ã
device-aspect-ratioå·²å¼ç¨-
è¾åºè®¾å¤ç宽髿¯ãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«å¼ç¨ã
device-heightå·²å¼ç¨-
è¾åºè®¾å¤æ¸²æè¡¨é¢çé«åº¦ãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«å¼ç¨ã
device-widthå·²å¼ç¨-
è¾åºè®¾å¤æ¸²æè¡¨é¢ç宽度ãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«å¼ç¨ã
display-mode-
åºç¨ç¨åºçæ¾ç¤ºæ¨¡å¼ï¼æ¾ç¤ºæ¨¡å¼ç± web åºç¨çæ¸ åï¼manifestï¼ä¸ç
displayæåææå®ãå®ä¹äº Web App Manifest è§èã dynamic-range-
ç¨æ·ä»£çåè¾åºè®¾å¤æ¯æç亮度ã对æ¯åº¦åè²å½©æ·±åº¦çç»åãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
forced-colors-
æ£æµç¨æ·ä»£çæ¯å¦éå¶è°è²æ¿ãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
grid-
è¾åºè®¾å¤ä½¿ç¨ç½æ ¼å±å¹è¿æ¯ç¹éµå±å¹ï¼
height-
è§å£çé«åº¦ã
hover-
主è¾å ¥æºå¶æ¯å¦å è®¸ç¨æ·å¨å ç´ ä¸æ¬åãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
inverted-colors-
ç¨æ·ä»£çæè åºå±æä½ç³»ç»æ¯å¦å转äºé¢è²ãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
monochrome-
è¾åºè®¾å¤åè²å¸§ç¼å²åºä¸æ¯ä¸ªåç´ ç使·±åº¦ãå¦æè®¾å¤å¹¶éåè²å±å¹ï¼å该å¼ä¸º 0ã
orientation-
è§å£çæè½¬æ¹åã
overflow-block-
è¾åºè®¾å¤å¦ä½å¤ç沿å轴溢åºè§å£çå 容ãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
overflow-inline-
沿è¡è½´æº¢åºè§å£çå 容æ¯å¦å¯ä»¥æ»å¨ãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
pointer-
主è¾å ¥æºå¶æ¯ä¸ä¸ªæé设å¤åï¼å¦ææ¯ï¼å®ç精度å¦ä½ï¼äºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
prefers-color-scheme-
æ£æµç¨æ·å¾åäºéæ©äº®è²è¿æ¯æè²çé è²æ¹æ¡ãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
prefers-contrast-
æ£æµç¨æ·æ¯å¦æåç³»ç»è¦æ±æé«æéä½ç¸è¿é¢è²ä¹é´ç对æ¯åº¦ãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
prefers-reduced-motion-
ç¨æ·æ¯å¦å¸æé¡µé¢ä¸åºç°æ´å°ç卿ææãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
resolution-
è¾åºè®¾å¤çåç´ å¯åº¦ï¼å辨çï¼ã
scripting-
æ£æµèæ¬ï¼ä¾å¦ JavaScriptï¼æ¯å¦å¯ç¨ãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
updateå®éªæ§-
è¾åºè®¾å¤ä¿®æ¹æ¸²æå 容çé¢çãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
video-dynamic-range-
ç¨æ·ä»£ççè§é¢å¹³é¢ï¼video planeï¼åè¾åºè®¾å¤æ¯æç亮度ã对æ¯åº¦åè²å½©æ·±åº¦çç»åãäºåªä½æ¥è¯¢ç¬¬ 5 çä¸è¢«æ·»å ã
width-
è§å£ï¼å æ¬çºµåæ»å¨æ¡ï¼ç宽度ã
é»è¾è¿ç®ç¬¦
é»è¾è¿ç®ç¬¦ï¼logical operatorï¼notãandãonly å or å¯ç¨äºèåæé 夿çåªä½æ¥è¯¢ï¼ä½ è¿å¯ä»¥éè¿ç¨éå·åéå¤ä¸ªåªä½æ¥è¯¢ï¼å°å®ä»¬ç»å为ä¸ä¸ªè§åã
and-
ç¨äºå°å¤ä¸ªåªä½æ¥è¯¢è§åç»åæåæ¡åªä½æ¥è¯¢ï¼å½æ¯ä¸ªæ¥è¯¢è§åé½ä¸ºçæ¶å该æ¡åªä½æ¥è¯¢ä¸º
trueï¼å®è¿ç¨äºå°åªä½ç¹æ§ä¸åªä½ç±»åç»åå¨ä¸èµ·ã not-
ç¨äºå¦å®åªä½æ¥è¯¢ï¼å¦æä¸æ»¡è¶³è¿ä¸ªæ¡ä»¶åè¿å
trueï¼å¦åè¿åfalseã妿åºç°å¨ä»¥éå·åéçæ¥è¯¢å表ä¸ï¼å®å°ä» å¦å®åºç¨äºè¯¥æ¥è¯¢çç¹å®æ¥è¯¢ãå¦æä½¿ç¨notè¿ç®ç¬¦ï¼åè¿å¿ é¡»æå®åªä½ç±»åã夿³¨ï¼å¨ç¬¬ 3 çä¸ï¼
notå ³é®åä¸è½ç¨äºå¦å®å个åªä½ç¹æ§è¡¨è¾¾å¼ï¼èåªè½ç¨äºå¦å®æ´ä¸ªåªä½æ¥è¯¢ã only-
ä» å¨æ´ä¸ªæ¥è¯¢å¹é æ¶æåºç¨æ ·å¼ãè¿å¯¹äºé²æ¢è¾èçæµè§å¨åºç¨æéæ ·å¼å¾æç¨ãå½ä¸ä½¿ç¨
onlyæ¶ï¼è¾èçæµè§å¨ä¼å°screen and (max-width: 500px)ç®åå°è§£é为screenï¼å¿½ç¥æ¥è¯¢çå ¶ä½é¨åï¼å¹¶å°å ¶æ ·å¼åºç¨äºææå±å¹ãå¦æä½¿ç¨onlyè¿ç®ç¬¦ï¼åè¿å¿ é¡»æå®åªä½ç±»åã ,ï¼éå·ï¼-
éå·ç¨äºå°å¤ä¸ªåªä½æ¥è¯¢å并为ä¸ä¸ªè§åãéå·åéå表ä¸çæ¯ä¸ªæ¥è¯¢é½ä¸å ¶ä»æ¥è¯¢åå¼å¤çãå æ¤ï¼å¦æå表ä¸ç任使¥è¯¢ä¸º
trueï¼åæ´ä¸ªåªä½æ¥è¯¢è¯å¥è¿åtrueãæ¢å¥è¯è¯´ï¼å表çè¡ä¸ºç±»ä¼¼äºé»è¾æï¼orï¼è¿ç®ç¬¦ã or-
çä»·äº
,è¿ç®ç¬¦ãäºåªä½æ¥è¯¢ç¬¬ 4 çä¸è¢«æ·»å ã
ç¨æ·ä»£ç客æ·ç«¯æç¤º
ä¸äºåªä½æ¥è¯¢æç¸åºçç¨æ·ä»£ç客æ·ç«¯æç¤ºãè¿æ¯è¯·æ±ç¹å®åªä½è¦æ±çé¢ä¼åå
容ç HTTP æ 头ï¼å
¶å
æ¬ Sec-CH-Prefers-Color-Scheme å Sec-CH-Prefers-Reduced-Motionã
æ éç¢èè
ä¸ºäºæå¥½å°éåºè°æ´äºç½ç«ææ¬å¤§å°çç¨æ·ï¼å½ä½ éè¦å¨åªä½æ¥è¯¢ä¸ä½¿ç¨ <length> æ¶ï¼è¯·ä½¿ç¨ em åä½ã
em å px 齿¯ææåä½ï¼ä½å¦æç¨æ·æ´æ¹æµè§å¨ææ¬å¤§å°ï¼em çææä¼æ´å¥½ã
èè使ç¨åªä½æ¥è¯¢ç¬¬ 4 çæ¥æ¹åç¨æ·ä½éªãä¾å¦ï¼ä½¿ç¨ prefers-reduced-motion ä»¥æ£æµç¨æ·æ¯å¦å·²è¯·æ±ç³»ç»æå°åå
¶ä½¿ç¨çå¨ç»æå¨ä½ã
å®å ¨
ç±äºåªä½æ¥è¯¢å¯ä»¥æ´å¯ç¨æ·æ£å¨ä½¿ç¨ç设å¤çåè½ï¼ä»¥åæ©å±çç¹æ§å设计ï¼ï¼å æ¤æå¯è½æ»¥ç¨å®ä»¬æ¥æé âæçº¹â以è¯å«è®¾å¤ï¼æè è³å°å°å ¶ç»åç±»å«å°ç¨æ·å¯è½ä¸å¸æçå°çç¨åº¦ã
ç±äºåå¨è¿ç§æ½å¨çå®å ¨é®é¢ï¼æµè§å¨å¯è½ä¼éæ©ä»¥æç§æ¹å¼ä¼ªé è¿åçå¼ï¼ä»¥é²æ¢å®ä»¬è¢«ç¨äºç²¾ç¡®å°æ è¯è®¡ç®æºãæµè§å¨å¯è½è¿ä¼å¨è¿æ¹é¢æä¾é¢å¤æªæ½ãä¾å¦ï¼å¦æå¯ç¨äº Firefox çâæ¦æªæçº¹è·è¸ªâ设置ï¼å许å¤åªä½æ¥è¯¢ä¼æ¥åé»è®¤å¼ï¼è䏿¯ä»£è¡¨å®é 设å¤ç¶æçå¼ã
å½¢å¼è¯æ³
@media =
@media <media-query-list> { <rule-list> }
示ä¾
>æµè¯ print å screen åªä½ç±»å
@media print {
body {
font-size: 10pt;
}
}
@media screen {
body {
font-size: 13px;
}
}
@media screen, print {
body {
line-height: 1.2;
}
}
@media only screen and (min-width: 320px) and (max-width: 480px) and (resolution: 150dpi) {
body {
line-height: 1.4;
}
}
åªä½æ¥è¯¢ç¬¬ 4 çå¼å ¥äºä¸ç§æ°çèå´è¯æ³ï¼å¨æµè¯æ¥åèå´çä»»ä½ç¹æ§æ¶å 许æ´ç®æ´çåªä½æ¥è¯¢ï¼å¦ä¸é¢çç¤ºä¾æç¤ºï¼
@media (height > 600px) {
body {
line-height: 1.4;
}
}
@media (400px <= width <= 700px) {
body {
line-height: 1.4;
}
}
æ´å¤ç¤ºä¾ï¼è¯·æ¥ç使ç¨åªä½æ¥è¯¢ã
è§è
| Specification |
|---|
| Media Queries Level 4 > # media-descriptor-table > |
| CSS Conditional Rules Module Level 3 > # at-media > |
æµè§å¨å ¼å®¹æ§
åè§
- 使ç¨åªä½æ¥è¯¢
- å¨ JavaScript ä¸ï¼å¯ä»¥éè¿ CSS å¯¹è±¡æ¨¡åæ¥å£
CSSMediaRule访é®@mediaã - æ©å±ç Mozilla åªä½ç¹æ§
- æ©å±ç WebKit åªä½ç¹æ§