Для реализации функциональности создания карточек с изображениями на странице с использованием модального окна в JavaScript, вам необходимо выполнить несколько шагов. Вот пример кода, который поможет вам создать эту логику:
### HTML часть
1. Создайте структуру HTML, включая модальное окно и список для карточек:
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Карточки с изображениями</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<button id="open-modal">Добавить карточку</button>
<ul class="places__list"></ul>
<template id="card-template">
<li class="places__item card">
<img class="card__image" src="" alt="" />
<button type="button" class="card__delete-button"></button>
<div class="card__description">
<h2 class="card__title"></h2>
<button type="button" class="card__like-button"></button>
</div>
</li>
</template>
<div id="modal" class="modal">
<div class="modal-content">
<span class="close">×</span>
<h2>Добавить карточку</h2>
<input type="text" id="card-title" placeholder="Название карточки">
<input type="text" id="card-image-url" placeholder="Ссылка на изображение">
<button id="save-card">Сохранить</button>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
```
### CSS часть
Добавьте немного стилей для модального окна (опционально):
```css
.modal {
display: none;
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
padding-top: 60px;
}
.modal-content {
background-color: #fefefe;
margin: 5% auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
}
```
### JavaScript часть
Добавьте следующий JavaScript для обработки логики добавления карточек:
```javascript
document.addEventListener('DOMContentLoaded', () => {
const modal = document.getElementById('modal');
const openModalButton = document.getElementById('open-modal');
const closeModalButton = document.querySelector('.close');
const saveCardButton = document.getElementById('save-card');
const cardTitleInput = document.getElementById('card-title');
const cardImageUrlInput = document.getElementById('card-image-url');
const placesList = document.querySelector('.places__list');
// Открыть модальное окно
openModalButton.addEventListener('click', () => {
modal.style.display = "block";
});
// Закрыть модальное окно
closeModalButton.addEventListener('click', () => {
modal.style.display = "none";
});
window.addEventListener('click', (event) => {
if (event.target === modal) {
modal.style.display = "none";
}
});
// Сохранить карточку
saveCardButton.addEventListener('click', () => {
const title = cardTitleInput.value;
const imageUrl = cardImageUrlInput.value;
if (title && imageUrl) {
const template = document.getElementById('card-template').content.cloneNode(true);
const cardItem = template.querySelector('.card');
const cardImage = template.querySelector('.card__image');
const cardTitle = template.querySelector('.card__title');
cardImage.src = imageUrl;
cardImage.alt = title;
cardTitle.textContent = title;
// Добавляем карточку в список
placesList.appendChild(cardItem);
// Очистить поля ввода
cardTitleInput.value = '';
cardImageUrlInput.value = '';
// Закрываем модальное окно
modal.style.display = "none";
} else {
alert('Пожалуйста,