问题:
Q:小米电视安装浏览器不能全屏打开网页
详情:遇到一个需求,需要把web页面在小米电视4S屏幕上播放,通过小米电视连接wifi,在其上安装的TV浏览器应用上打开,电视的默认分辨率是1920 * 1080,可达4K(3840 * 2160).然后在显示网页时,全屏最大的分辨率只有约960 * 540。
分析:小米电视是android系统,是移动设备,手机浏览器打开网页同样不能缩放,可能和meta设置有关。
查看网页代码检查meta:
<meta name="viewport" content="width=device-width,initial-scale=1.0">
已经设置了视口宽度为设备宽度,并且默认缩放比为1。说明meta的width设置为device-width没有作用,其像素比例仍然不是匹配目标设备的。
对meta属性进行检查如下:
meta与缩放
meta标签提供关于HTML文档的元数据(meta-information)。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。<meta> 标签位于文档的头部,不包含任何内容。<meta> 标签的属性定义了与文档相关联的名称/值对。
当对移动设备进行页面适配时,需要对viewport进行处理。
什么是viewport
viewport 是用户网页的可视区域。移动设备会把网页放在一个viewport中,通常这个窗口会比设备的屏幕宽,以防会破环网页的布局。
如何设置viewport
上述问题设置的meta例子如下:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />
属性说明:
- width:控制 viewport 的大小,可以指定的一个值,如 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
- height:和 width 相对应,指定高度。
- initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
- maximum-scale:允许用户缩放到的最大比例。
- minimum-scale:允许用户缩放到的最小比例。
- user-scalable:用户是否可以手动缩放。
- target-densitydpi:表示目标设备的密度等级,作用是决定css中的1px代表多少物理像素
在原来的属性上加上target-densitydpi,如下:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />
在小米电视上适配成功了。
target-densitydpi取值范围说明:
- device-dpi :使用设备原本的 dpi 作为目标 dpi。 不会发生默认缩放。
- high-dpi :使用hdpi 作为目标 dpi。 中等像素密度和低像素密度设备相应缩小。
- medium-dpi : 使用mdpi作为目标 dpi。 高像素密度设备相应放大, 像素密度设备相应缩小。 这是默认的target density.
- low-dpi :使用mdpi作为目标 dpi。中等像素密度和高像素密度设备相应放大。
- <value> :指定一个具体的dpi 值作为target dpi. 这个值的范围必须在70–400之间。
target-densitydpi是专有属性,只针对android,webkit浏览器和IOS不支持,小米电视是android系统,支持其属性。
参考资料:
https://blog.csdn.net/ghlfllz/article/details/77530629