Фотосмахивание с помощью Justified Gallery

Я успешно настроил Photoswipe, а также Justified Gallery в моем проекте Rails. Оба они очень хорошо работают по отдельности, но мне трудно заставить их работать вместе.

В моей текущей (по умолчанию) настройке Photoswipe ожидает следующую иерархию тегов:

<figure>
  <a href="...>
    <img src=".../>
  </a>

Justified Gallery по умолчанию настроена на распознавание контейнера с любым количеством тегов <a> с вложенным тегом <img> внутри следующим образом:

<div id="mygallery" >
    <a href="...>
        <img src=".../>
    </a>
    <a href="...>
        <img src=".../>
    </a>
    <!-- other images... -->
</div>

Поэтому мне нужно, чтобы Justified Gallery распознавала этот тег <figure>. В их документации говорится, что вам просто нужно добавить следующую опцию:

selector: 'figure, div:not(.spinner)'

Эта часть, кажется, работает нормально, но также упоминается, что необходимо расширить правила CSS, и здесь я застрял. Я ожидаю, что добавление всех или некоторых селекторов > a к селектору > figure должно выполнить эту работу, но нет. Вот правила, которые приходят с Justified Gallery:

.justified-gallery {
  width: 100%;
  position: relative;
  overflow: hidden;
}
.justified-gallery > a,
.justified-gallery > div {
  position: absolute;
  display: inline-block;
  overflow: hidden;
  opacity: 0;
  filter: alpha(opacity=0);
  /* IE8 or Earlier */
}
.justified-gallery > a > img,
.justified-gallery > div > img,
.justified-gallery > a > a > img,
.justified-gallery > div > a > img {
  position: absolute;
  top: 50%;
  left: 50%;
  margin: 0;
  padding: 0;
  border: none;
}
.justified-gallery > a > .caption,
.justified-gallery > div > .caption {
  display: none;
  position: absolute;
  bottom: 0;
  padding: 5px;
  background-color: #000000;
  left: 0;
  right: 0;
  margin: 0;
  color: white;
  font-size: 12px;
  font-weight: 300;
  font-family: sans-serif;
}
.justified-gallery > a > .caption.caption-visible,
.justified-gallery > div > .caption.caption-visible {
  display: initial;
  opacity: 0.7;
  filter: "alpha(opacity=70)";
  /* IE8 or Earlier */
  -webkit-animation: justified-gallery-show-caption-animation 500ms 0 ease;
  -moz-animation: justified-gallery-show-caption-animation 500ms 0 ease;
  -ms-animation: justified-gallery-show-caption-animation 500ms 0 ease;
}
.justified-gallery > .entry-visible {
  opacity: 1.0;
  filter: alpha(opacity=100);
  /* IE8 or Earlier */
  -webkit-animation: justified-gallery-show-entry-animation 500ms 0 ease;
  -moz-animation: justified-gallery-show-entry-animation 500ms 0 ease;
  -ms-animation: justified-gallery-show-entry-animation 500ms 0 ease;
}
.justified-gallery > .jg-filtered {
  display: none;
}
.justified-gallery > .spinner {
  position: absolute;
  bottom: 0;
  margin-left: -24px;
  padding: 10px 0 10px 0;
  left: 50%;
  opacity: initial;
  filter: initial;
  overflow: initial;
}
.justified-gallery > .spinner > span {
  display: inline-block;
  opacity: 0;
  filter: alpha(opacity=0);
  /* IE8 or Earlier */
  width: 8px;
  height: 8px;
  margin: 0 4px 0 4px;
  background-color: #000;
  border-top-left-radius: 6px;
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
  border-bottom-left-radius: 6px;
}

Я играл с этим довольно долгое время, но я не могу заставить эту работу. Также я не смог найти хороший пример в сети.

Кто-нибудь делал это раньше или знает, как это решить?


person loxosceles    schedule 10.10.2016    source источник


Ответы (2)


Мне удалось решить эту точную проблему, используя:

selector: 'a, figure:not(.spinner)'

в параметрах и заменив все селекторы div в css на figure. Так

.justified-gallery > div > img,

Станет:

.justified-gallery > figure > img,
person duvigneau    schedule 25.11.2016

Используя Justified Gallery v3.7.0 и PhotoSwipe v4.1.3, нужно всего лишь заменить селектор по умолчанию на

'figure, > div:not(.spinner)'

Следовательно, для <div id="mygallery"> получается:

$('#mygallery').justifiedGallery({
    selector: 'figure, > div:not(.spinner)'
}).on('jg.complete', function () {
    initPhotoSwipeFromDOM('#mygallery');
});
person streof    schedule 05.02.2019