#javascript #ios #arrays #show-hide
#javascript #iOS #массивы #показать-скрыть
Вопрос:
Интересно, можете ли вы мне помочь, пожалуйста? Я пытаюсь заставить часть javascript работать на устройствах ios. У меня есть несколько изображений на странице в divs, и по щелчку я хотел бы скользить по панели информации (скрытой слева), и как только эта панель скользит, если щелкнуть по этой панели, я бы хотел, чтобы она сдвинулась влево.
Вот код, который у меня есть, который отлично работает во всех настольных браузерах, но ничего не делает на ios — я не могу его понять и не уверен, как протестировать или проверить наличие проблем на ios.
Вот скрипка: https://jsfiddle.net/adpLqbt2/31 /
CSS
.box {
display: inline-block;
position: relative;
width: 500px;
height: 500px;
overflow: hidden;
}
.overlay-btn {
display: inline-block;
position: absolute;
cursor: pointer;
height: 500px;
width: 500px;
z-index: 10;
background: url('../img/icons/info.svg') 98% 98% no-repeat;
}
.overlay-content {
position: absolute;
top: 0;
left: -500px;
width: 500px;
margin: 0;
height: 500px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
transition: all 0.5s ease-in-out;
-webkit-transition: all 0.5s ease-in-out;
}
.over-show {
left: 0;
height: 500px;
transition: all 0.5s ease-out;
-webkit-transition: all 0.5s ease-out;
}
HTML
<div class="box">
<div class="overlay-btn"></div>
<div class="overlay-content"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p></div>
<img src="https://via.placeholder.com/500" alt="rah" />
</div>
<div class="box">
<div class="overlay-btn"></div>
<div class="overlay-content"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p></div>
<img src="https://via.placeholder.com/500" alt="yay" />
</div>
<div class="box">
<div class="overlay-btn"></div>
<div class="overlay-content"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p></div>
<img src="https://via.placeholder.com/500" alt="see" />
</div>
JS
const triggers = document.getElementsByClassName('overlay-btn');
const triggerArray = Array.from(triggers).entries();
const panels = document.getElementsByClassName('overlay-content');
const infoButtons = document.getElementsByClassName('overlay-btn');
for (let [index, trigger] of triggerArray) {
let triggerIndex = index;
function togglePanel() {
panels[triggerIndex].classList.toggle('over-show');
infoButtons[triggerIndex].classList.toggle('js-fade');
}
trigger.addEventListener('click', togglePanel);
infoButtons[triggerIndex].addEventListener('click', togglePanel);
}
Комментарии:
1. Вы можете отлаживать свой JS-код на рабочем столе Safari, который выполняется в симуляторе iOS.
2. Спасибо, Евгений, я сделал то, что вы предложили, и я получаю это сообщение: «ReferenceError: не удается найти переменную: triggerIndex» — Не могли бы вы, пожалуйста, помочь мне понять, что мне нужно сделать на основе приведенного выше кода JS и Pen? Как я уже говорил ранее, он работает во всех браузерах для настольных компьютеров. Очень странно… Спасибо Джеймс
3. Я считаю, что вы должны отладить его самостоятельно. Вы можете установить точки останова в веб-инспекторе Desktop Safari во время отладки симулятора iOS, также вы можете печатать на консоли или показывать оповещения 🙂 Из того, что я могу сказать вкратце, может быть, что JS вызывается до загрузки DOM, так что там
overlay-bin
еще нет.