响应式布局: 同一页面在不同的屏幕上有不同的布局,即一套代码自适应不同的屏幕。
为什么 rem 能用于实现响应式布局?

DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
<style>
html {
font-size: 20px;
}
.box1 {
font-size: 1rem;
}
.box2 {
font-size: 2rem;
}
.box3 {
font-size: 3rem;
}
style>
head>
<body>
<div class="box1">1remdiv>
<div class="box2">2remdiv>
<div class="box3">3remdiv>
body>
html>
响应式布局的实现
font-sizeDOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>响应式布局title>
<style type="text/css">
@media only screen and (max-width: 374px) {
/* iphone5 或者更小的尺寸,以 iphone5 的宽度(320px)比例设置 font-size */
html {
font-size: 86px;
}
}
@media only screen and (min-width: 375px) and (max-width: 413px) {
/* iphone6/7/8 和 iphone x */
html {
font-size: 100px;
}
}
@media only screen and (min-width: 414px) {
/* iphone6p 或者更大的尺寸,以 iphone6p 的宽度(414px)比例设置 font-size */
html {
font-size: 110px;
}
}
body {
font-size: 0.16rem;
}
.titleBox {
width: 3rem;
background-color: #ccc;
}
style>
head>
<body>
<div class="titleBox">响应式布局———— 媒体查询 + remdiv>
body>
html>

window.innerWidth:客户端浏览器渲染网页的区域中可见部分的宽度(如上图)window.innerHeight;:客户端浏览器渲染网页的区域中可见部分的高度(如上图)移动端的网页视口宽度和高度在PC端浏览器的模拟是不准确的(PC端的模拟没有显示移动端浏览器的头部和底部),只能在移动端上用 js 获取
相关概念还有
- 屏幕的高度
window.screen.height- 屏幕的宽度
window.screen.width- body 的高度
document.body.clientHeight- body 的宽度
document.body.clientWidth
CSS3 新增 vh 和 vw 就是用于实现真正的响应式布局(随客户端设备宽高的变化,页面自动适配调整变化,呈现预期的页面效果)
移动端的横竖屏切换时,可能需要使用 vmin 和 vmax 实现响应式布局
需浏览器支持 vh 和 vw 【CSS3 的语法】(某些支持CSS3语法的浏览器,仍不支持 vh 和 vw)
大部分情况下,百分比是相对于父元素进行计算的,但也有很多例外的情况,如vertical-align的百分比是相对当前元素的line-height值来计算的,又因每个元素的父元素各不相同,导致使用百分比实现响应式布局变得更加复杂,所以并不推荐。