在媒体查询中,我见过max-width
、min-width
、 max-device-width
和。min-device-width
orientation
从 JavaScript 的角度来看,这些是指document.body.clientWidth
? 或者window.outerWidth
?我也看到有document.body.offsetWidth
。
是否有资源列出所有有效的 css 媒体查询参数以及与之匹配的 JavaScript 属性?
在媒体查询中,我见过max-width
、min-width
、 max-device-width
和。min-device-width
orientation
从 JavaScript 的角度来看,这些是指document.body.clientWidth
? 或者window.outerWidth
?我也看到有document.body.offsetWidth
。
是否有资源列出所有有效的 css 媒体查询参数以及与之匹配的 JavaScript 属性?
因此,您需要一个在 JavaScript 中等效的所有有效 css 媒体查询参数的列表。
让我们尝试这样做,依靠 媒体查询 W3C 规范。
似乎无法直接使用 JavaScript 属性/方法检索媒体类型(屏幕、打印等) ,因此您必须依赖变通方法、脚本或插件。
我发现:
window.innerWidth
// document.body.clientWidth
(document.documentElement.clientWidth
见下文)
window.innerHeight
// document.body.clientHeight
(document.documentElement.clientHeight
见下文)
screen.width
screen.height
window.orientation
(见下文)
screen.colorDepth
screen.pixelDepth
/ window.devicePixelRatio
(见下文)
鉴于浏览器之间的差异,您需要一个函数来获取width
和height
. 前段时间我发现了这个跨浏览器的片段(不记得在哪里):
var w=window,d=document,e=d.documentElement,g=d.getElementsByTagName('body')[0];
var width = w.innerWidth||e.clientWidth||g.clientWidth;
var height = w.innerHeight||e.clientHeight||g.clientHeight;
“宽度”媒体特征的值与“高度”媒体特征的值的比率
width
/ height
(见上文)
'device-width' 值与 'device-height' 值的比值</p>
screen.width
/screen.height
输出设备的像素密度。“dpi”和“dpcm”单位描述了输出设备的分辨率,即设备像素的密度。
所以它不是许多人认为的屏幕尺寸(宽 x 高)!
var resolution = window.devicePixelRatio||screen.pixelDepth||screen.colorDepth;
screen.pixelDepth
仅适用于 Firefox,您可以在 quirksmode.org 上window.devicePixelRatio
找到兼容性。
在这里,我读到这screen.colorDepth
可以作为后备。
单色帧缓冲区中每个像素的位数。如果设备不是单色设备,则输出设备值为 0
if ( screen.colorDepth == 2) {
var monochrome = /* retrieve resolution here, see above */;
}else{
var monochrome = 0;
}
当“高度”媒体特征的值大于或等于“宽度”媒体特征的值时为“纵向”。否则“方向”就是“风景”。
if ( width > height ) {
var orientation = 'landscape';
}else{
var orientation = 'potrait';
}
并非所有浏览器都支持该window.orientation
属性,它返回一个数值,因此它与W3C 所期望的方向没有直接关系。在 SO 上查看此答案以获取更多信息。
我找不到使用 JavaScript 检测以下媒体功能的方法(我认为不可能):
screen.availHeight
= 屏幕高度减去界面功能(例如任务栏)screen.availWidth
= 屏幕宽度减去界面功能(例如任务栏)min-width: 和 max-width: 查询指的是逻辑窗口(其大小随着用户更改浏览器窗口的大小而变化),而 min-device-width: 和 max-device-width (和方向: ) 查询是指物理屏幕/视口(一旦“meta...viewport...”语句修复它,其大小就不会改变)。
根据您的目标和受众,您可能会找到比媒体查询更适合的替代方法。您可能会发现细读http://www.ckollars.org/alternative-to-media-queries.html很有帮助