1.什么是媒体查询?
以我个人的理解来说,媒体查询就是监听实时监听页面的宽度,当达到媒体查询设置的条件时,用设置在媒体查询中的css样式代替该元素之前设置的样式(当然,如果该元素之前没有设置css样式的画,是添加上新样式);
因为通过使用的媒体类型都是screen媒体类型;所以下面的这个问题就是探讨一下媒体查询的本质;
那么就有一个疑问啦?css中的媒体查询与js中的window,onresize有什么区别吗?
以本人理解,没有区别;只不过在js中设置window,onresize事件,然后通过if判断window.innerWidth是值然后在if的块级作用域中写css样式自然没有直接在css中写来的方便;
再换句话说:媒体查询是不是就可以理解为在css中设置了window,onresize事件和if判断;
2.媒体查询的具体使用方法
@media 媒体类型 and (媒体查询的特性/条件){ } 媒体查询的基本格式
screen:
@media screen and (max-width:800px){ } 当页面小于800px时候,使用该媒体查询中的样式;
@media screen and (min-width:1200px){ } 当页大于面于1200px时候,使用该媒体查询中的样式;
简化后:
@media (max-width:800px){ } 当页面宽度与小于800px时候,使用该媒体查询中的样式;
@media (min-width:1200px){ } 当页面宽大于1200px时候,使用该媒体查询中的样式;
也可以使用引用外部的css文件也使用媒体查询:
<link rel="stylesheet" media="screen and (min-width:600px)" href="./demo.css"> 当页面宽大于600px时候,使用demo.css的样式;
<link rel="stylesheet" media="screen and (max-width:600px)" href="./demo.css"> 当页面宽小于600px时候,使用demo.css的样式;
3.媒体查询的demo
当页面宽度小于700,div的颜色是red;大于700小于1200,div的颜色是aqua(其实本质还是当页面宽度与大于1200,这个样式被覆盖了);当页面宽度大于700,div的颜色是red;
div{
width:500px;
height:500px;
background-color: red;
}
@media (min-width:700px){
div{
background-color: aqua;
}
@media (min-width:1200px){
div{
background-color: yellowgreen;
}
}
注意html是从上往下读取css样式的,所以呈现的样式就是:
当页面宽度小于700,div的颜色是red;大于700,div的颜色是aqua;
div{
width:500px;
height:500px;
background-color: red;
}
// 该条件一直不会执行 因为当满足大于1200宽度时候必定满足下面的条件;
@media (min-width:1200px){
div{
background-color: yellowgreen;
}
}
// 当页面宽度大于1200之后,该设置的条件将覆盖上面的样式;
@media (min-width:700px){
div{
background-color: aqua;
}
}