关于meta viewport中target-densitydpi属性详解(推荐)

 更新时间:2017年08月18日 11:01:01   作者:痞子前端  
这篇文章主要介绍了关于meta viewport中target-densitydpi属性详解,通过不同的缩放比例实现了不同的预览效果,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。

前段时间在做WAP页面,发现页面设置了meta viewport中的大众属性,即:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" > 

但发现页面依旧不根据手机屏幕进行自动缩放,后来找其他同事帮忙解决了,我看了源代码发现了是在原来的viewport中增加了target-densitydpi属性。看之初不太了解,也因为当时自己手上有其他需求在处理,最近突然想起了这件事,准备对它做一些了解,以备不时之需。

首先来了解一下这个属性到底是做什么的,从网上摘录了一段简介,如下:

一个屏幕像素密度是由屏幕分辨率决定的,通常定义为每英寸点的数量(dpi)。Android支持三种屏幕像素密度:低像素密度,中像素密度,高像素密度。一个低像素密度的屏幕每英寸上的像素点更少,而一个高像素密度的屏幕每英寸上的像素点更多。android Browser和WebView默认屏幕为中像素密度。

下面是 target-densitydpi 属性的 取值范围

device-dpi –使用设备原本的 dpi 作为目标 dp。 不会发生默认缩放。
high-dpi – 使用hdpi 作为目标 dpi。 中等像素密度和低像素密度设备相应缩小。
medium-dpi – 使用mdpi作为目标 dpi。 高像素密度设备相应放大, 像素密度设备相应缩小。 这是默认的target density.
low-dpi -使用mdpi作为目标 dpi。中等像素密度和高像素密度设备相应放大。
<value> – 指定一个具体的dpi 值作为target dpi. 这个值的范围必须在70–400之间。

注:以上信息取自https://www.jb51.net/html5/177188.html

上面的信息我也从android官网找到了相关资料,这个资料在上面URL页面中都进行了翻译!

从这段简介可以得到如下信息:

1、它是指的屏幕分辨率,现在绝大多数智能手机屏幕都是可以通过viewport中的width来页面宽度的调整,其实我的理解就是调整屏幕显示该页面的分辨率,只是这个值不是直观来设置,而是浏览器通过width值来进行计算得出。

2、这个属性只对android系统起作用,专有属性。iOS不支持它,所以说起来,还是有兼容性问题,如果页面是兼容ios和android的话。

3、这个属性取值还挺多的,不过,一般个人使用较多的可能会是第五种,即自定义,因为这个不需要记住前端四个值的单词。

有了这些信息,我也拿出了三星i9100进行了测试,效果如下:

