现在响应式没有以前那么火了,因为响应式有一个缺点,它需要将所有的资源进行加载,即使是没有显示的,很浪费资源,影响用户体验,但是日常开发中,我们仍需要使用它进行一些开发。
媒体查询 (@media
)
媒体类型
-
all
所有设备 -
print
打印机设备 -
screen
彩色的电脑屏幕 -
speech
听觉设备(针对有听力障碍的人士,可以把页面的内容以语音的方式呈现的设备)
注意:tty、tv、projection、handheld、braille、embossed、aural 等几种类型在媒体查询 4 中已经废弃
媒体特性
-
width
宽度-
min-width
最小宽度,宽度只能比这个值大
-
-
height
高度-
max-height
最大高度,高度只能比这个值小
-
-
orientation
方向,有下面两个值-
landscape
宽度大于高度(横屏) -
portrait
高度大于宽度(竖屏)
-
-
aspect-ratio
宽高比 -
-webkit-device-pixel-ratio
像素比(webkit 内核私有的属性)
逻辑运算符
-
and
合并多个媒体类型(并且的意思)
/* 所有设备、宽度必需大于 700px、横屏,这三个条件同时满足才为 true */
@media (min-width:700px) and (orientation:landscape){
div{background: green;}
}
-
,
匹配某个媒体查询(或者的意思)
/* 屏幕尺寸要小于 800px, 横屏,这两个只要有一个满足,整个条件就会满足 */
@media (max-width:800px),(orientation:landscape){
div{background: pink;}
}
-
not
对媒体查询结果取反 (不能单独使用,后面必需是复合语句)
/* 屏幕的尺寸大于 800,这个条件才能成立 */
@media not all and (max-width:800px){
div{background: blue;}
}
-
only
仅在媒体查询匹配成功后应用样式(防范老旧浏览器)
/* 彩色的屏幕,宽度大于 1000px,这两个条件同时满足,整体条件才满足 */
@media only screen and (min-width:1000px){
div{background: grey;}
}
响应式引入样式
- 第一种是直接将响应式和普通样式写在一起
- 第二种方法是将不同尺寸的样式分开,然后按需引入
<link rel="stylesheet" href="css/200.css" media="all and (min-width:200px)">
<link rel="stylesheet" href="css/400.css" media="(min-width:400px)">
<link rel="stylesheet" href="css/600.css" media="(min-width:600px)">
<link rel="stylesheet" href="css/800.css" media="(min-width:800px)">
<link rel="stylesheet" href="css/1000.css" media="(min-width:1000px)">