查找设备宽度和回显元视口规则
Finding device width and echoing meta viewport rule
我正在寻找适合我的情况的解决方案。基本上,我需要对设备宽度使用多个视口规则。
类似于:
<meta name="viewport" content="initial-scale=0.4, width=400">
<meta name="viewport" content="initial-scale=0.6, width=700">
<meta name="viewport" content="initial-scale=0.8, width=1000">
但正如我们所知,我们只能使用一个视口规则,与媒体查询不同,视口规则的 "width" 参数中没有 (min-width) 和 (max-width)。我想要做的是,使用 Javascript 获取用户所在设备的宽度,然后基于此回显元视口规则。
说如果宽度小于500px大于400px,那么它会回显一条规则。如果没有,其他一些规则.. 希望我是有道理的。我确信这是可以实现的,但我没能实现它。
非常感谢任何帮助!提前致谢!
看看这个简单的代码片段,它允许您获取元内容信息和屏幕宽度:
function getMetaContentByName(name, content) {
var content = (content == null) ? 'content' : content;
return document.querySelector("meta[name='" + name + "']").getAttribute(content);
}
let metaTag = getMetaContentByName("viewport", "content")
console.log(metaTag)
let width = window.screen.width
console.log(width)
<meta name="viewport" content="initial-scale=0.4, width=400">
现在你可以创建这样的东西了:
let screen = {
width: window.screen.width,
height: window.screen.height
}
if (screen.width < 480) {
document.getElementById("viewport").setAttribute("content", "initial-scale=0.4, width=480");
} else if (screen.width < 720) {
document.getElementById("viewport").setAttribute("content", "initial-scale=0.7, width=720");
}
<meta id="viewport" name=viewport content="width=device-width; initial-scale=1">
我还找到了一个更直接、更简单的解决方案。那是通过使用 screen.width 属性并检查宽度范围,然后重置视口元标记的属性。它看起来像这样:
<meta id="vp" name="viewport" content="width=device-width, initial-scale=0.3">
<script>
window.onload = function() {
if (screen.width >= 300 && screen.width < 500) {
var mvp = document.getElementById('vp');
mvp.setAttribute('content','initial-scale=0.2,width=device-width');
}
else if (screen.width > 500 && screen.width < 600) {
var mvp = document.getElementById('vp');
mvp.setAttribute('content','initial-scale=0.4,width=device-width');
}
else if (screen.width > 600 && screen.width < 700) {
var mvp = document.getElementById('vp');
mvp.setAttribute('content','initial-scale=0.5,width=device-width');
}}
这样你可以加载不同的视口比例,这正是我需要的。从这里归功于@Cpncrunch:Achieving min-width with viewport meta tag
我正在寻找适合我的情况的解决方案。基本上,我需要对设备宽度使用多个视口规则。 类似于:
<meta name="viewport" content="initial-scale=0.4, width=400">
<meta name="viewport" content="initial-scale=0.6, width=700">
<meta name="viewport" content="initial-scale=0.8, width=1000">
但正如我们所知,我们只能使用一个视口规则,与媒体查询不同,视口规则的 "width" 参数中没有 (min-width) 和 (max-width)。我想要做的是,使用 Javascript 获取用户所在设备的宽度,然后基于此回显元视口规则。
说如果宽度小于500px大于400px,那么它会回显一条规则。如果没有,其他一些规则.. 希望我是有道理的。我确信这是可以实现的,但我没能实现它。
非常感谢任何帮助!提前致谢!
看看这个简单的代码片段,它允许您获取元内容信息和屏幕宽度:
function getMetaContentByName(name, content) {
var content = (content == null) ? 'content' : content;
return document.querySelector("meta[name='" + name + "']").getAttribute(content);
}
let metaTag = getMetaContentByName("viewport", "content")
console.log(metaTag)
let width = window.screen.width
console.log(width)
<meta name="viewport" content="initial-scale=0.4, width=400">
现在你可以创建这样的东西了:
let screen = {
width: window.screen.width,
height: window.screen.height
}
if (screen.width < 480) {
document.getElementById("viewport").setAttribute("content", "initial-scale=0.4, width=480");
} else if (screen.width < 720) {
document.getElementById("viewport").setAttribute("content", "initial-scale=0.7, width=720");
}
<meta id="viewport" name=viewport content="width=device-width; initial-scale=1">
我还找到了一个更直接、更简单的解决方案。那是通过使用 screen.width 属性并检查宽度范围,然后重置视口元标记的属性。它看起来像这样:
<meta id="vp" name="viewport" content="width=device-width, initial-scale=0.3">
<script>
window.onload = function() {
if (screen.width >= 300 && screen.width < 500) {
var mvp = document.getElementById('vp');
mvp.setAttribute('content','initial-scale=0.2,width=device-width');
}
else if (screen.width > 500 && screen.width < 600) {
var mvp = document.getElementById('vp');
mvp.setAttribute('content','initial-scale=0.4,width=device-width');
}
else if (screen.width > 600 && screen.width < 700) {
var mvp = document.getElementById('vp');
mvp.setAttribute('content','initial-scale=0.5,width=device-width');
}}
这样你可以加载不同的视口比例,这正是我需要的。从这里归功于@Cpncrunch:Achieving min-width with viewport meta tag