特定の画面サイズ (>60em および <90em) で 2 つの div (aside および .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') );
});
}
別の画面サイズがあるときに子を削除する(removeChildを使用)またはeventListenerを削除する(removeEventListenerを使用)ために「else」を追加したかったのですが、関数が定義されていないというエラーやその他のエラーが表示されます。
else {
window.removeEventListener("resize", addWrapper(q));
}
画面サイズが >60em および <90em でない場合にラッパーを削除する方法を知っている人はいますか? 私はJavascriptの新人です(明らかかもしれません;))。どんな助けでも大歓迎です。