布局视口
和视觉视口
是同一个
移动端
的网页窗口通常较小,默认情况下,布局视口
是大于``````视觉视口
的默认情况下,一个pc端的网页在移动端是如何显示的?
相对于980px布局的这个视口,称之为布局视口(layout viewport)
布局视口的默认宽度是980px
如果默认情况下,我们按照980px显示内容,那么右侧就会有一部分区域无法显示
,所以手机浏览器会```默认对页面进行缩放以显示到用户的可见区域``中
显示在用户可见区域的这个视口
,就是视觉视口(visual viewport)
因为默认情况下,移动端的布局视口默认宽度是980px,但这种不利于我们开发
所以就有了理想视口的概念,所谓理想视口就是,布局视口和视觉视口一致
可以通过meta的viewport
设置layout viewport的宽度和缩放,以满足正常在一个移动端的视口布局
值 | 可能附加的值 | 描述 |
---|---|---|
width | 一个正整数,或字符串device-width(表示宽度和视口一样 ) | 定义viewport的宽度 |
height | 一个正整数,或字符串device-width | 定义viewport的高度未被任何浏览器使用 |
initial-scal | 一个0.0和10.0之间的正数 | 定义设备宽度与viewport大小之间的缩放比例 |
maximum-scal | 一个0.0和10.0之间的正数 | 定义缩放的最大值,必须大于minimum-scal,否则表现将不可预测 |
minimum-cal | 一个0.0和10.0之间的正数 | 定义缩放的最小值,必须小于maximum-scal,否则表现将不可预测 |
user-scalable | yes或no | 默认是yes,如果设置为no,将无法缩放当前页面。浏览器可以忽略此规则 |
因为user-scalable
属性浏览器可以忽略,所以移动端一般如下设置
<meta name="viewport" content="width=device-width, initial-scale=1.0 maximun-scal=1.0 minimun-scal=1.0">
少见
缺点
<style>
.box {
width: 5rem;
height: 5rem;
background-color: #aff;
}
style>
head>
<body>
<div class="box">div>
body>
<script>
let htmlEl = document.documentElement;
window.addEventListener("resize", () => {
// 获取视口的宽度
let htmlWidth = htmlEl.clientWidth;
let htmlFontSize = htmlWidth / 10;
// 设置html的font-size大小
htmlEl.style.fontSize = htmlFontSize + "px";
});
script>
直接引入三方库即可
会出现一个问题
,没有给span单独设置字体大小的情况下,会继承html的字体大小,会很大,所以要给body单独设置一个字体大小,让后续没有设置字体大小的元素继承body
<div class="box">
<span>dfsdfsdfspan>
div>
.pxToRem(@px) {
result: 1rem * (@px / 37.5)
}
.box {
width: .pxToRem(100)[result];
height: .pxToRem(100)[result];
}
.p {
font-size: .pxToRem(14)[result];
}
借助webpack的插件完成,后续补上
.pxToRem(@px) {
result: 1vw * (@px / 3.75)
}
.box {
width: .pxToRem(100)[result];
height: .pxToRem(100)[result];
}
.p {
font-size: .pxToRem(14)[result];
}
借助webpack的插件完成,后续补上
不过多赘述