<! DOCTYPE html >
< html lang= "en" >
< head >
< meta charset= "UTF-8" >
< meta name= "viewport" content= "width=device-width, initial-scale=1, maximum-scale=1" >
< title >rem布局——rem+js </ title >
</ head >
< style type= "text/css" >
html {
font-size: 32px;
/* 320/10 */
}
body {
font-size: 16px;
/* 修正字体大小 */
/* 防止页面过宽 */
margin: auto;
padding: 0;
width: 10rem;
/* 防止页面过宽 */
outline: 1px dashed green;
}
/* js被禁止的回退方案 */
@media screen and ( min-width: 320px) {
html {
font-size: 32px
}
body {
font-size: 16px;
}
}
@media screen and ( min-width: 481px) and ( max-width: 640px) {
html {
font-size: 48px
}
body {
font-size: 18px;
}
}
@media screen and ( min-width: 641px) {
html {
font-size: 64px
}
body {
font-size: 20px;
}
}
noscript {
display: block;
border: 1px solid #d6e9c6;
padding: 3px 5px;
background: #dff0d8;
color: #3c763d;
}
/* js被禁止的回退方案 */
.p1,
.p2 {
border: 1px solid red;
margin: 10px 0;
}
.p1 {
width: 5rem;
height: 5rem;
font-size: 1.2em;
/* 字体使用em */
}
.s1 {
font-size: 1.2em;
/* 字体使用em */
}
.p2 {
width: 4rem;
height: 4rem;
}
.s2 {
font-size: 1.2em
/* 字体使用em */
}
< / style >
< body >
< noscript >开启JavaScript,获得更好的体验 </ noscript >
< div class= "p1" >
宽度为屏幕宽度的50%,字体大小1.2em
< div class= "s1" >
字体大小1.2.em
</ div >
</ div >
< div class= "p2" >
宽度为屏幕宽度的40%,字体大小默认
< div class= "s2" >
字体大小1.2em
</ div >
</ div >
</ body >
</ html >
< script type= "text/javascript" >
var documentElement = document. documentElement;
function callback() {
var clientWidth = documentElement. clientWidth;
// 屏幕宽度大于780,不在放大
clientWidth = clientWidth < 780 ? clientWidth : 780;
documentElement. style. fontSize = clientWidth / 10 + 'px';
}
document. addEventListener( 'DOMContentLoaded', callback);
window. addEventListener( 'orientationchange' in window ? 'orientationchange' : 'resize', callback);
< / script >