ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
讲述meta视口标签和媒体查询相关的内容。 示例代码: ~~~ <meta name="viewport" content="width=device-width, initial-scale=1"> @media screen and (max-width:480px) { // some style } ~~~ ## 像素(pixel) * 设备像素:设备屏幕的物理像素。 * CSS像素:为Web开发者创造的,在CSS和JS中使用的一个抽象层。 CSS像素和设备像素的比例取决于屏幕是否高DPI和用户缩放的比例。 ## 三个视口 桌面上视口宽度等于浏览器宽度,但在手机上有所不同。 * 布局视口。手机上为了容纳为桌面浏览器设计的网站,默认布局视口宽度远大于屏幕宽度,为了让用户看到网站全貌,它会缩小网站。 * 视觉视口。用户正在看到的网站的区域,与设备屏幕一样宽。 * 理想视口。当网站是为手机准备的时候使用。使用meta声明。早期iPhone理想视口为320*480px。 ## 缩放 桌面浏览器的缩放仅改变内容尺寸,不改变布局视口;移动端缩放则整体改变。 > 不要禁止缩放。 ~~~ <meta name="viewport" content="user-scalable=no"> ~~~ 禁止缩放是邪恶的,并且浏览器可以关闭禁止缩放功能。 ## 分辨率 物理分辨率:设备每英寸内点数(DPI)。 设备像素比:设备像素个数和理想视口的比(DPR)。 dppx和dpi:每一个像素的点数。JS中的`window.devicePixelRatio`和媒体查询的`device-pixel-ratio`的单位。IE不支持,因此要使用dpi单位: ~~~ if(window.devicePixelRatio) { // DPR大于等于2时执行 } @media all and((-webkit-min-device-pixel-ratio:2), (min-resolution:192dpi)) { // DPR大于等于2时生效 } ~~~ 1dppx = 96dpi:一英寸对应CSS中96个像素。 ## meta视口 ~~~ <meta name="viewport" content="name=value,name=value"> ~~~ 其中可用的name为: * width:device-width适用于大多数情况。 * initial-scale:一般设为1,为了兼容应同时设置width=device-width。 * minimum-scale * maximum-scale * user-scalable ## 媒体查询 媒体类型:目前只有print被正确实现。一般使用all。 > Web开发者希望区分能力弱和能力强的浏览器,而弱浏览器为了避免探测开始伪装自己。 > > 过去的浏览器最多可处理WAP和HTML的子集XHTML-MP,它们大都遵循标准并实现handheld,Web开发者为这些类型提供简单的样式。而新的现代移动浏览器出现后,它们支持全部样式、JS,因此宁愿不实现handheld而获得和桌面浏览器一样的待遇。 ## JavaScript 媒体查询与JavaScript属性相对应。 * 物理屏幕分辨率:screen.width/height(有兼容问题不建议使用) * 布局视口:document.documentElement.clientWidth * 视觉视口:window.innerWidth * 理想视口:screen.width/height(有兼容问题不建议使用) * 设备像素比:window.devicePixelRatio * 屏幕方向:window.orientation