modified: src/views/Gallery.vue

set base url
This commit is contained in:
2025-10-07 03:29:55 +05:00
parent 639b8bb5dd
commit f3ef6ef7ca
+15 -44
View File
@@ -28,18 +28,9 @@
<h2 class="section-title">Лучшие моменты</h2>
<div class="slider-container">
<div class="slider" :style="{ transform: `translateX(-${currentSlide * 100}%)` }">
<div
v-for="(slide, index) in slides"
:key="index"
class="slide"
:class="{ 'active': currentSlide === index }"
>
<img
:src="getImageUrl(slide.src)"
:alt="slide.alt"
class="slide-image"
@load="imageLoaded(index)"
>
<div v-for="(slide, index) in slides" :key="index" class="slide"
:class="{ 'active': currentSlide === index }">
<img :src="getImageUrl(slide.src)" :alt="slide.alt" class="slide-image" @load="imageLoaded(index)">
<div class="slide-overlay">
<div class="slide-content">
<h3>{{ slide.title }}</h3>
@@ -60,13 +51,9 @@
<!-- Индикаторы -->
<div class="slider-indicators">
<button
v-for="(slide, index) in slides"
:key="index"
:class="['indicator', { 'active': currentSlide === index }]"
@click="goToSlide(index)"
:aria-label="`Перейти к фото ${index + 1}`"
></button>
<button v-for="(slide, index) in slides" :key="index"
:class="['indicator', { 'active': currentSlide === index }]" @click="goToSlide(index)"
:aria-label="`Перейти к фото ${index + 1}`"></button>
</div>
<!-- Счетчик -->
@@ -84,31 +71,17 @@
<!-- Фильтры -->
<div class="gallery-filters">
<button
v-for="filter in filters"
:key="filter.value"
:class="['filter-btn', { 'active': activeFilter === filter.value }]"
@click="setFilter(filter.value)"
>
<button v-for="filter in filters" :key="filter.value"
:class="['filter-btn', { 'active': activeFilter === filter.value }]" @click="setFilter(filter.value)">
{{ filter.label }}
</button>
</div>
<!-- Сетка фотографий -->
<div class="gallery-grid">
<div
v-for="(image, index) in filteredImages"
:key="index"
class="gallery-item"
@click="openLightbox(index)"
>
<div v-for="(image, index) in filteredImages" :key="index" class="gallery-item" @click="openLightbox(index)">
<div>{{ getImageUrl(image.src) }}</div>
<img
:src="getImageUrl(image.src)"
:alt="image.alt"
class="gallery-image"
loading="lazy"
>
<img :src="getImageUrl(image.src)" :alt="image.alt" class="gallery-image" loading="lazy">
<div class="gallery-overlay">
<div class="overlay-content">
<span class="image-date">{{ image.date }}</span>
@@ -140,11 +113,7 @@
</button>
<div class="lightbox-image-container">
<img
:src="getImageUrl(currentLightboxImage.src)"
:alt="currentLightboxImage.alt"
class="lightbox-image"
>
<img :src="getImageUrl(currentLightboxImage.src)" :alt="currentLightboxImage.alt" class="lightbox-image">
<div class="lightbox-info">
<h3>{{ currentLightboxImage.title }}</h3>
<p>{{ currentLightboxImage.description }}</p>
@@ -294,7 +263,8 @@ export default {
methods: {
getImageUrl(path) {
// В продакшене замените на правильный путь
return `../src/assets/images/${path}`
const baseUrl = import.meta.env.BASE_URL
return baseUrl + `src/assets/images/${path}`
},
nextSlide() {
this.currentSlide = (this.currentSlide + 1) % this.slides.length
@@ -344,7 +314,7 @@ export default {
handleKeydown(event) {
if (!this.lightboxActive) return
switch(event.key) {
switch (event.key) {
case 'Escape':
this.closeLightbox()
break
@@ -978,6 +948,7 @@ export default {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);