我现在尝试了几个小时在特定屏幕尺寸(>60em 和 <90em)的两个 div(除了和 .related)周围添加一个包装器。我正在使用 matchMedia 和 eventListener 执行此操作。包装器似乎添加在正确的位置,但问题是即使不满足大小条件,它仍然存在。
这是一个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)或删除eventListener(使用removeEventListener),但我得到的只是关于该函数未定义的错误或我尝试的其他错误。
else {
window.removeEventListener("resize", addWrapper(q));
}
有谁知道当屏幕尺寸不是 >60em 和 <90em 时如何移除包装?我是 Javascript 菜鸟(可能很清楚;))。任何帮助表示赞赏。