什么是媒体查询?
媒体查询可以让我们根据设备显示器的特性(如视口宽度、屏幕比例、设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。媒体查询中可用于检测的媒体特性有width、height和color(等)。使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果。
如何在CSS中引入媒体查询?
媒体查询写在CSS样式代码的最后,CSS是层叠样式表,在同一特殊性下,靠后的的样式会重叠前面的样式。
如何用CSS做响应式布局呢?
1、在HTML头部添加以下代码,用来显示兼容移动设备的显示效果。
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
参数详解:
width=device-width :宽度等于当前设备的宽度
initial-scale=1 :初始的缩放比例(默认为1)
minimum-scale=1 :允许用户缩放到的最小比例(默认为1)
maximum-scale=1 :允许用户缩放到的最大比例(默认为1)
user-scalable=no :用户是否可以手动缩放(默认为no)
2、引入包含Media的CSS文件
一般情况HTMLCSS代码都是分开写的,Media也不例外。
<link rel="stylesheet" type="text/css" href="m320.css" media="only screen and (max-width:320px)"/>
<link rel="stylesheet" type="text/css" href="m480.css" media="only screen and (min-width:321px) and (max-width:375px)"/>
3、写Media中的代码
以某个网页的响应式布局为例
结构:@media设备类型and (设备特性){样式代码}
/*媒体查询*/
/*当页面大于1200px时,大屏幕,主要是PC端*/
@media (min-width: 1200px) {
}
/*在992 和1199 像素之间的屏幕里,中等屏幕,分辨率低的PC*/
@media (min-width: 992px) and (max-width: 1199px) {
#adver .center {
width: 50%
margin: -10px 0 0 -25%
}
main .center h2 {
font-size: 40px
}
}
/*768和991像素之间的屏幕里,小屏幕,主要是PAD*/
@media (min-width: 768px) and (max-width: 991px) {
#adver .center {
width: 60%
margin: -10px 0 0 -30%
}
#adver .search, #adver .button {
font-size: 20px
}
main .center h2 {
font-size: 35px
}
}
/*在480和767像素之间的屏幕里,超小屏幕,主要是手机*/
@media (min-width: 480px) and (max-width: 767px) {
header, header .center, header .link {
height: 45px
}
header .logo, .sm-hidden,.sidebar,.md-hidden {
display: none
}
header .link {
width: 100%
line-height: 45px
}
#adver {
padding: 45px 0 0 0
}
#adver .center {
width: 70%
height: 53px
margin: -10px 0 0 -35%
}
#adver .search, #adver .button {
height: 45px
font-size: 18px
}
.sm-visible {
display: block
}
main .center h2 {
font-size: 30px
}
main .center p {
font-size: 15px
}
main figure {
width: 49.2%
}
}
/*在小于480像素的屏幕,微小屏幕,更低分辨率的手机*/
@media (max-width: 479px) {
header, header .center, header .link {
height: 45px
}
header .logo, .xs-hidden, .sm-hidden, .sidebar, .md-hidden {
display: none
}
header .link {
width: 100%
line-height: 45px
}
header .link li {
width: 25%
}
#adver {
padding: 45px 0 0 0
}
#adver .center {
width: 80%
height: 48px
margin: -10px 0 0 -40%
}
#adver .search, #adver .button {
height: 40px
font-size: 16px
}
.sm-visible {
display: block
}
footer .bottom, footer .version {
font-size: 13px
}
main .center h2 {
font-size: 26px
}
main .center p {
font-size: 14px
}
main figure {
width: 99%
}
}
响应式布局的原理就是在不同的窗口大小下显示不同的结构和样式。只要掌握好CSS的样式,响应式布局就没问题。
响应式布局最简单的就是用css3来实现。我举一个最简单的例子。下面是html代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name ="viewport" content="width = device-width,initial-scale=1">
<title>index01</title>
<link href="style01.css" type="text/css" rel="stylesheet">
</head>
<body>
<div class="heading">第一</div>
<div class="container">
<div class="left">第二</div>
<div class="main">第三</div>
<div class="right">第四</div>
</div>
<div class="footing">第五</div>
</body>
</html>
下面是css3代码
*{
margin:0px
padding: 0px
}
.heading,
.container,
.footing{
margin: 10px auto
}
.heading{
height: 100px
background-color: red
}
.left,
.right,
.main{
height: 300px
background-color: yellow
}
.footing{
height: 100px
background-color: gray
}
<!--media="only screen and (max-width:640px)" 这句话的意思是:只要当渲染屏幕的宽度不大于640px的时候才会使用这个样式表-->
@media screen and (min-width: 960px){
.heading,
.container,
.footing{
width:960px
}
.left,
.main,
.right{
float: left
height: 500px
}
.left,
.right{
width:200px
}
.main{
margin: 0px 5px
width:550px
}
.container{
height: 500px
}
}
@media screen and (min-width: 600px) and (max-width: 960px){
.heading,
.container,
.footing{
width: 600px
}
.left,
.main{
float: left
height:400px
}
.right{
display: none
}
.left{
width: 160px
}
.main{
width: 435px
margin-left: 5px
}
.container{
height: 400px
}
}
@media screen and (max-width: 600px){
.heading,
.container,
.footing{
width: 400px
}
.left,
.right{
width: 400px
height: 100px
}
.main{
margin-top: 10px
width:400px
height:200px
}
.right{
margin-top: 10px
}
.container{
height: 420px
}
}
这样就可以实现简单的响应式布局!如果你想要了解的话,可以到华清远见学习一下。我就是在那里学习的。
rem是什么?
px,绝对长度单位,最常用
em,相对长度单位,相对于父元素,不常用
rem,相对长度单位,相对于根元素,常用于响应式布局
响应式布局的常用方案
media-query,根据不同屏幕宽度设置根元素font-size
rem,基于根元素的相对单位
rem的弊端:“阶梯性”