聊聊最近接触的媒体查询!

1.首先什么是媒体查询?

媒体查询可以让我们根据设备显示器的特性(如视口宽度、屏幕比例、设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果。

通俗点说就是利用媒体查询我们可以让一套代码兼容不同的屏幕如电脑、pad、手机登。

2。媒体查询怎么用?

在介绍怎么用媒体查询之前,我们先说下媒体查询操作的是什么?答案就是样式属性如width、height、font-size、color等。在什么里面可以使用媒体查询呢?首先我们想到的肯定是css中,其次就是也可以在JS里面去使用。
      接下来我们先看看在css中怎么使用。上代码

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

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

<title></title>

<style>

#box {      //设备屏幕宽度尺寸小于768px时,这段样式会起作用

width: 100px;

height: 100px;

font-size: 16px;

color: gold;

background-color:gray;

}

@media only screen and (min-width: 768px) {

#box {     //设备屏幕宽度尺寸大于768px时,这段样式会起作用

width:300px;

height:300px;

font-size: 24px;

color: white;

background-color:black;

}

}

</style>

</head>

<body>

<div id="box">媒体查询</div>

</body>

</html>

我们来看看这句代码@media only screen and (min-width: 768px) ,这就是在CSS中使用媒体查询的常见语法注意括号中的min-width: 768px,就是这段样式起作用的条件即这段样式起作用的最小屏幕宽度,屏幕宽度小于它是不起作用的。除了min-width,也可以使用max-width来作为条件。

说到这里可能有的人就会问那如果我想要这段样式在特定的宽度区间内起作用该怎么写呢?很简单

@media screen and (min-width:320px) and (max-width:720px) ,即当设备屏幕宽度在320px——720px之间时,样式才会生效。

细心地同学可能注意到这句代码:

<meta name="viewport" content="width=device-width, initial-scale=1.0"/>   那么这条代码是用来干嘛的呢?

我们先看下它里面的几个属性:

width=device-width:宽度等于当前设备的宽度(height类似于width)

initial-scale=1:初始的缩放比例(默认为1)

maximum-scale=1:允许用户缩放到得最大比例(默认为1)

user-scalable=no:用户不能手动缩放

其实这段代码作用就是让当前viewport的宽度等于设备的宽度,同时缩放比例为1.0.

看到这里可能就有什么说:“哇,媒体查询好简单啊!”我只想说一句  too  young  too simple!!!

为什么呢,因为这种单页面样式写起来的确很简单,但是在真正的项目中,css文件可能会有几个甚至十几个,这时候问题来了!当我们再用这种写法去写的时候你会郁闷死,因为同样的写法在单页面样式里面起作用而在大的项目代码中可能就会失效!!!!对,就是你满心欢喜的写了一大堆,长舒一口气,哇终于写完了!但是.....然并卵,你会发现没起作用。这时候就懵逼了(我就遇到过..........),原因也很简单,css样式是有优先级的,也就是

@media only screen and (min-width: 768px) {

#box {     //设备屏幕宽度尺寸大于768px时,这段样式会起作用

width:300px;

height:300px;

font-size: 24px;

color: white;

background-color:black;

}

}

这里面的样式会比这个页面不用媒体查询写的样式优先级要低,因此设备在解析的时候会优先查找到没有用媒体查询写的样式,这时候怎么办呢?好,他不是有优先级吗,我们让他处在同一个优先级上也就是这样写:

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

#box {     //设备屏幕宽度尺寸小于768px时,这段样式会起作用

width:300px;

height:300px;

font-size: 24px;

color: white;

background-color:black;

}

}

@media only screen and (min-width: 768px) {

#box {     //设备屏幕宽度尺寸大于768px时,这段样式会起作用

width:300px;

height:300px;

font-size: 24px;

color: white;

background-color:black;

}

}

这样的话他两的优先级就是一样的,这时候设备就会去判断当中的条件去使用符合相应条件的样式。这就是媒体查询在CSS中的用法。

接下来看看媒体查询在CSS中的写法

在我们写页面的时候样式可能并不只是在CSS文件中存在,有时也需要在JS中动态去设置。这时候如果还想让这些样式兼容不同的设备我们就可以再在JS中继续使用媒体查询。上代码

//JS媒体查询

var result = window.matchMedia(‘(min-width:768px)‘);

//console.log(window.innerWidth);

//console.log(result.matches);

if(result.matches){

console.log("768<= <=992 小型设备 平板电脑");

constants.WORK_ITEM_BUTTON_WIDTH = 40;

constants.WORK_ITEM_BUTTON_HEIGHT = 40;

constants.PHOTO_WIDTH = 200;

constants.PHOTO_HEIGHT = 200;

constants.PHOTO_CONTAINER_HEIGHT = ‘212px‘;

}else{

console.log("<=768 超小设备 手机");

constants.WORK_ITEM_BUTTON_WIDTH = 28;

constants.WORK_ITEM_BUTTON_HEIGHT = 28;

constants.PHOTO_WIDTH = 100;

constants.PHOTO_HEIGHT = 100;

constants.PHOTO_CONTAINER_HEIGHT = ‘112px‘;

}

