[1, 2, 3, 4, 5].sort((a, b) => b % 2 - a % 2 || (a % 2 ? b - a : a - b))
<section class="wrapper">
<div class="item">Блок 1</div>
<div class="item">Блок 2</div>
<div class="item">Блок 3</div>
<div class="item">Блок 4</div>
<div class="item">Блок 5</div>
</section>
var itemListParent = document.querySelector('.wrapper');
var itemList = document.querySelectorAll('.item');
// сработает как appendChild (т.к. второй аргумент null) - поместит второй элемент в конец родительского.
itemListParent.insertBefore(itemList[1], null);
// сработает как того предполагает insertBefore() - вставит пятый элемент перед первым
itemListParent.insertBefore(itemList[4], itemList[0]);
const items = document.getElementsByClassName("item");
const tmp = items[0].innerHTML;
items[0].innerHTML = items[4].innerHTML;
items[4].innerHTML = tmp;
innerText
или textContent
<dialog class="popup">
<div class="layer">
...
</div>
<dialog>
document.querySelector('.layer').addEventListener('click', (e) => e.stopPropagation());
document.querySelector('.popup').addEventListener('click', (e) => e.target.close());
.button {
background: red;
border-color: transparent;
backgroud-clip: border-box; /* это значение по-умолчанию, можно не указывать, если не меняли */
}