Код: Выделить всё
Promise.all(Array.from(document.images).filter(img => !img.complete).map(img => new Promise(resolve => { img.onload = img.onerror = resolve; }))).then(() => { var elem = document.querySelector('.grid');
var msnry = new Masonry( elem, {
// options
itemSelector: '.grid-item', columnWidth: 210, gutter: 10, horizontalOrder: true});
});
let boxes = document.querySelectorAll('.image')
function liveSearch() {
let search_query = document.getElementById("searchbox").value;
for (var i = 0; i < boxes.length; i++) {
if (boxes[i].getAttribute('alt').toLowerCase()
.includes(search_query.toLowerCase())) {
boxes[i].classList.remove("is-hidden");
} else {
boxes[i].classList.add("is-hidden");
}
}
}
let typingTimer;
let typeInterval = 500;
let searchInput = document.getElementById('searchbox');
searchInput.addEventListener('keyup', () => {
clearTimeout(typingTimer);
typingTimer = setTimeout(liveSearch, typeInterval);
});
< /code>
html < /p>
⌕[/b]
[img]/images/img1.png[/img]
[img]/images/img2.png[/img]
[img]/images/img3.png[/img]
< /code>
css < /p>
#searchbox {
width: 300px;
color: #ffffff;
background-color: #000000;
border-radius: 4px;
padding: 5px;
}
.is-hidden { display: none; }
.grid-item {
width: 210px;
margin-bottom: 10px;
}
.grid:after {
content: '';
display: block;
clear: both;
}
Я бы предпочел решение в ванили JS, если это возможно.
Подробнее здесь: https://stackoverflow.com/questions/797 ... os-masonry
Мобильная версия