【发布时间】:2015-10-24 12:55:18
【问题描述】:
我现在尝试了几个小时在特定屏幕尺寸(>60em 和
这是一个 jsfiddle:http://jsfiddle.net/Vanilla__/4q26ngmg/1/
简化的 HTML:
<body>
<header>Header</header>
<main>Main</main>
<aside>Aside</aside>
<div class="related">Related</div>
<footer>Footer</footer>
</body>
Javascript:
if(window.matchMedia("screen and (min-width: 60em) and (max-width: 90em)").matches) {
window.addEventListener("resize", function addWrapper(q) {
//Create div with id wrapper
var div = document.createElement('div');
div.id = "wrapper";
// Select aside
var selectDiv = document.querySelector("aside");
//clone
div.appendChild(selectDiv.cloneNode(true));
//Place the new wrapper at the right place in the HTML
selectDiv.parentNode.replaceChild(div, selectDiv);
//Add related to the wrapper so they're both in the wrapper
document.querySelector('#wrapper').appendChild(
document.querySelector('.related') );
});
}
我想添加一个“else”来删除孩子(使用removeChild)或删除事件监听器(使用removeEventListener)当有另一个屏幕尺寸时,但我得到的只是关于函数未定义的错误或其他错误我试试。
else {
window.removeEventListener("resize", addWrapper(q));
}
有谁知道当屏幕尺寸不是>60em 和
【问题讨论】:
-
我宁愿使用媒体查询来隐藏/显示某些分辨率的元素
-
问题是我无法编辑HTML,所以我必须动态添加包装器。
标签: javascript html event-listener matchmedia