Загрузка данных
<!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>
<header class="site-header">
<div class="header-container">
<div class="logo">Портфолио</div>
<nav class="navigation">
<ul class="nav-menu">
<li><a href="#hero">Главная</a></li>
<li><a href="#about">О себе</a></li>
<li><a href="#portfolio">Работы</a></li>
</ul>
<div class="burger-menu" id="burgerToggle">
<span></span>
<span></span>
<span></span>
</div>
</nav>
</div>
</header>
<main>
<section id="hero" class="hero-section">
<div class="container">
<h1 class="hero-title">Добро пожаловать в моё портфолио</h1>
<p class="hero-subtitle">Проектирование, разработка и создание современных веб-сайтов</p>
</div>
</section>
<section id="about" class="about-section">
<div class="container">
<h2>О себе</h2>
<p>Я начинающий веб-разработчик. Этот сайт-портфолио создан на основе практических и лабораторных работ второго семестра. Здесь собраны мои ключевые навыки, изученные технологии и примеры выполненных проектов.</p>
</div>
</section>
<section id="portfolio" class="portfolio-section">
<div class="container">
<h2>Мои работы и навыки</h2>
<div class="portfolio-grid">
<div class="portfolio-card">
<div class="card-image-box">
<img src="1.png" alt="Работа 1" onerror="this.style.display='none';">
</div>
<div class="card-content">
<h3>Практическая работа 1-5</h3>
<p>Разработка базовой семантической структуры веб-страниц, изучение основных тегов разметки HTML5.</p>
</div>
</div>
<div class="portfolio-card">
<div class="card-image-box">
<img src="2.png" alt="Работа 2" onerror="this.style.display='none';">
</div>
<div class="card-content">
<h3>Лабораторная работа 5</h3>
<p>Проектирование адаптивных интерфейсов и создание многоколоночных макетов с помощью CSS.</p>
</div>
</div>
<div class="portfolio-card">
<div class="card-image-box">
<img src="3.png" alt="Работа 3" onerror="this.style.display='none';">
</div>
<div class="card-content">
<h3>Практическая работа 6</h3>
<p>Работа с модульными сетками, создание карточек услуг и преимуществ для коммерческих сайтов.</p>
</div>
</div>
<div class="portfolio-card">
<div class="card-image-box">
<img src="4.png" alt="Работа 4" onerror="this.style.display='none';">
</div>
<div class="card-content">
<h3>Лабораторная работа 6-7</h3>
<p>Интеграция интерактивных элементов интерфейса, работа со скриптами автоматизации и валидацией.</p>
</div>
</div>
<div class="portfolio-card">
<div class="card-image-box">
<img src="5.png" alt="Работа 5" onerror="this.style.display='none';">
</div>
<div class="card-content">
<h3>Практическая работа 10-13</h3>
<p>Сложная верстка комплексных веб-форм, оптимизация стилей и создание адаптивного меню навигации.</p>
</div>
</div>
<div class="portfolio-card">
<div class="card-image-box">
<img src="6.png" alt="Работа 6" onerror="this.style.display='none';">
</div>
<div class="card-content">
<h3>Итоговый проект 17-18</h3>
<p>Сборка полноценного сайта-портфолио, валидация кода, подключение стилей и логики на JavaScript.</p>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="footer-container">
<p class="copyright">© 2026 Все права защищены. Автор проекта.</p>
<div class="social-links">
<a href="#" class="social-link">VK</a>
<a href="#" class="social-link">Telegram</a>
<a href="#" class="social-link">GitHub</a>
</div>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>
/* Сброс базовых отступов */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Times New Roman', Times, serif; /* Шрифт из методички */
font-size: 14pt; /* Размер шрифта из требований */
line-height: 1.5;
background-color: #f7f9fa;
color: #333333;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 40px 20px;
}
/* Шапка сайта — нежно-розовый оттенок по образцу первого фото */
.site-header {
background-color: #f3cfd4;
border-bottom: 2px solid #e0b4ba;
position: sticky;
top: 0;
z-index: 100;
}
.header-container {
max-width: 1200px;
margin: 0 auto;
padding: 15px 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-size: 18pt;
font-weight: bold;
color: #4a282d;
text-transform: uppercase;
letter-spacing: 1px;
}
.navigation {
display: flex;
align-items: center;
}
.nav-menu {
display: flex;
list-style: none;
gap: 25px;
}
.nav-menu a {
text-decoration: none;
color: #4a282d;
font-weight: bold;
transition: color 0.3s;
}
.nav-menu a:hover {
color: #ffffff;
}
/* Кнопка бургер-меню для мобильных (3 линии справа на макете) */
.burger-menu {
display: none; /* Скрыта на больших экранах */
flex-direction: column;
justify-content: space-between;
width: 24px;
height: 18px;
cursor: pointer;
}
.burger-menu span {
display: block;
height: 3px;
width: 100%;
background-color: #4a282d;
border-radius: 2px;
transition: 0.3s;
}
/* Секции контента */
.hero-section {
background-color: #ffffff;
text-align: center;
border-bottom: 1px solid #e1e4e6;
padding: 60px 0;
}
.hero-title {
font-size: 28pt;
color: #2c3e50;
margin-bottom: 15px;
}
.hero-subtitle {
font-size: 16pt;
color: #7f8c8d;
}
.about-section {
background-color: #f9fbfd;
border-bottom: 1px solid #e1e4e6;
}
.about-section h2, .portfolio-section h2 {
font-size: 22pt;
margin-bottom: 20px;
color: #2c3e50;
}
/* Сетка карточек (3 колонки в ряд по образцу) */
.portfolio-section {
background-color: #ffffff;
}
.portfolio-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 30px;
margin-top: 30px;
}
.portfolio-card {
background-color: #ffffff;
border: 1px solid #dcdde1;
border-radius: 4px;
overflow: hidden;
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
transition: transform 0.3s, box-shadow 0.3s;
}
.portfolio-card:hover {
transform: translateY(-5px);
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
}
/* Серо-голубые прямоугольники для картинок, как на макете */
.card-image-box {
width: 100%;
height: 200px;
background-color: #c5cbd8;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.card-image-box img {
width: 100%;
height: 100%;
object-fit: cover;
}
.card-content {
padding: 20px;
}
.card-content h3 {
font-size: 16pt;
margin-bottom: 10px;
color: #2c3e50;
}
.card-content p {
font-size: 12pt;
color: #555555;
line-height: 1.4;
}
/* Подвал (Footer) — темный цвет из палитры */
.site-footer {
background-color: #2c3e50;
color: #ffffff;
padding: 25px 20px;
border-top: 3px solid #f3cfd4;
}
.footer-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.copyright {
font-size: 12pt;
}
.social-links {
display: flex;
gap: 15px;
}
.social-link {
color: #f3cfd4;
text-decoration: none;
font-weight: bold;
font-size: 12pt;
transition: color 0.3s;
}
.social-link:hover {
color: #ffffff;
}
/* Адаптивная верстка (Responsive) */
@media (max-width: 992px) {
.portfolio-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
.portfolio-grid {
grid-template-columns: 1fr;
}
.header-container, .footer-container {
flex-direction: column;
gap: 15px;
text-align: center;
}
.burger-menu {
display: flex;
}
.nav-menu {
display: none;
}
}
// Скрипты интерактивности для сайта-портфолио
document.addEventListener('DOMContentLoaded', function() {
console.log('Сайт-портфолио успешно загружен!');
// Логика работы мобильного бургер-меню
const burgerToggle = document.getElementById('burgerToggle');
const navMenu = document.querySelector('.nav-menu');
if (burgerToggle) {
burgerToggle.addEventListener('click', function() {
if (navMenu.style.display === 'flex') {
navMenu.style.display = 'none';
} else {
navMenu.style.display = 'flex';
navMenu.style.flexDirection = 'column';
navMenu.style.position = 'absolute';
navMenu.style.top = '60px';
navMenu.style.left = '0';
navMenu.style.width = '100%';
navMenu.style.backgroundColor = '#f3cfd4';
navMenu.style.padding = '20px';
navMenu.style.boxShadow = '0 4px 6px rgba(0,0,0,0.1)';
}
});
}
// Плавная прокрутка (скролл) при клике на пункты меню
const links = document.querySelectorAll('.nav-menu a');
links.forEach(link => {
link.addEventListener('click', function(e) {
const href = this.getAttribute('href');
if (href.startsWith('#')) {
e.preventDefault();
const targetSection = document.querySelector(href);
if (targetSection) {
targetSection.scrollIntoView({
behavior: 'smooth'
});
}
}
});
});
// Мониторинг загрузки картинок в консоли разработчика
const images = document.querySelectorAll('.card-image-box img');
images.forEach((img, index) => {
img.addEventListener('error', function() {
console.log(`Картинка ${index + 1}.png пока не добавлена в папку. Используется стандартный серо-голубой фон.`);
});
});
});