Как создать адаптивную галерею изображений с помощью HTML, CSS, jQuery и Bootstrap?
С появлением новых фреймворков в веб-технологиях стало довольно легко разрабатывать и реализовывать многофункциональные и адаптивные веб-страницы. Здесь мы собираемся разработать адаптивную галерею изображений с использованием HTML, CSS, jQuery и Bootstrap.
Возможности или функциональные возможности для реализации:
- Адаптивные изображения
- Адаптивная сетка
- Просмотрщик изображений
Предварительные требования: базовые знания HTML , CSS , JavaScript , jQuery и Bootstrap . Также пользователь должен знать, как работает сетка в Bootstrap .
Мы разделим полное решение на три разных раздела, в первом разделе мы создадим структуру галереи. Во втором разделе мы создадим галерею с помощью CSS. И в последнем разделе он будет доступен для ответа на взаимодействия пользователя.
Создание структуры: инициализируйте HTML-макет и адаптивные изображения, но мы будем прикреплять изображения с помощью jQuery в формате массива.
- HTML-код:
<!DOCTYPE html>
<
html
>
<
meta
charset
=
"utf-8"
>
<
head
>
<
link
rel
=
"stylesheet"
href
=
<
script
src
=
</
script
>
<
script
src
=
</
script
>
</
head
>
<
body
>
<
br
>
<
br
>
<
center
>
<
h1
class
=
"text text-success"
>GeeksforGeeks</
h1
>
<
b
>Responsive image gallery</
b
>
</
center
>
<
br
>
<
br
>
<
div
class
=
"container-fluid"
>
<
center
>
<
div
id
=
gallery
>
<!-- Content is appended here -->
</
div
>
</
center
>
<!-- Modal -->
<
div
class
=
"modal fade"
id
=
"myModal"
role
=
"dialog"
>
<
div
class
=
"modal-dialog"
>
<!-- Modal content-->
<
div
class
=
"modal-content"
>
<
div
class
=
"modal-header"
>
<
button
type
=
"button"
class
=
"close"
data-dismiss
=
"modal"
>
×
</
button
>
</
div
>
<
div
class
=
"modal-body"
>
</
div
>
<
div
class
=
"modal-footer"
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
body
>
</
html
>
Структура проектирования: мы добавим свойства CSS в соответствии с требованиями проекта.
- Код CSS:
<
style
>
img {
border-radius: 8px;
}
.container-fluid {
margin-left: 12px;
margin-right: 12px
}
.contain {
padding-top: 8px;
padding-bottom: 8px;
}
</
style
>
- Код начальной загрузки: мы будем использовать модальную загрузку в качестве средства просмотра изображений и соответствующим образом модифицировать ее в соответствии с нашими требованиями. Все ненужные компоненты модального окна мы сделаем прозрачными. Помните, что мы добавляем изображение в модальное окно, поэтому нам нужно использовать метод on () для добавления функций для таких селекторов.
<
style
>
/* For overriding box-shadow and other default
effects of modal and it's children */
.modal,
.modal-content,
.modal-header,
.modal-footer {
background-color: transparent;
border: 0px;
color: white;
/* Disable box shadow for different browsers */
-webkit-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
-moz-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
}
.modal-dialog {
width: 100%;
height: 50%;
margin-top: 8px;
}
.close {
color: white;
opacity: 0.8;
}
.modal-body {
height: 75%;
}
</
style
>
Раздел ответа: в этом разделе мы будем прикреплять все изображения для адаптивной галереи, чтобы они реагировали на пользователя. Ниже приведена сетка, которую мы будем использовать для отображения изображений в галерее изображений. Так как классы использовали col-sm-6 col-md-2 . Логика - это 2 сетки для средних точек останова на экране и 6 сеток для больших точек останова. Они также разделяются дальше, когда контент перекрывается, тем самым представляя собой единую сетку.
- Код jQuery: Ниже приведен сценарий для добавления таким образом. Мы будем предполагать, что мы получаем изображения с сервера (в виде массива URL-адресов изображений в JavaScript). Теперь мы соответствующим образом добавим изображение на панель содержимого нашей страницы. Ниже представлена реализация того же
<script>
// Taking Array of Image Addresses
// Suppose it as information from the server
// Modify this for different address
a = [
];
var
x = 0;
for
(
var
i = 0; x < a.length; i++) {
var
append =
"<div class='row'>"
;
for
(
var
j = 0; j < 6 && x < a.length; j++) {
append += `
<div class=
"contain col-sm-6 col-md-2"
>
<img class=
"img-responsive"
src=` + a[x++] + `>
</div>
`;
}
append +=
'</div>'
;
appender(append);
}
// Function to append the data
function
appender(x) {
$(
'#gallery'
).html(
function
(i, original_html) {
return
(original_html + x);
});
}
// For Image Modal
$(document).on(
'click'
,
'img'
,
function
() {
imgAddr = $(
this
).attr(
'src'
);
data =
"<center><img src="
+ imgAddr +
" width='50%'>"
;
$(
'#myModal'
).find(
'.modal-body'
).html(data);
$(
'#myModal'
).modal();
});
</script>
Окончательное решение: это комбинация вышеуказанных трех частей, это полный код адаптивной галереи изображений.
- Код:
<!DOCTYPE html>
<
html
>
<
meta
charset
=
"utf-8"
>
<
head
>
<
link
rel
=
"stylesheet"
href
=
<
script
src
=
</
script
>
<
script
src
=
</
script
>
</
head
>
<
style
>
img {
border-radius: 8px;
}
.container-fluid {
margin-left: 12px;
margin-right: 12px
}
.contain {
padding-top: 8px;
padding-bottom: 8px;
}
/* For overriding box-shadow and other default
effects of modal and it's children */
.modal,
.modal-content,
.modal-header,
.modal-footer {
background-color: transparent;
border: 0px;
color: white;
/* Disable box shadow for different browsers */
-webkit-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
-moz-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
}
.modal-dialog {
width: 100%;
height: 50%;
margin-top: 8px;
}
.close {
color: white;
opacity: 0.8;
}
.modal-body {
height: 75%;
}
</
style
>
<
body
>
<
br
>
<
br
>
<
center
>
<
h1
class
=
"text text-success"
>GeeksforGeeks</
h1
>
<
b
>Responsive image gallery</
b
>
</
center
>
<
br
>
<
br
>
<
div
class
=
"container-fluid"
>
<
center
>
<
div
id
=
gallery
>
<!-- Content is appended here -->
</
div
>
</
center
>
<!-- Modal -->
<
div
class
=
"modal fade"
id
=
"myModal"
role
=
"dialog"
>
<
div
class
=
"modal-dialog"
>
<!-- Modal content-->
<
div
class
=
"modal-content"
>
<
div
class
=
"modal-header"
>
<
button
type
=
"button"
class
=
"close"
data-dismiss
=
"modal"
>
×
</
button
>
</
div
>
<
div
class
=
"modal-body"
>
</
div
>
<
div
class
=
"modal-footer"
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
script
>
// Taking Array of Image Addresses
// Suppose it as information from the server
// Modify this for different address
a = [
];
var x = 0;
for (var i = 0; x <
a.length
; i++) {
var append = "<div
class
=
'row'
>";
for (var j = 0; j <
6
&& x < a.length; j++) {
append += `
<div
class
=
"contain col-sm-6 col-md-2"
>
<
img
class
=
"img-responsive"
src=` + a[x++] + `>
</
div
>
`;
}
append += '</
div
>';
appender(append);
}
// Function to append the data
function appender(x) {
$('#gallery').html(function(i, original_html) {
return (original_html + x);
});
}
// For Image Modal
$(document).on('click', 'img', function() {
imgAddr = $(this).attr('src');
data = "<
center
><
img
src
=
" + imgAddr + "
width
=
'50%'
>";
$('#myModal').find('.modal-body').html(data);
$('#myModal').modal();
});
</
script
>
</
body
>
</
html
>
- Выход:
- Код CSS: