初识CSS3之媒体查询(2015年05月31日)

摘要:
实现响应式设计的主要方法是使用CSS媒体查询——1。链接元素中的CSS媒体查询--˃@media{.facet_sidebar{display:none;}}2中的CSS媒体查询。相关规则媒体查询包含媒体类型和媒体属性,这些属性包含CSS3规范中描述的一个或多个表达式。这些媒体属性将解析为true或false。和运算符用于组合多个媒体属性,并将它们合并到同一个媒体查询中。Not位于媒体查询的开头,Not将忽略结果。

一、什么是媒体查询

媒体查询是面向不同设备提供不同样式的一种实现方式,它可以为每种类型的用户提供最佳的体验,也是响应式设计的实现方式。

现今每天都有更多的手机和平板电脑问市。消费者能够拥有可想象到的各种规格和形状的设备,但是网站开发人员却面临一个挑战:如何使他们的网站在传统浏览器、手机和平板电脑浏览器上有很好的效果,如何在各种大小的屏幕上提供一流的用户体验,答案是:采用响应式设计。响应式设计可以随所显示的屏幕大小而改变。实现响应式设计的主要方法是使用 CSS 媒体查询。

二、媒体查询规则

1、引入方式

<!-- 1、link元素中的CSS媒体查询 -->

<link rel="stylesheet" media="(max- 800px)" href="http://t.zoukankan.com/example.css" />

<!-- 2、样式表中的CSS媒体查询 -->

<style>

@media (max- 600px) {

  .facet_sidebar {

    display: none;

  }

}

</style>

2、相关规则

媒体查询包含了一个媒体类型 和如CSS3规范中描述的包含一个或多个表达式的媒体属性,这些媒体属性会被解析成真或假。如果媒体查询中的媒体类型与文档要展示的设备相符则查询结果为真,并且媒体查询中的所有表达式为真。

@media (min-800px) { ... }

媒体类型:media;

媒体属性(表达式):min-800px;表示最小宽度为800px,如果浏览器的最小宽度为800px,则使用{ ... }中的样式

@media (min-800px) and (max-1200px) { ... }则表示:在最小宽度为800px,最大宽度为1200px时应用{...}中的样式

三、媒体查询语法

1、逻辑操作符

操作符 not、and、or、 only 可以用来构建复杂的媒体查询。

and 操作符用来把多个 媒体属性 组合起来,合并到同一条媒体查询中。只有当每个属性都为真时,这条查询的结果才为真。

@media (min-800px) and (max-1200px) and (orientation:portrait) { ... }

表示媒体查询仅在最小宽度为800px,最大宽度为1200px,并且方向是纵向的时候才应用{...}中的样式

or操作符用来把多个媒体属性组合起来,只要有其中一个媒体属性为真,则整个查询结果都为真

@media (min-800px) or (orientation:portrait) { ... }

表示媒体查询在最小宽度为800px或者方向为纵向的时候使用{...}中的样式

not 操作符用来对一条媒体查询的结果进行取反。

not位于媒体查询的开始处,not 会忽略结果。换句话说,如果该查询本来在没有 not 关键词的情况下为 true,那么现在它将为 false

@media (not min-800px) { ... }

表示在最小宽度不是800px的时候,会使用{...}中的样式

only 操作符表示仅在媒体查询匹配成功的情况下应用指定样式。可以通过它让选中的样式在老式浏览器中不被应用。

若使用了 not 或 only 操作符,必须明确指定一个媒体类型。

你也可以将多个媒体查询以逗号分隔放在一起;只要其中任何一个为真,整个媒体语句就返回真。相当于 or 操作符。

@media (min-800px), (orientation:portrait) { ... } 

表示媒体查询在最小宽度为800px或者方向为纵向的时候使用{...}中的样式

2、媒体属性

clipboard[14]

3、媒体类型

在JetBrains WebStorm 10.0.2中输入@media便会有以下的提示信息,查了下资料才知道这是媒体类型

clipboard[15]

clipboard[16]

四、一个超简单的Demo

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
/*
页面可见宽度大于800px时,页面背景为蓝色
*/
@media screen and (min- 800px) {
body{
background-color: blue;
}
}
/*
页面可见宽度小吴800px时,页面背景为红色
*/
@media screen and (max- 800px) {
body{
background-color: red;
}
}
</style>
</head>
<body>

</body>
</html>

效果:

clipboard[17]

 

缩小浏览器窗口后

clipboard[18]

 

五、使用感受

优点:使用媒体查询能为不同的设备制定不同的样式,使得页面效果在各个设备上的视觉效果良好,提高了用户体验度。

缺点:需要为不同的设备编写不同的css样式,增大了开发的复杂度。

建议使用:Bootstrap、Amaze UI等优秀开源前端框架

免责声明:文章转载自《初识CSS3之媒体查询(2015年05月31日)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android系统HAL基本概念一个文件夹可以link 到另外一个文件夹下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

css之变形(transform)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>css3变形,阴影和渐变背景色属性</title> </head> <!-- 变形【transform】 向元素...

CSS(Sass)模块化

在Vue大行其道的今天,我们也受益匪浅,再次感谢@尤大。那么在用Vue开发的过程中,我们大概率会用到Sass来提高我们前端的开发效率,为前端工程化做了很大贡献,Sass本身具有很多令人兴奋的功能,例如:variable、function、mixin、nested、module等,本文主要来研究module——CSS模块化。 我们在开发中最常用的模块化指令就...

CSS实例:图片导航块

认识CSS的 盒子模型。 CSS选择器的灵活使用。 实例: 图片文字用div等元素布局形成HTML文件。 新建相应CSS文件,并link到html文件中。 CSS文件中定义样式 div.img:border,margin,width,float div.img img:width,height div.desc:text-align,padding div...

html判断IE版本

html判断IE版本 1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> 2. <!--[if IE]> 所有的IE可识别 <![endif]--> 3. <!--[if IE 5.0]> 只有IE5.0可以识别 <![en...

CSS 表格

CSS 为表格定义了5个专用属性。 一、border-collapse   该属性用于定义表格的行和单元格的边是合并在一起的还是按照标准的 HTML 样式分开的。 语法: border-collapse: separate | collapse   separate:不合并单元格边框 collapse:合并单元格边框...

CSS与DIV的一些基础知识(2)

margin:外边距,就是这个标签与其他标签之间的距离 padding:内边距,标签内部边距 为了各浏览器的兼容性,最好每次在css文件的顶部加入,只要用到标签就应该加入下面的重置 div,body {     margin:0;     padding:0; } display:block;可将内联元素变成块元素 float:left;浮动,可将块...