При генерации блоков задайте атрибут
hidden всем блокам, начиная с шестого (чтобы первые 5 отображались)
<div class="content">
<div class="filter">
<p>Текст - 1</p>
</div>
<div class="filter">
<p>Текст - 2</p>
</div>
<div class="filter">
<p>Текст - 3</p>
</div>
<div class="filter">
<p>Текст - 4</p>
</div>
<div class="filter">
<p>Текст - 5</p>
</div>
<div class="filter" hidden>
<p>Текст - 6</p>
</div>
<div class="filter" hidden>
<p>Текст - 7</p>
</div>
<div class="filter" hidden>
<p>Текст - 8</p>
</div>
<div class="filter" hidden>
<p>Текст - 9</p>
</div>
<div class="filter" hidden>
<p>Текст - 10</p>
</div>
<p class="show_content">Показать остальное</p>
</div>
Далее на Jquery напишите код..
$(document).ready(() => {
$('body').on('click', '.show_content' , () => {
var scrollToProduct = $('.filter:hidden');
$('.filter:hidden:lt(5)').slideDown(1000);
if (scrollToProduct.length === 0) $('.show_content').hide() ;
$('html, body').animate({
scrollTop: scrollToProduct.offset().top
}, 1000);
});
});
$('.filter:hidden:lt(5)').slideDown(1000); - 5 можете заменить на любое значение, именно столько блоков будут отображаться при каждом нажатии на
"Показать остальное"
Также может быть будет полезным после нажатия на кнопку "Показать остальное", чтобы вас плавно скроллило на первый новый отобразившийся блок)
Либо, если Вам нужно, чтобы при нажатии на кнопку отображались
все блоки, то напишите:
$(document).ready(() => {
$('body').on('click', '.show_content' , () => {
var scrollToProduct = $('.filter:hidden');
$('.filter:hidden').slideDown(1000);
if (scrollToProduct.length === 0) $('.show_content').hide() ;
$('html, body').animate({
scrollTop: scrollToProduct.offset().top
}, 1000);
});
});
или примитивный вариант:
$(document).ready(() => {
$('body').on('click', '.show_content' , () => {
var scrollToProduct = $('.filter:hidden');
$('.filter:hidden').show();
if (scrollToProduct.length === 0) $('.show_content').hide() ;
});
});