好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

media 媒体查询

@media 媒体 查询

这个 属性 通常是用在不同屏幕下可以设置不同的样式,它多用在响应式 页面 中。

1. 官方定义

@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的 页面 , @media 是非常有用的。

2. 解释

@media 通常被人们称为媒体 查询 ,其实就是 响应式 ,它通过设定后面的参数来实现在不同的浏览器可视尺寸下的展示 效果 。

它不仅仅可以用来设置 CSS 样式,也可以设置 HTML 页面 中 link 的引用。

3. 语法

在开始使用 @media 标签 前,首先需要在 .html 文件 中设置:

 < Meta  name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user- scalable =no>
 

这段 代码 主要是用来兼容移动设备的展示 效果 。

我们简单的对这几个参数进行一下解释:

参数名 含义 width = device-width 宽度等于当前设备的宽度 initial-scale 初始的缩放比例( 默 认设置为1.0) minimum-scale 允许 用户 缩放到的最小比例( 默 认设置为1.0) maximum-scale 允许 用户 缩放到的最大比例( 默 认设置为1.0) user- scalable 用户 是否可以手动缩放( 默 认设置为no)


说明:我们设置时候通常规则如下:

    <  Meta    content   =  " width=device-width, initial-scale=1.0, maximum-scale=1.0, user- scalable =0, viewport-fit=cover,user- scalable =no "    name   =  " viewport "    />  
 

意思是缩放比例为 1,最大缩放比例为 1 不可以手动缩放。里面的 viewport-fit 是指浏览器视图填充方式是否全屏。

@media 标签

下面我们就来看一下@media 标签 的使用 方法 ,先看一下语法:

   @media  mediatype and|not|only  ( media feature )    { 
    CSS Code
 } 
 

说明: @media 不同于其它的 CSS3 属性 ,它是 一个 标签 ,后面跟了 一个 名称 ,和 一个 大括号,这和我们 JavaScript 函数 很像,大家也可以这么理解。

mediatype 用来描述当前浏览器所在设备的类型,比如是计算机 显示 器、手机、电视等等。

mediatype 有 一个 表:

媒体类型 兼容性 说明 all 所有浏览器 用于所有媒体设备类型 aural Opera 用于语音和音乐合成器 braille Opera 用于触觉反馈设备 handheld Chrome,Safari,Opera 用于小型或手持设备 print 所有浏览器 用于打印机 projection Opera 用于投影图像,如 幻灯片 screen 所有浏览器 用于计算机 显示 器 tty Opera 用于使用固定间距字符格的设备。如电传打字机和终端 tv Opera 用于电视类设备 embos sed Opera 用于凸点字符(盲文)印刷设备

说明:我们常用的 媒体类型 通常设置为 screen。 代码 如下

   @media   screen and  (  max-width  :  500px )    { 

 } 
 

上面就是所有浏览器中适用我们 and 之后的规则。
关键字
关键字就是用来描述响应条件的描述,具体作用如下:

and 就是和某种定制的屏幕宽度下; not 关键字是用来排除某种指定的 媒体类型 ; only 用来定某种特定的 媒体类型 。

media feature

括号内的它就是用来指定分辨率的。写法如下:

 @media only screen and (max-width: 500px) {

}
 

它的意思就是当浏览器的可视区域小于 500px 时候使用 {} 内的规则,具体规则如下:

值 描述 aspect-ratio 定义 输出 设备中的 页面 可见区域宽度与高度的比率。 color 定义 输出 设备每一组 彩色 原件的个数。如果不是 彩色 设备,则值等于0。 color-index 定义在 输出 设备的 彩色 查询表 中的条目数。如果没有使用 彩色 查询表 ,则值等于0。 device-aspect-ratio 定义 输出 设备的屏幕可见宽度与高度的比率。 device-height 定义 输出 设备的屏幕可见高度。 device-width 定义 输出 设备的屏幕可见宽度。 grid 用来 查询 输出 设备是否使用栅格或点阵。 height 定义 输出 设备中的 页面 可见区域高度。 max-aspect-ratio 定义 输出 设备的屏幕可见宽度与高度的最大比率。 max-color 定义 输出 设备每一组 彩色 原件的最大个数。 max-color-index 定义在 输出 设备的 彩色 查询表 中的最大条目数。 max-device-aspect-ratio 定义 输出 设备的屏幕可见宽度与高度的最大比率。 max-device-height 定义 输出 设备的屏幕可见的最大高度。 max-device-width 定义 输出 设备的屏幕最大可见宽度。 max-height 定义 输出 设备中的 页面 最大可见区域高度。 max-monochrome 定义在 一个 单色框架缓冲区中每像素包含的最大单色原件个数。 max-resolution 定义设备的最大分辨率。 max-width 定义 输出 设备中的 页面 最大可见区域宽度。 min-aspect-ratio 定义 输出 设备中的 页面 可见区域宽度与高度的最小比率。 min-color 定义 输出 设备每一组 彩色 原件的最小个数。 min-color-index 定义在 输出 设备的 彩色 查询表 中的最小条目数。 min-device-aspect-ratio 定义 输出 设备的屏幕可见宽度与高度的最小比率。 min-device-width 定义 输出 设备的屏幕最小可见宽度。 min-device-height 定义 输出 设备的屏幕的最小可见高度。 min-height 定义 输出 设备中的 页面 最小可见区域高度。 min-monochrome 定义在 一个 单色框架缓冲区中每像素包含的最小单色原件个数 min-resolution 定义设备的最小分辨率。 min-width 定义 输出 设备中的 页面 最小可见区域宽度。 monochrome 定义在 一个 单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0 orientation 定义 输出 设备中的 页面 可见区域高度是否大于或等于宽度。 resolution 定义设备的分辨率。如:96dpi, 300dpi, 118dpcm scan 定义电视类设备的扫描工序。 width 定义 输出 设备中的 页面 可见区域宽度。

