什么是媒体查询?
媒体查询可以让我们根据设备显示器的特性(如视口宽度、屏幕比例、设备方向:横向或纵向)为其设定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的样式,响应式布局就没问题。
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1,maximum-scale=1, user-scalable=no">把这句话加到title标签下边 求采纳
视口(viewport)是用来约束网页中最顶级块元素的,即它决定了网页的大小,网页是先在视口上渲染,然后再通过视口放回到浏览器窗口上的,网页的渲染过程如下:
pc端视口的大小和浏览器的大小一样,所以网页是1:1的放到浏览器窗口上,而移动端视口就有点特殊,移动端视口的宽度是比移动端屏幕要宽,宽度尺寸一般是980px或者1024px,网页是视口上渲染完之后,为了能在移动端屏幕上显示整个网页,整个视口会整体缩放到屏幕的宽度,这样,网页看上去就整体缩放
具体如何设置视口以及禁止视口页面缩放可以自行百度
(主要针对移动端以及pc端网页需要实现等比放大缩小页面效果)
大概有以下几种
1、流体布局
流体布局其实就是宽度用百分比,高度用固定值的布局方式,宽度通过百分比来适配不同宽度的屏幕。
为了适配手机端不同尺寸的屏幕,我们在定义元素宽度的时候可以写百分比,百分比是相对于屏幕的宽度,所有宽度就可以做到自适应,而在高度方向,由于网页的高度是不定的,所以我们可以把高度写成固定的值(px),这种布局方式叫做流体布局。
注意两个概念
2、弹性盒模型布局flex
这种布局方式是通过css3新增的一些辅助布局的样式属性来制作布局的方式。
3、rem布局
rem是一种相对长度单位,通过这个长度单位可以实现元素宽高等比例缩放,从而完成不同宽度屏幕的适配。
4、响应式布局 (媒体查询)
通过样式动态查询屏幕的宽度,动态切换样式来适配不同宽度屏幕的布局方式。
Bootstrap是最典型的一种
待补充
实际开发中,pc端页面需要实现响应式等比缩放(即自适应),使用rem+弹性布局是比较现实及理想的解决方式
移动端可以使用rem布局,也可以使用px实现(主要用flex),具体看产品是怎么设计要求的
css3规定:1rem的大小就是根元素<html>的font-size的值。
rem其实是一个单位 ,是个相对单位 root em。rem就是root(根元素的大小)相对于html元素的字体大小的单位。
rem布局的原理
就是根据一个html根元素来控制,网页的布局,实现类似于自适应等比例的缩放的布局。
rem优势
通过修改html文字的大小,来改变页面中元素的大小,实现了页面的整体控制
rem的作用
通过设置 根元素<html>的font-size的大小,来控制整个html文档内的字体大小、元素宽高、内外边距等,根据移动设备的宽度大小来实现自适应,不同的设备都展示一致的页面效果。
简单用法
vscode中安装cssrem插件,通过这个插件可以自动计算rem数值。
具体设置如下
注意:设置后 vscode软件需要重启 否则计算的rem值会出错
待补充
可以通过js的方式来改变,也可以通过css媒体查询的方式来改变,
待补充