Здравствуйте, у меня на лэндинге есть код
<div class="gallery-block">
<ul class="gallery-list">
<li>
<a href="" class="gallery-link gallery-list-active"></a>
</li>
<li>
<a href="#" class="gallery-link"></a>
</li>
<li>
<a href="#" class="gallery-link"></a>
</li>
<li>
<a href="#" class="gallery-link"></a>
</li>
<li>
<a href="#" class="gallery-link"></a>
</li>
<li>
<a href="#" class="gallery-link"></a>
</li>
</ul>
<div class="container">
<figure class="gallery-img gallery-premium">
Скрипт галереи с сайта jssor.com в котором есть
ссылки на мои изображения
<div>
<img>
</div>
<figcaption>Премиум</figcaption>
</figure>
<div class="1" id="">
<figure class="gallery-img gallery-business">
<img>
<figcaption></figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img>
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img>
<figcaption>Лимузины</figcaption>
</figure>
</div>
<div class="2" id="">
<figure class="gallery-img gallery-business">
<img>
<figcaption>Бизнес</figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img>
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img>
<figcaption>Лимузины</figcaption>
</figure>
</div>
<div class="3" id="">
<figure class="gallery-img gallery-business">
<img>
<figcaption>Бизнес</figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img>
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img>
<figcaption>Лимузины</figcaption>
</figure>
</div>
<div class="4" id="">
<figure class="gallery-img gallery-business">
<img>
<figcaption>Бизнес</figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img>
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img>
<figcaption>Лимузины</figcaption>
</figure>
</div>
<div class="5" id="">
<figure class="gallery-img gallery-business">
<img>
<figcaption>Бизнес</figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img>
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img>
<figcaption>Лимузины</figcaption>
</figure>
</div>
<div class="6" id="">
<figure class="gallery-img gallery-business">
<img>
<figcaption>Бизнес</figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img>
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img>
<figcaption>Лимузины</figcaption>
</figure>
</div>
</div>
</div>
Мне нужно сделать, чтобы при переключении ссылок в списке "gallery-list" в зависимости от ссылки менялись ссылки фотографиий (src="") в галереи, а под ней менялись блоки, идея такая чтобы дивам с классами 1,2,3,4,5,6 задать display: none; (в зависимости от неактивной ссылки) а одному диву у которого ссылка активна display: block; (Ничего лучше не придумал)
для переключения активных ссылок есть js код
var gallery = document.querySelector('.gallery-list');
var link = document.querySelectorAll('.gallery-link');
for (var i=0; i<link.length; i++) {
link[i].addEventListener('click', function(evt) {
evt.preventDefault();
link.forEach(c => {
c.classList.remove('gallery-list-active');
})
$(this).addClass('gallery-list-active');
})
}
Подскажите пожалуйста, как это можно реализовать, правда фотографии в галерее не обновятся без перезагрузки страницы, не знаю как быть
UPD:
Вот так выглядит код слайдера
<!-- #region Jssor Slider Begin -->
<script src="js/jssor.slider-25.0.7.min.js" type="text/javascript"></script>
<script type="text/javascript">
jssor_1_slider_init = function() {
var jssor_1_options = {
$AutoPlay: 0,
$ArrowNavigatorOptions: {
$Class: $JssorArrowNavigator$
},
$BulletNavigatorOptions: {
$Class: $JssorBulletNavigator$
}
};
var jssor_1_slider = new $JssorSlider$("jssor_1", jssor_1_options);
/*#region responsive code begin*/
/*remove responsive code if you don't want the slider scales while window resizing*/
function ScaleSlider() {
var refSize = jssor_1_slider.$Elmt.parentNode.clientWidth;
if (refSize) {
refSize = Math.min(refSize, 1140);
jssor_1_slider.$ScaleWidth(refSize);
}
else {
window.setTimeout(ScaleSlider, 30);
}
}
ScaleSlider();
$Jssor$.$AddEvent(window, "load", ScaleSlider);
$Jssor$.$AddEvent(window, "resize", ScaleSlider);
$Jssor$.$AddEvent(window, "orientationchange", ScaleSlider);
/*#endregion responsive code end*/
};
</script>
<style>
/* jssor slider loading skin double-tail-spin css */
.jssorl-004-double-tail-spin img {
animation-name: jssorl-004-double-tail-spin;
animation-duration: 1.2s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes jssorl-004-double-tail-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.jssorb051 .i {position:absolute;cursor:pointer;}
.jssorb051 .i .b {fill:#fff;fill-opacity:0.5;stroke:#000;stroke-width:400;stroke-miterlimit:10;stroke-opacity:0.5;}
.jssorb051 .i:hover .b {fill-opacity:.7;}
.jssorb051 .iav .b {fill-opacity: 1;}
.jssorb051 .i.idn {opacity:.3;}
.jssora051 {display:block;position:absolute;cursor:pointer;}
.jssora051 .a {fill:none;stroke:#fff;stroke-width:700;stroke-miterlimit:10;}
.jssora051:hover {opacity:.8;}
.jssora051.jssora051dn {opacity:.5;}
.jssora051.jssora051ds {opacity:.3;pointer-events:none;}
</style>
<div id="jssor_1" style="position:relative;margin:0 auto;top:0px;left:0px;width:1140px;height:520px;overflow:hidden;visibility:hidden;">
<!-- Loading Screen -->
<div data-u="loading" class="jssorl-004-double-tail-spin" style="position:absolute;top:0px;left:0px;text-align:center;background-color:rgba(0,0,0,0.7);">
<img style="margin-top:-19px;position:relative;top:50%;width:38px;height:38px;" src="img/double-tail-spin.svg" />
</div>
<div id="slider-photo" data-u="slides" style="cursor:default;position:relative;top:0px;left:0px;width:1140px;height:520px;overflow:hidden;">
<div>
<img data-u="image" src="img/premium.jpg" />
</div>
<div>
<img data-u="image" src="https://via.placeholder.com/1140x520" />
</div>
<div>
<img data-u="image" src="https://via.placeholder.com/1140x519" />
</div>
<div>
<img data-u="image" src="img/premium.jpg" />
</div>
<div>
<img data-u="image" src="img/premium.jpg" />
</div>
</div>
<!-- Bullet Navigator -->
<div data-u="navigator" class="jssorb051" style="position:absolute;bottom:12px;right:12px;" data-autocenter="1" data-scale="0.5" data-scale-bottom="0.75">
<div data-u="prototype" class="i" style="width:12px;height:12px;">
<svg viewbox="0 0 16000 16000" style="position:absolute;top:0;left:0;width:100%;height:100%;">
<circle class="b" cx="8000" cy="8000" r="5800"></circle>
</svg>
</div>
</div>
<!-- Arrow Navigator -->
<div data-u="arrowleft" class="jssora051" style="width:55px;height:55px;top:0px;left:25px;" data-autocenter="2" data-scale="0.75" data-scale-left="0.75">
<svg viewbox="0 0 16000 16000" style="position:absolute;top:0;left:0;width:100%;height:100%;">
<polyline class="a" points="11040,1920 4960,8000 11040,14080 "></polyline>
</svg>
</div>
<div data-u="arrowright" class="jssora051" style="width:75px;height:75px;top:0px;right:25px;" data-autocenter="2" data-scale="0.75" data-scale-right="0.75">
<svg viewbox="0 0 16000 16000" style="position:absolute;top:0;left:0;width:100%;height:100%; ">
<polyline class="a" points="4960,1920 11040,8000 4960,14080 "></polyline>
</svg>
</div>
</div>
<script type="text/javascript">jssor_1_slider_init();</script>
к слайдеру подключаются еще скрипт Jquery и скрипты для работы слайдера
<script src="js/modernizr.js"></script> <!-- Modernizr -->
<script src="js/masonry.pkgd.min.js"></script>
<script src="js/jquery.flexslider-min.js"></script>
<script src="js/main.js"></script> <!-- Resource jQuery -->
я попытался по вашему примеру в див с id="slider-photo" вставить дивы с фото так как они по умолчанию показаны, если оставить див с id="slider-photo пустым, то слайдер вообще не видит новых фотографий, которые вставляет скрипт (место на котором должен быть слайдер остается пустым и не активным),
если сделать так,
<div id="slider-photo" data-u="slides" style="cursor:default;position:relative;top:0px;left:0px;width:1140px;height:520px;overflow:hidden;">
<div>
</div>
<div>
</div>
<div>
</div>
</div>
то слайдер появляется, но фотографии не переключаются, первая фотография остается статична
вот как я попытался заменить фотографии в слайдере, в ваш код добавил такую часть
let slider = document.querySelector('#slider-photo');
slider.innerHTML = `
<div>
<img src="${item.image_4}" />
</div>
<div>
<img data-u="image" src="${item.image_5}" />
</div>
<div>
<img data-u="image" src="${item.image_6}" />
</div>
<div>
<img data-u="image" src="${item.image_5}" />
</div>
<div>
<img data-u="image" src="${item.image_6}" />
</div>
`
Думаю, нужно что-то вроде этого:
let link = document.querySelectorAll('.gallery-link');
let view = document.querySelector('#view');
//Здесь задаем список ссылок на картинки, id должны соответствовать значениям в data-link
let images = [
{
id: 'link_1',
image_1: "https://via.placeholder.com/200x100",
image_2: "https://via.placeholder.com/200x100",
image_3: "https://via.placeholder.com/200x100"
},
{
id: 'link_2',
image_1: "https://via.placeholder.com/300x100",
image_2: "https://via.placeholder.com/300x100",
image_3: "https://via.placeholder.com/300x100"
},
{
id: 'link_3',
image_1: "https://via.placeholder.com/100x50",
image_2: "https://via.placeholder.com/100x50",
image_3: "https://via.placeholder.com/100x50"
}
]
let _getElements = currentElement => {
currentElement = currentElement || document.querySelector('.gallery-link.active');
images.filter(item => {
if(item.id == currentElement.getAttribute('data-link')) {
view.innerHTML = `
<figure class="gallery-img gallery-business">
<img src="${item.image_1}">
<figcaption>Бизнес</figcaption>
</figure>
<figure class="gallery-img gallery-representative">
<img src="${item.image_2}">
<figcaption>Представительский</figcaption>
</figure>
<figure class="gallery-img gallery-limousines">
<img src="${item.image_3}">
<figcaption>Лимузины</figcaption>
</figure>
`
}
})
}
link.forEach(el => {
el.addEventListener('click', (e) => {
e.preventDefault();
for(let val of link) {
if(val.classList.contains('active')) {
val.classList.remove('active');
}
el.classList.add('active');
}
_getElements(e.target);
})
})
_getElements();
* {
box-sizing: border-box;
}
body {
background: #f2f2f2;
}
.gallery-list {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.gallery-list * {
padding: 10px;
display: inline-block;
color: #333;
text-decoration: none;
}
.active {
background: red;
color: #fff;
}
.container, .gallery-list {
background: #fff;
width: 500px;
margin: 30px auto;
padding: 20px;
}
figure {
border: 1px solid #000;
margin: 2px 0;
}
<div class="gallery-block">
<ul class="gallery-list">
<!-- В тэг а добавляем атрибут data-link c уникальным идентификатором -->
<li>
<a href="#" class="gallery-link active" data-link="link_1">Link 1</a>
</li>
<li>
<a href="#" class="gallery-link" data-link="link_2">Link 2</a>
</li>
<li>
<a href="#" class="gallery-link" data-link="link_3">Link 3</a>
</li>
</ul>
<div class="container">
<figure class="gallery-img gallery-premium">
<img src="">
<figcaption>Премиум</figcaption>
</figure>
<div class="1" id="view">
</div>
</div>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Собственно запускаю setState при прокрутки мышью, начинает все тормозить, может даже "зависнуть" хром
В Gulp пытаюсь сделать build gulp а мне выдает вот такую ерунду:
Например я начал смотреть в телефоне сайтЗатем я его перевернул и картинка уже обрезана