//console.log(constants.WORK_ITEM_FONT_SIZE );

//console.log(constants.WORK_ITEM_BUTTON_WIDTH);

//console.log(constants.WORK_ITEM_BUTTON_HEIGHT);

利用window对象的matchMedia()这个方法去检测当前设备屏幕的尺寸它返回一个MediaQueryList对象。该对象有两个属性
media:查询语句的内容。
matches:如果查询结果为真,值为true,否则为false,再根据返回的结果去给相应的属性设置值。

这就是媒体查询的两大用法,通过这两种方法我们可以轻松地去兼容不同屏幕尺寸的设备。

时间: 2024-10-11 19:26:28

聊聊最近接触的媒体查询!的相关文章

CSS3 媒体查询响应式布局

在这个以手机.平板和电脑为中心的互联网时代.为了提高用户体验度,让页面适应不同屏幕的分辨率成了我们写页面时最至关重要的问题.CSS3中的媒体查询功能很好的帮我们解决了这一问题,它可以根据屏幕的大小进行上扩和下扩呈现给用户一个可用的界面. 刚开始接触媒体查询这个功能,我一边感慨它的强大,一边焦虑着我应该怎么去用它呢?首先我们得对它进行一个详细的认识和了解. 媒体查询就是通过不同的媒体类型和条件定义样式表的规则.可以让CSS更精确的作用于不同的媒体类型和同一媒体的不同条件.媒体查询的大部分媒体特性都

移动设备上的媒体查询 CSS media queries for mobile device

现在试图解决android平板的屏幕分辨率问题,目前主要想到的办法是采用响应式设计和媒体查询,发现无论使用那种方式,工作量都很大,调试都困难,悲催啊. CSS的媒体查询虽然在传统的互联网页面可能发挥的余地不是很大,但是自从苹果和安卓的风靡之后,移动平台上的web开发变得越来越流行了,同时CSS的媒体查询可谓派上了大用场了. 以下为翻译内容,原文来自这里 非常棒的一篇文章 关于CSS media queries想了解更多,参看这里 如何使用Media Queries媒体查询: 媒体查询就像是一个C

html5 响应式布局(媒体查询)

响应式布局 响应式布局,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的. 响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用"大势所趋"来形容也不为过.随着越来越多的设计师采用这个技术,我们不仅看到很多的创新,还看到了一些成形的模式. html5/css3响应式布局介绍及设计流程,利用css3的media query媒体查询功能.移动终端一般都是对css3支持比较好的

css媒体查询

1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于检测的媒体特性有 width . height 和 color (等).使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果. 2.为什么响应式设计需要,媒体查询如果没有CSS3的媒体查询模块,就不能针对设备特性(如视口宽度)设置特定的CSS样式 3.如何在CSS文件中引入媒

css3 媒体查询的学习。

1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于检测的媒体特性有 width . height 和 color (等).使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果. 2.为什么响应式设计需要,媒体查询如果没有CSS3的媒体查询模块,就不能针对设备特性(如视口宽度)设置特定的CSS样式 3.如何在CSS文件中引入媒

@meda媒体查询

定义和使用 使用 @media 查询,你可以针对不同的媒体类型定义不同的样式. @media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的. 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面. 浏览器支持 表格中的数字表示支持 @media 规则的第一个浏览器的版本号. Rule Chrome  IE   FireFox Safari Opera  @media 21 9 3.5 4.0 9 CSS 语法 @medi

css 媒体查询 注意点

1, 媒体查询表达式之间还可以用逗号,@media (max-width:800px), print  它表示或的意思 @media (max-width: 800px) OR print; 2, not 是对整个表达式的否定 @media not all and (min-width: 765px),  相当于 @media not (all and (min-width: 765px)) 如果不想这样的做,可以用,进行分割,@media not all, min-width:765px 3,

bootstrap在ie8下,兼容媒体查询

最近使用bootstrap做网站的时候发现,在ie8下的媒体查询一直失效: 后来解决了,做如下记录: 1.必须运行在服务器下 2.hack 条件语法,如下: <!--[if lte ie 9]> <script src="js/html5shiv.min.js"></script> <script src="js/respond.min.js"></script> <![endif]--> 这样

媒体查询

媒体查询规则: @media all{}将样式应用于所有类型, @media(min-width:800px){}将样式应用于最小宽度为800的 @media(min-width:800px) and (max-width:1200px) and (orientation:potrait){}宽度为800-1200且方向是纵向(and 表示同时满足时才会显示,or只要满足其中一个条件即可) @media(not min-width:800px){} orientation 媒体查询 @media