"Portfolio Gallery with Filter"
Bootstrap 4.1.1 Snippet by agustinguanipa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<div class="jumbotron text-center" style="margin-bottom:0; background-color: #FBFCFF;">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1>Portafolio</h1>
<hr class="my-4">
<div align="center">
<button class="btn btn-primary active filter-button" data-filter="todo">Todo</button>
<button class="btn btn-primary filter-button" data-filter="retratos">Retratos</button>
<button class="btn btn-primary filter-button" data-filter="paisajes">Paisajes</button>
<button class="btn btn-primary filter-button" data-filter="disenos">Diseños</button>
<div class="row">
<div class="row">
<div class="col-lg-3 col-md-4 col-xs-6 thumb filter retratos">
<a class="thumbnail" href="#" data-image-id="" data-toggle="modal" data-title=""
data-image="https://images.pexels.com/photos/50631/pexels-photo-50631.jpeg?cs=srgb&dl=aerial-bridge-buildings-50631.jpg&fm=jpg"
data-target="#image-gallery">
<img class="img-thumbnail"
src="https://images.pexels.com/photos/50631/pexels-photo-50631.jpeg?cs=srgb&dl=aerial-bridge-buildings-50631.jpg&fm=jpg"
alt="Retratos">
</a>
</div>
<div class="col-lg-3 col-md-4 col-xs-6 thumb filter retratos">
<a class="thumbnail" href="#" data-image-id="" data-toggle="modal" data-title=""
data-image="https://images.pexels.com/photos/34629/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"
data-target="#image-gallery">
<img class="img-thumbnail"
src="https://images.pexels.com/photos/34629/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260"
alt="Retratos">
</a>
</div>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
3
4
5
6
7
8
9
10
11
12
13
.btn:focus, .btn:active, button:focus, button:active {
outline: none !important;
box-shadow: none !important;
}
#image-gallery .modal-footer{
display: block;
}
.thumb{
margin-top: 15px;
margin-bottom: 15px;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
let modalId = $('#image-gallery');
$(document)
.ready(function () {
loadGallery(true, 'a.thumbnail');
//This function disables buttons when needed
function disableButtons(counter_max, counter_current) {
$('#show-previous-image, #show-next-image')
.show();
if (counter_max === counter_current) {
$('#show-next-image')
.hide();
} else if (counter_current === 1) {
$('#show-previous-image')
.hide();
}
}
/**
*
* @param setIDs Sets IDs when DOM is loaded. If using a PHP counter, set to false.
* @param setClickAttr Sets the attribute for the click handler.
*/
function loadGallery(setIDs, setClickAttr) {
let current_image,
selector,
counter = 0;
$('#show-next-image, #show-previous-image')
.click(function () {
if ($(this)
.attr('id') === 'show-previous-image') {
current_image--;
} else {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Related: See More


Questions / Comments: