现在响应式没有以前那么火了,因为响应式有一个缺点,它需要将所有的资源进行加载,即使是没有显示的,很浪费资源,影响用户体验,但是日常开发中,我们仍需要使用它进行一些开发。
媒体查询(@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)">