CSS3中的媒体查询

一、为什么需要媒体查询

CSS3的媒体查询模块就是为了针对设备特性(width、height等)设置特定的css样式,可以在不改变当前页面内容的情况下,为特定的一些设备定制显示效果。

二、媒体查询语法

1.媒体查询在一段CSS后引入特定样式

@media screen and (max-width:960px){
...
}

2.使用 CSS 的@import 指令在当前样式表中按条件引入其他样式表

@import url("phone.css") screen and (max-width:360px);

3.利用媒体查询引入特定的样式文件

<link rel="stylesheet" media="screen and (orientation: portrait) and (min-width: 800px), projection" href="800wide-portrait-screen.css" />

三、媒体查询可检测的特性

  • width:视口宽度
  • height:视口高度
  • device-width:渲染表面的宽度(对我们来说,就是设备屏幕的宽度)
  • device-height:渲染表面的高度(对我们来说,就是设备屏幕的高度)
  • orientation:检查设备处于横向还是纵向
  • aspect-ratio:基于视口宽度和高度的宽高比。一个 16∶9 比例的显示屏可以这样定义 aspect-ratio: 16/9
  • device-aspect-ratio:和 aspect-ratio 类似,基于设备渲染平面宽度和高度的宽高比
  • color:每种颜色的位数。例如 min-color: 16 会检测设备是否拥有 16 位颜色。
  • color-index:设备的颜色索引表中的颜色数。值必须是非负整数。
  • monochrome:检测单色帧缓冲区中每像素所使用的位数。值必须是非负整数,如
    monochrome: 2
  • resolution:用来检测屏幕或打印机的分辨率,如 min-resolution: 300dpi。还可以接受每厘米像素点数的度量值,如 min-resolution: 118dpcm。
  • scan:电视机的扫描方式,值可设为 progressive(逐行扫描)或 interlace(隔行扫描)。如 720p HD 电视(720p 的 p 即表明是逐行扫描)匹配 scan: progressive,而 1080i HD 电视(1080i 中的 i 表明是隔行扫描)匹配 scan: interlace。
  • grid:用来检测输出设备是网格设备还是位图设备。

除 scan 和 grid 之外,都可使用 min 和 max 前缀来创建一个查询范围,如min-width:200px、max-width:360px。

四、利用viewport禁止用户缩放

<meta name="viewport" content="width=device-width,initial-scale=1.0" />

meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览; 尤其要注意的是content里多个属性的设置一定要用分号+空格来隔开,如果不规范将不会起作用。

  • width viewport 宽度(数值/device-width)

  • height viewport 高度(数值/device-height)

  • initial-scale 初始缩放比例

  • maximum-scale 最大缩放比例

  • minimum-scale 最小缩放比例

  • user-scalable 是否允许用户缩放(yes/no)

  • minimal-ui iOS 7.1 beta 2 中新增属性(注意:iOS8 中已经删除),可以在页面加载时最小化上下状态栏。

注意:关于viewport,还有一个很重要的概念是:iphone 的safari 浏览器完全没有滚动条,而且不是简单的“隐藏滚动条”, 是根本没有这个功能。iphone 的safari 浏览器实际上从一开始就完整显示了这个网页,然后用viewport 查看其中的一部分。 当你用手指拖动时,其实拖的不是页面,而是viewport。浏览器行为的改变不止是滚动条,交互事件也跟普通桌面不一样。

<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="black" name="apple-mobile-web-app-status-bar-style" />
<meta content="telephone=no" name="format-detection" />
  • 第一个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
  • 第二个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
  • 第三个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容