经验介绍:我们在设置媒体响应的条件时候,通常使用的是 max-width 、 min-width 、 max-height 、 min-height ,这里面有 一个 比较绕人的地方:
min 代表最小也就是说满足我们设置条件的最小值是多少,比它大的都会满足。
max 则代表的是最大值,比它小的都会满足。

4. 兼容性

IE Edge Firefox Chrome Safari Opera ios android 9+ 12+ 3.5 21 4.0 9 7+ 4.4

5. 实例

当浏览器宽度小于 400px 时候背景色设红色,大于 400px 时候背景色设白色。

 
  @media  screen and  (  max-width  : 400px )   { 
     html,body  { 
         background  : red ; 
     } 
 } 

 

效果 图:

  <!DOCTYPE html> 
   < html   lang   =  " en "   >  
   < head  >  
       <  Meta    charset   =  " UTF-8 "   >  
       <  Meta    name   =  " viewport "    content   =  " width=device-width, initial-scale=1.0 "   >  
       < title  >  Document   </ title  >  
   </ head  >  
   < style  >   

  @media  screen and  (  max-width  : 400px )   { 
     html,body  { 
         background  : red ; 
     } 
 } 

    </ style  >  
   < body  >  
    
   </ body  >  
   </ html  >  
 

使用 only 当浏览器宽度小于 600px 时候背景色设红色,大于 600px 时候背景色设白色。

 
  @media  only screen and  (  max-width  : 600px )   { 
     html,body  { 
         background  : red ; 
     } 
 } 

 

效果 图:

  <!DOCTYPE html> 
   < html   lang   =  " en "   >  
   < head  >  
       <  Meta    charset   =  " UTF-8 "   >  
       <  Meta    name   =  " viewport "    content   =  " width=device-width, initial-scale=1.0 "   >  
       < title  >  Document   </ title  >  
   </ head  >  
   < style  >   

  @media  only screen and  (  max-width  : 600px )   { 
     html,body  { 
         background  : red ; 
     } 
 } 
    </ style  >  
   < body  >  
    
   </ body  >  
   </ html  >  
 

使用多个 and 来设置屏幕背景色。

 
  @media  only screen and  (  min-width  : 600px )  and  (   max-width  : 800px )   { 
     html,body  { 
         background  : red ; 
     } 
 } 

 

  <!DOCTYPE html> 
   < html   lang   =  " en "   >  
   < head  >  
       <  Meta    charset   =  " UTF-8 "   >  
       <  Meta    name   =  " viewport "    content   =  " width=device-width, initial-scale=1.0 "   >  
       < title  >  Document   </ title  >  
   </ head  >  
   < style  >   

  @media  only screen and  (  min-width  : 600px )  and  (   max-width  : 800px )   { 
     html,body  { 
         background  : red ; 
     } 
 } 
    </ style  >  
   < body  >  
    
   </ body  >  
   </ html  >  
 

说明:这段 代码 的意思是当浏览器可视区域大于 600px 小于 800px 背景色为红色。

6. 小结

在工作中媒体 查询 不只是用来限定 css 文件 中使用哪组样式,也可以直接作用在 link 标签 上,让 页面 直接选择什么样的 css 文件 。

例如:

    < link   rel   =  " stylesheet "    type   =  " text/css "    media   =  " screen and (orientation:portrait) "    href   =  " style.css "   >  
 

说明: @media 变成了 标签 属性 media ,上面的意思就是用来区分移动设备是横向还是纵向的。

only 元素选择 ? ?Grid 行和列

查看更多关于media 媒体查询的详细内容...

  阅读:40次

上一篇

下一篇

第1节:CSS3简介    第2节:border 边框    第3节:borderImage 边框图片    第4节:border-radius 圆角    第5节:box-shadow 阴影    第6节:box-sizing 盒类型    第7节:gradients 渐变    第8节:text-justify 对齐    第9节:text-overflow 文字超出    第10节:text-shadow 文本阴影    第11节:word-break 文本打断    第12节:word-wrap 文本换行    第13节:letter-spacing 字间距    第14节:perspective 透视    第15节:transform 2D 空间转换    第16节:transform 3D 空间转换    第17节:transition 过渡    第18节:animation 动画    第19节:columns 字符分割    第20节:flex 弹性盒子布局    第21节:flex order 顺序    第22节:flex: grow、shrink、basis    第23节:flex-direction 排列方向    第24节:justify-content (轴内)对齐方式    第25节:flex-wrap 换行    第26节:align-items 竖直方向对齐方式    第27节:align-content    第28节:Grid 布局简介    第29节:Grid 行和列    第30节:media 媒体查询    第31节:only 元素选择    第32节:before && after 位置    第33节:nth 类型元素选择器    第34节:calc 计算属性