array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Css3--Media query - 爱码网

 

内容提要:

1,介绍一下Media query是什么,为什么会出现Media query技术

2,Media query的基本用法

3,实际应用中遇到的一些问题

网络应用的发展最终会朝着轻便,快捷的方向发展,而这也就导致了诸多的硬件的改革,以前我们可以写一段代码样式,就可以移植到其他的机型上,因为他们的尺寸、分辨率都没有像现在的那么多的选择,而今,像android、iphone、ipad特别是android,分辨率有QVGA(320*240) 、VGA(640*480)、WVGA(800*480);此外还有SVGA(800*600)等一些视频图形显示卡;

注意:这里的数字是指的分辨率,不是指屏幕的宽度;

这里扯开一下话题:因为现在android主流的分辨率是WVGA(800*480),这是因为目前网页的宽度是800,所以WVGA更加适合用来浏览网页;SVGA即高级视频图形阵列(Super Video Graphics Array或Super VGA或SVGA),由VESA为IBM兼容机推出的标准。分辨率为800x600(每像素4比特,16种颜色可选)。

由于这么多的分辨率的出现,所以网页在不同的分辨率下,显示出的效果就不太一样,当然也影响着布局的展示,会出现无法全屏显示,或者原有的布局不适应当前的屏幕,所以也就出现了Media query;这项技术是css2 media type 的一项扩展,但是之前的media type浏览器的支持并不像今天的media query这么普遍;先介绍一下media query可以做什么:

CSS3 的 Media Queries 可以帮你获取以下数据:

  • 浏览器窗口的宽和高
  • 设备的宽和高
  • 设备的手持方向,横向还是竖向
  • 分辨率

支持Media Queries的浏览器都是有:

Css3--Media query

可以简单的了解一下浏览器的内核结构

webkit是最早实现media query支持的浏览器内核之一,同时它也根据自己的需要搞了一些特有的扩展属性,最常用的有:

transform-2d 只用于支持使用 -webkit-transform实现2D变换的浏览器
transform-3d 只用于支持使用 -webkit-transform实现3D变换的浏览器
transition 只用于支持使用-webkit-transition实现变换效果的浏览器
animation 只用于支持使用-webkit-animation实现动画的浏览器

如何使用Media Queries媒体查询

媒体查询就像是一个CSS选择器或者如果你接触过数据库的话,就像是SQL查询语句。媒体查询实际上就是一种语法规

则,可以方便的从一大堆元素里获取几个元素。这样就方便你应对一些特定的尺寸或者指定一些特殊的解决方案了。媒体

查询的代码可以放在<head>元素里,也可以放在styleSheet样式表里的任何地方。但是需要注意的是,在任何时候,媒体查

询都必须以关键字media开头,后面跟你要显示的css样式。

(一)放在head标签中的写法如下:

          <link rel="stylesheet" type="text/css"     href="xxx.css"

                 media="only screen and (max-device-width:480px)">

(二)放在styleSheet样式表的写法如下:

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

                /*css样式*/

           }

 【注意事项】:上面的两种写法都是针对老版iphone的解决方案(320x480的解决方案)。当然,不是说让你两个都用,

                              只要挑选适合你需求的那个写法来用就可以了 。  

问题:

通过max-device-width和min-device-width判断手机设备的最大宽度和最小宽度,对于QVGA屏幕的手机和VGA屏幕的手机,media query只能判断其中的一种,也就是说:当我使用media query在样式表中设置样式:QVGA跟VGA屏幕的手机样式表示分开写在相应的media query语句中;但是执行的时候手机根本就没有进行判断,结果后面的样式覆盖之前的样式;

原因可能是因为;media query是基于浏览器的内核判断的;决定权在于浏览器,而不在于手机的分辨率,android手机使用的是webkit,但是浏览器的宽度是800,是不是手机中的浏览器在执行media query的时候,只是对浏览器的宽度作出了判断,而没有对device进行判断;所以解决这个问题,需要让media query针对屏幕的分辨率进行判断;而不只是通过浏览器本身的宽度;例如在pc上进行演示的时候,可以通过调节浏览器(chrome)的宽度,进而media query匹配相应的样式;而在手机中,浏览器的宽度是固定的;所以也就很难匹配相应的样式;无论怎么的屏幕都只会选择同一个media query下的样式;

所以,media query还提供了获得机器本身的分辨率,横屏或者竖屏,扩展阅读1 中有提到,这也有涉及到了另一项media query功能:屏幕分辨率的判断;

你也可以从通过手机浏览器宽度自适应:通过判断打开网页的宽度,进而浏览器自身的宽度调节到与网页宽度相同,那么,浏览器的宽度是在不停的变化着,所以通过max-width or min-width进行判断;不过,这个想法自己还没有尝试过;

max-device-width和min-device-width:是对设备的最大宽度和最小宽度进行判断;例如:pc中浏览器的宽度可以拉伸或者挤压,宽度是可以变化的,而屏幕的分辨率是不会改变的;pc中可以通过改变浏览器的宽度进行模拟不同宽度的手持设备,而手持设备就有别与pc,它的浏览器的宽度是不能改变的,也有可能都是一样的宽度,不管屏幕分辨率是多少,也就是说:屏幕的分辨率和屏幕宽度是不同的;屏幕的宽度和浏览器的宽度也是不同的;max-width是对浏览器的宽度进行判断;

 

##扩展阅读:

1.http://www.cnbeta.com/articles/117181.htm

2.http://www.w3.org/TR/css3-mediaqueries/

3.http://blog.bingo929.com/div-css-web-design-to-next-level-with-css3.html#more-2508

4.http://www.xker.com/page/e2010/0711/97266_2.html

5.https://developer.mozilla.org/En/CSS/Media_queries

6.http://hi.baidu.com/ali_myself/blog/item/359ce20d28303ed77acbe1c7.html

7.http://dev.opera.com/articles/view/safe-media-queries/

 

后面我还会介绍一下有关HTML5和CSS3的一些基本常识,有兴趣可以关注一下http://www.slideshare.net/adamlu/html5css3-2679214

相关文章: