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)的主要内容,如果未能解决你的问题,请参考以下文章

响应式布局

css3的@media

响应式布局之媒体查询

论:响应式布局之css3媒体查询器

实现响应式:flex布局+媒体查询@media

前端CSS3弹性布局媒体查询实现响应式布局和自适应布局