I’m trying to create filterable gallery with differents buttons but when I click on them the filter is working but that let empty space in the gallery for the other pictures. I tried to use different script from the forum but that always let empty space.
This is an exemple of the HTML :
JavaScript
x
65
65
1
<section>
2
<ul>
3
<li class="list active" data-filter="Tout">Tout</li>
4
<li class="list" data-filter="Langue">Langue</li>
5
<li class="list" data-filter="Informatique">Informatique</li>
6
<li class="list" data-filter="Design">Design</li>
7
<li class="list" data-filter="Autre">Autre</li>
8
</ul>
9
10
<div class="post-slider">
11
<i class="fas fa-chevron-left prev"></i>
12
<i class="fas fa-chevron-right next"></i>
13
14
<!--FORMATION INFORMATIQUE-->
15
16
<div class="post-wrapper">
17
18
<div class="post Informatique">
19
<img src="informatique 1.jpg" alt="" class="slider-image">
20
<div class="post-info">
21
<h4><a href="#">Formation en Informatique</a></h4>
22
<i class="fas fa-book">Apprenez l'informatique !</i>
23
</br>
24
<i class="fas fa-check">Formation avec une certification à la fin !</i>
25
</div>
26
</div>
27
28
<div class="post Langue">
29
<img src="langue1.png" alt="" class="slider-image">
30
<div class="post-info">
31
<h4><a href="#">Formation en Anglais</a></h4>
32
<i class="fas fa-book">Apprenez l'Anglais !</i>
33
34
</br>
35
<i class="fas fa-check">Formation avec une certification à la fin !</i>
36
</div>
37
</div>
38
39
40
<div class="post Design">
41
<img src="design1.png" alt="" class="slider-image">
42
<div class="post-info">
43
<h4><a href="#">Formation Photoshop</a></h4>
44
<i class="fas fa-book">Apprenez l'utilisation de Photoshop !</i>
45
46
</br>
47
<i class="fas fa-check">Formation avec une certification à la fin !</i>
48
</div>
49
</div>
50
51
<div class="post Autre">
52
<img src="autre1.jpg" alt="" class="slider-image">
53
<div class="post-info">
54
<h4><a href="#">Formation Secrétariat</a></h4>
55
<i class="fas fa-book">Apprenez le Secrétariat</i>
56
57
</br>
58
<i class="fas fa-check">Formation avec une certification à la fin !</i>
59
</div>
60
</div>
61
62
</div>
63
</div>
64
</section>
65
And the JavaScript :
JavaScript
1
49
49
1
$('.post-wrapper').slick({
2
slidesToShow: 3,
3
slidesToScroll: 1,
4
autoplaySpeed: 2250,
5
nextArrow:$('.next'),
6
prevArrow:$('.prev'),
7
infinite:true,
8
responsive: [
9
{
10
breakpoint: 1024,
11
settings: {
12
slidesToShow: 3,
13
slidesToScroll: 3,
14
infinite: true,
15
dots: true
16
}
17
},
18
{
19
breakpoint: 600,
20
settings: {
21
slidesToShow: 2,
22
slidesToScroll: 2
23
}
24
},
25
{
26
breakpoint: 480,
27
settings: {
28
slidesToShow: 1,
29
slidesToScroll: 1
30
}
31
}
32
]
33
});
34
35
$('.list').click(function(){
36
const value = $(this).attr('data-filter');
37
if(value == 'Tout'){
38
$('.post').show('1000');
39
}
40
else{
41
$('.post').not('.'+value).hide('1000')
42
$('.post').filter('.'+value).show('1000')
43
}
44
})
45
$('.list').click(function(){
46
$(this).addClass('active').siblings().removeClass('active');
47
})
48
});
49
This is the code pen : https://codepen.io/MrBonsoir/pen/abJGxPv
Thanks for your help
Advertisement
Answer
Slick slider has its own filtering methods. You can use them
JavaScript
1
48
48
1
$(document).ready(function() {
2
$('.post-wrapper').slick({
3
slidesToShow: 3,
4
slidesToScroll: 1,
5
autoplaySpeed: 2250,
6
nextArrow: $('.next'),
7
prevArrow: $('.prev'),
8
infinite: true,
9
responsive: [{
10
breakpoint: 1024,
11
settings: {
12
slidesToShow: 3,
13
slidesToScroll: 3,
14
infinite: true,
15
dots: true
16
}
17
},
18
{
19
breakpoint: 600,
20
settings: {
21
slidesToShow: 2,
22
slidesToScroll: 2
23
}
24
},
25
{
26
breakpoint: 480,
27
settings: {
28
slidesToShow: 1,
29
slidesToScroll: 1
30
}
31
}
32
]
33
});
34
35
$('.list').click(function() {
36
if(!$(this).is('.active')){
37
var category = $(this).data('filter'),
38
slider = $('.post-wrapper');
39
40
$(this).addClass('active').siblings().removeClass('active');
41
42
slider.slick('slickUnfilter'); //reset slider filter
43
if(category != 'Tout'){
44
slider.slick('slickFilter','.'+category);
45
}
46
}
47
})
48
});
JavaScript
1
113
113
1
@import url('https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,800,900&display=swap');
2
* {
3
font-family: 'Poppins', sans-serif;
4
margin: 0;
5
padding: 0;
6
box-sizing: border-box;
7
}
8
9
.post-slider {
10
position: relative;
11
}
12
13
.post-slider .next {
14
position: absolute;
15
top: 50%;
16
right: 30px;
17
font-size: 2em;
18
color: #2980B9;
19
cursor: pointer;
20
}
21
22
.post-slider .prev {
23
position: absolute;
24
top: 50%;
25
left: 30px;
26
font-size: 2em;
27
color: #2980B9;
28
cursor: pointer;
29
}
30
31
.post-slider .post-wrapper {
32
width: 84%;
33
height: 350px;
34
margin: 0px auto;
35
overflow: hidden;
36
padding: 10px 0px 10px 0px;
37
}
38
39
@keyframes fadeIn{
40
from{
41
opacity: 0;
42
}
43
to{
44
opacity: 1;
45
}
46
}
47
.post-slider .post-wrapper .post {
48
height: 300px;
49
width: 330px;
50
margin: 0px 10px;
51
display: inline-block;
52
background: #6DD5FA;
53
border-radius: 5px;
54
box-shadow: 1rem 1rem 1rem -1rem #a0a0a033;
55
animation: fadeIn .5s ease;
56
}
57
58
.post-slider .post-wrapper .post .post-info {
59
height: 130px;
60
padding: 0px 5px;
61
}
62
63
.post-slider .post-wrapper .post .slider-image {
64
width: 100%;
65
height: 200px;
66
border-top-left-radius: 5px;
67
border-top-right-radius: 5px;
68
}
69
70
.post-slider h4 {
71
padding: 5px;
72
font-family: Arial, Helvetica, sans-serif;
73
color: #fff
74
}
75
76
.post-slider a {
77
text-decoration: none;
78
color: inherit;
79
}
80
81
.page-wrapper a:hover {
82
color: black;
83
}
84
85
86
/* FILTRE BOUTON */
87
88
section {
89
padding: 20px;
90
margin: 40px auto;
91
}
92
93
section ul {
94
display: flex;
95
margin-bottom: 10px;
96
}
97
98
section ul li {
99
list-style: none;
100
background: #eee;
101
padding: 8px 20px;
102
margin: 8px;
103
letter-spacing: 1px;
104
cursor: pointer;
105
}
106
107
section ul li.active {
108
background: #2980B9;
109
}
110
111
section ul li:hover {
112
background: #2980B9;
113
}
JavaScript
1
69
69
1
<link href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" rel="stylesheet"/>
2
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
3
<script src="https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script>
4
<link href="http://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css" rel="stylesheet" />
5
6
<section>
7
<ul>
8
<li class="list active" data-filter="Tout">Tout</li>
9
<li class="list" data-filter="Langue">Langue</li>
10
<li class="list" data-filter="Informatique">Informatique</li>
11
<li class="list" data-filter="Design">Design</li>
12
<li class="list" data-filter="Autre">Autre</li>
13
</ul>
14
15
<div class="post-slider">
16
<i class="fas fa-chevron-left prev"></i>
17
<i class="fas fa-chevron-right next"></i>
18
19
<!--FORMATION INFORMATIQUE-->
20
21
<div class="post-wrapper">
22
23
<div class="post Informatique">
24
<img src="informatique 1.jpg" alt="" class="slider-image">
25
<div class="post-info">
26
<h4><a href="#">Formation en Informatique</a></h4>
27
<i class="fas fa-book">Apprenez l'informatique !</i>
28
<br>
29
<i class="fas fa-check">Formation avec une certification à la fin !</i>
30
</div>
31
</div>
32
33
<div class="post Langue">
34
<img src="langue1.png" alt="" class="slider-image">
35
<div class="post-info">
36
<h4><a href="#">Formation en Anglais</a></h4>
37
<i class="fas fa-book">Apprenez l'Anglais !</i>
38
39
<br>
40
<i class="fas fa-check">Formation avec une certification à la fin !</i>
41
</div>
42
</div>
43
44
45
<div class="post Design">
46
<img src="design1.png" alt="" class="slider-image">
47
<div class="post-info">
48
<h4><a href="#">Formation Photoshop</a></h4>
49
<i class="fas fa-book">Apprenez l'utilisation de Photoshop !</i>
50
51
<br>
52
<i class="fas fa-check">Formation avec une certification à la fin !</i>
53
</div>
54
</div>
55
56
<div class="post Autre">
57
<img src="autre1.jpg" alt="" class="slider-image">
58
<div class="post-info">
59
<h4><a href="#">Formation Secrétariat</a></h4>
60
<i class="fas fa-book">Apprenez le Secrétariat</i>
61
62
<br>
63
<i class="fas fa-check">Formation avec une certification à la fin !</i>
64
</div>
65
</div>
66
67
</div>
68
</div>
69
</section>