先贴HTML结构:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>无标题文档</title> 
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,target-densitydpi=360" /> 
<link href="inc/base-min.css" rel="external nofollow" rel="stylesheet" type="text/css"> 
<style type="text/css"> 
body{border:4px solid #F00;} 
</style> 
</head> 
 
<body> 
<p>如果你要为网页针对不同屏幕分辨率修改,用 -webkit-device-pixel-ratio这个media标签或在js中用 window.devicePixelRatio这个方法,设置target-densitydpi标签和device-dpi属性。这让你的定制更具有灵活性。</p> 
<p>在iOS中有两个meta值, apple-mobile-web-app-capable 和apple-mobile-web-app-status-bar-style,这两个会让网页内容以应用程序风格显示,并使状态栏透明。</p> 
<div class="demo"> 
<img src="images/mm1.jpg"> 
<br /> 
<img src="images/mm2.jpg"> 
<br /> 
<img src="images/mm3.jpg"> 
</div> 
</body> 
</html> 

chrome android版()
属性的所有取值都不支持!

效果:



UC(最新版V9.1)

所有属性都有支持,具体情况如下:

device-dpihigh-dpimedium-dpilow-dpi70360400

系统自带(android 4.1.2)

所有属性都有支持,具体情况如下:

device-dpihigh-dpimedium-dpilow-dpi70360400

查看测试时,虽然同时注意图片与文字大小的变化!

总结:

从各浏览器的测试效果来看,只有android WEB和UC支持这个属性,依目前国内手机浏览器的占比来看,UC使用率还是非常高的,所以,在android方面使用这个属性去解决问题的话,还是可以得到大面积支持的。另外关于这个属性中最后一个自定义取值,当值超过最大值400或小于最小值70的时候,所设置的自定义值将被忽略,系统将会使用默认值medium-dpi来显示。

另外,在搜寻这个属性的同事,从网上得到的另一个信息是关于WEBKIT对于这个属性不再进行支持,具体信息如下:

https://lists.webkit.org/pipermail/webkit-dev/2012-June/020914.html
There's some concern that target-densitydpi is used by some apps that
are bundled with Android, but folks appear willing to deprecate the
feature and to migrate those apps to using other mechanisms, such as
responsive images and CSS device units.

不过,经过我个人测试至少android目前的4.1.2对这个属性还是会有支持,或许之前的老版本也会有支持!

以上信息都是经过个人测试得到,如果有不同的见解,也希望大家能进行交流,谢谢!

另外,对于WEBKIT不在再这个属性的另一个解决办法是网络上提到比较多的二种方案:

1、responsive images

2、CSS device units

参考链接:https://www.jb51.net/article/121515.htm

参考链接:https://www.jb51.net/article/121531.htm

这二个东西到底如何,我也将会做进一步的了解。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助~如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持!

相关文章

  • Echarts图例组件的属性与源代码

    Echarts图例组件的属性与源代码

    图例组件展现了不同系列的标记(symbol),颜色和名字,可以通过点击图例控制哪些系列不显示,这篇文章主要给大家介绍了关于Echarts图例组件的相关资料,需要的朋友可以参考下
    2021-06-06
  • 手把手教你搭建ES6的开发运行环境

    手把手教你搭建ES6的开发运行环境

    如今ES6已经发布了有一段时间了,很多人学了ES6但是却没运行环境,下面这篇文章主要给大家介绍了关于搭建ES6运行环境的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • JavaScript中数组对象的那些自带方法介绍

    JavaScript中数组对象的那些自带方法介绍

    数组对象自带方法想必大家都有所耳闻,今天主要为大家介绍下JavaScript中数组对象的那些自带方法,感兴趣的你可以参考下哈,希望可以帮助你学习javascript
    2013-03-03
  • TypeScript中的交叉类型和联合类型示例讲解

    TypeScript中的交叉类型和联合类型示例讲解

    交叉类型简单来说就是通过&符号将多个类型进行合并成一个类型,然后用type来声明新生成的类型,联合类型和交叉类型比较相似,联合类型通过|符号连接多个类型从而生成新的类型,本文就这两个类型结合示例代码详细讲解,感兴趣的朋友跟随小编一起学习吧
    2022-12-12
  • 使用js/jquery获取指定class名称的3种方式总结

    使用js/jquery获取指定class名称的3种方式总结

    获取class的值其实非常简单,这篇文章主要给大家介绍了关于总结使用js/jquery获取指定class名称的3种方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • JS作用域闭包、预解释和this关键字综合实例解析

    JS作用域闭包、预解释和this关键字综合实例解析

    这篇文章主要介绍了JS作用域闭包、预解释和this关键字,结合实例形式分析了javascript作用域闭包、预解释和this关键字在具体使用过程中的操作技巧与注意事项,需要的朋友可以参考下
    2016-12-12
  • 实用Javascript调试技巧分享(小结)

    实用Javascript调试技巧分享(小结)

    这篇文章主要介绍了实用Javascript调试技巧分享(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 获取select元素被选中的文本内容的js代码

    获取select元素被选中的文本内容的js代码

    获取select元素被选中的文本内容的方法有很多,本文为大家介绍下使用javascript来轻松实现下
    2014-01-01
  • 微信小程序云开发如何实现数据库自动备份实现

    微信小程序云开发如何实现数据库自动备份实现

    这篇文章主要介绍了小程序云开发 数据库自动备份实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • uniapp app 人脸识别的实现示例

    uniapp app 人脸识别的实现示例

    本文主要介绍了uniapp app 人脸识别的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论