CSS3响应式布局(媒体查询@media)
Posted 橘猫吃不胖~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS3响应式布局(媒体查询@media)相关的知识,希望对你有一定的参考价值。
CSS3响应式布局(媒体查询@media)
1 响应式布局
响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。传统的开发方式是PC端开发一套,移动端再开发一套,而使用响应式布局只要开发一套就够。
优点:对于不同的视口都可以显示饱满的网页结构,没有横向滚动条。
缺点:制作复杂,需要较重的CSS,对于移动端而言,需要加载很多pc端的样式和图片等资源,影响加载速度,耗费流量。
响应式设计与自适应设计的区别:
响应式开发一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;
自适应需要开发多套界面,通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机,从而请求服务层,返回不同的页面。
2 媒体查询
响应式布局可以在不同的视口下,呈现不同的效果,实现的原理就是通过媒体查询@media
完成。
媒体查询的使用,有以下几种:
- 可以在引入样式时,限定视口大小
- 直接在样式中,书写不同视口下的样式
在CSS中引入基本语法:
/*
mediatype:媒体类型
and|not|only:逻辑运算符
media feature:媒体特性
*/
@media mediatype and|not|only (media feature)
...
在style
标签上引入基本语法:
<style media="mediatype and|not|only (media feature)">
...
</style>
使用@import
时基本语法:
@import url(...) mediatype and|not|only (media feature);
使用外链式引入CSS时基本语法:
<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="...">
2.1 媒体类型
媒体类型描述了设备的类别,是可选的,默认是all类型。具体的媒体类型如下:
类型 | 描述 |
---|---|
all | 在所有设备上都加载 |
print | 在打印预览模式下,在屏幕上查看的分页材料和文档 |
screen | 在电脑屏幕,平板电脑,智能手机等其中加载 |
speech | 在屏幕阅读器等发声设备中加载 |
2.2 逻辑运算符
逻辑运算符可以被用于组成一个复杂的媒体查询,还可以通过用逗号分隔多个媒体查询,将它们合并为一个规则。具体的逻辑运算符如下:
逻辑运算符 | 说明 |
---|---|
and | 用于将多个媒体特征组合到一个媒体查询中,还可以用于将媒体功能与媒体类型连接起来,相当于“且”的意思。 |
not | 用于媒体查询取反值,表示排除某个媒体类型,相当于“非”的意思 |
only | 指定某个特定的媒体类型 |
2.3 媒体特性
媒体特性描述了user agent
、输出设备,或是浏览环境的具体特征。 媒体特性表达式是可选的,它负责测试这些特性或特征是否存在、值为多少。 每条媒体特性表达式都必须用括号括起来。常用的特性如下:
媒体特性 | 说明 |
---|---|
height | 定义输出设备中的页面可见区域高度 |
min-height | 定义输出设备中的页面最小可见区域高度 |
max-height | 定义输出设备中的页面最大可见区域高度 |
device-height | 定义输出设备的屏幕可见高度 |
min-device-height | 定义输出设备的屏幕的最小可见高度 |
max-device-height | 定义输出设备的屏幕可见的最大高度 |
width | 定义输出设备中的页面可见区域宽度 |
min-width | 定义输出设备中的页面最小可见区域宽度 |
max-width | 定义输出设备中的页面最大可见区域宽度 |
device-width | 定义输出设备的屏幕可见宽度 |
min-device-width | 定义输出设备的屏幕最小可见宽度 |
max-device-width | 定义输出设备的屏幕最大可见宽度 |
color | 定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0 |
max-color | 定义输出设备每一组彩色原件的最大个数 |
min-color | 定义输出设备每一组彩色原件的最小个数 |
color-index | 定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0 |
min-color-index | 定义在输出设备的彩色查询表中的最小条目数 |
max-color-index | 定义在输出设备的彩色查询表中的最大条目数 |
aspect-ratio | 定义输出设备中的页面可见区域宽度与高度的比率 |
min-aspect-ratio | 定义输出设备中的页面可见区域宽度与高度的最小比率 |
max-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最大比率 |
device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的比率 |
min-device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最小比率 |
max-device-aspect-ratio | 定义输出设备的屏幕可见宽度与高度的最大比率 |
grid | 用来查询输出设备是否使用栅格或点阵 |
monochrome | 定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0 |
max-monochrome | 定义在一个单色框架缓冲区中每像素包含的最大单色原件个数 |
min-monochrome | 定义在一个单色框架缓冲区中每像素包含的最小单色原件个数 |
orientation | 定义输出设备中的页面可见区域高度是否大于或等于宽度。 |
resolution | 定义设备的分辨率。如:96dpi, 300dpi, 118dpcm |
max-resolution | 定义设备的最大分辨率 |
min-resolution | 定义设备的最小分辨率 |
scan | 定义电视类设备的扫描工序 |
3 案例:根据页面宽度改变背景色
页面宽度 <= 400时,背景是红色;
400 < 页面宽度 <= 600 时,背景是橙色;
页面宽度 > 600时,背景是黄色;
具体代码如下:
<style>
@media screen and (max-width: 400px)
body
background-color: red;
@media screen and (min-width: 401px) and (max-width: 600px)
body
background-color: orange;
@media screen and (min-width: 601px)
body
background-color: yellow;
</style>
以上是关于CSS3响应式布局(媒体查询@media)的主要内容,如果未能解决你的问题,请参考以下文章