作为一种非常简单的“响应式设计”方法,我正在为我正在开发的网站提供两个版本的CSS:
我使用@media only screen and (max-device-width : 700px)
查询来分隔两组CSS规则。
我还使用此JavaScript代码段根据屏幕宽度分配视口元标记参数:
<script type="text/javascript">
var width = screen.width;
var height = screen.height;
var meta = document.createElement("meta");
var head = document.getElementsByTagName("head")[0];
if (width >= 700) {
meta.setAttribute("name", "viewport");
meta.setAttribute("content", "width=1000");
head.appendChild(meta);
} else if (width <700) {
meta.setAttribute("name", "viewport");
meta.setAttribute("content", "width=device-width; initial-scale=1; maximum-scale=1");
head.appendChild(meta);
};
</script>
如果设备的屏幕宽度大于&gt; = 700px,脚本会将视口的宽度设置为1000px,从而确保网站的非移动版本的整个宽度适合屏幕,并设置初始比例如果屏幕宽度小于700px,则为1。
再次,为了澄清,我想要完成的是:当屏幕宽度为&gt; 700px,显示常规(非移动)网站;当屏幕宽度<= 700px时,显示流线型(移动)网站。
结果让我感到惊讶:
从我看到的情况来看,我的结论是移动设备很乱。大多数设备似乎将最高尺寸识别为最大宽度,但是一些(亚马逊Kindle 2)似乎将较低尺寸视为“宽度”而较高尺寸视为“高度”。有些设备的屏幕尺寸低于700px,但“假装”有更高的尺寸。
当我尝试使用700的max-device-width
作为媒体查询的定义因素时,我似乎使用了错误的逻辑。
问题:创建一个媒体查询,使用以下规则覆盖尽可能多的设备:“如果屏幕的当前宽度为&lt; = 700px,请应用移动CSS” - 什么应该是适当的附加条件?
答案 0 :(得分:1)
您是否已加入viewport
元标记?
https://developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag
看到你的viewport
脚本后,我想知道这是否导致问题
var width = screen.width;
if (width >= 700) {
meta.setAttribute("name", "viewport");
meta.setAttribute("content", "width=1000");
head.appendChild(meta);
}
width
变量不会被设置为超过700,因为在查询屏幕宽度时,设备将默认为缩放页面?
答案 1 :(得分:1)
正如Duncan所提到的,添加viewport
标记。
理想情况下将其设置为:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
然后调整媒体查询以使用max-width
而不是max-device-width
。
我有兴趣在进行这些更改后看到您的测试结果。