Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2021, 22:25
Интересующийся
Отправить личное сообщение для De12 Посмотреть профиль Найти все сообщения от De12
 
Регистрация: 21.08.2020
Сообщений: 22

Объединить несколько изображений в галерею
Привет, есть ли такая возможность, чтобы был скрипт, который если идет несколько тегов img подряд, он им добавлял контейнер и объединял в галерею? Т.е. если в статье несколько таких блоков, то каждый - это отдельная галлерея. Куда копать?
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2021, 00:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

De12,
иди циклом по картинкам и оборачивай, в чём проблема ...

[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2021, 08:52
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Скрип то написать несложно, но постановка задачи неправильная.
А что делать с одиночным <img> ?
А разве не может быть нескольких <img> подряд, которые не надо оборачивать, например, в шапке документа?
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2021, 09:11
Интересующийся
Отправить личное сообщение для De12 Посмотреть профиль Найти все сообщения от De12
 
Регистрация: 21.08.2020
Сообщений: 22

Сообщение от voraa Посмотреть сообщение
Скрип то написать несложно, но постановка задачи неправильная.
А что делать с одиночным <img> ?
А разве не может быть нескольких <img> подряд, которые не надо оборачивать, например, в шапке документа?
Спасибо за вопрос.

Если одиночный - ничего.

По поводу несколько подряд <img> - проверять только в контентной части, например если в контейнере <div class="content">
Ответить с цитированием
  #5 (permalink)  
Старый 06.11.2021, 09:12
Интересующийся
Отправить личное сообщение для De12 Посмотреть профиль Найти все сообщения от De12
 
Регистрация: 21.08.2020
Сообщений: 22

Сообщение от рони Посмотреть сообщение
De12,
иди циклом по картинкам и оборачивай, в чём проблема ...

[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Мне кажется, вы не совсем поняли, что я хочу, либо я не правильно понял вашего ответа..
Ответить с цитированием
  #6 (permalink)  
Старый 06.11.2021, 09:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

De12,
мини html до и после сделайте.
Ответить с цитированием
  #7 (permalink)  
Старый 06.11.2021, 09:44
Интересующийся
Отправить личное сообщение для De12 Посмотреть профиль Найти все сообщения от De12
 
Регистрация: 21.08.2020
Сообщений: 22

Сообщение от рони Посмотреть сообщение
De12,
мини html до и после сделайте.
Привет это первый абзац
<img src="img1.jpg">
<img src="img2.jpg">
<img src="img3.jpg">
Это второй абзац
<img src="img1.jpg">
<img src="img2.jpg">


Пример? Или что, я тупой наверное... Вот пример выше, того как будет в статье и нужно, чтобы если идет несколько подряд img, их оборачивало в контейнер какой-то например, чтобы из этого потом слайдер сделать.
Ответить с цитированием
  #8 (permalink)  
Старый 06.11.2021, 09:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Примерно так это делается
const images = document.querySelectorAll('div.content img');

for (let i = 0; i < images.length; i++) {
    const imgf = images[i];
    const arri = [imgf];
    let img = imgf.nextElementSibling;
    while (img?.tagName === 'IMG') {
        arri.push(img);
        img = img.nextElementSibling;
        i++;
    }
    if (arri.length > 1) {
        const gal = document.createElement('div')
        gal.className = 'gal';
        imgf.parentElement.replaceChild(gal, imgf);
        gal.append(...arri)
    }
    
}

Последний раз редактировалось voraa, 06.11.2021 в 09:58.
Ответить с цитированием
  #9 (permalink)  
Старый 06.11.2021, 10:14
Интересующийся
Отправить личное сообщение для De12 Посмотреть профиль Найти все сообщения от De12
 
Регистрация: 21.08.2020
Сообщений: 22

Сообщение от voraa Посмотреть сообщение
Примерно так это делается
const images = document.querySelectorAll('div.content img');

for (let i = 0; i < images.length; i++) {
    const imgf = images[i];
    const arri = [imgf];
    let img = imgf.nextElementSibling;
    while (img?.tagName === 'IMG') {
        arri.push(img);
        img = img.nextElementSibling;
        i++;
    }
    if (arri.length > 1) {
        const gal = document.createElement('div')
        gal.className = 'gal';
        imgf.parentElement.replaceChild(gal, imgf);
        gal.append(...arri)
    }
    
}
Спасибо, попробовал, но почему-то не сработало.
Ответить с цитированием
  #10 (permalink)  
Старый 06.11.2021, 10:18
Интересующийся
Отправить личное сообщение для De12 Посмотреть профиль Найти все сообщения от De12
 
Регистрация: 21.08.2020
Сообщений: 22

Сообщение от voraa Посмотреть сообщение
Примерно так это делается
const images = document.querySelectorAll('div.content img');

for (let i = 0; i < images.length; i++) {
    const imgf = images[i];
    const arri = [imgf];
    let img = imgf.nextElementSibling;
    while (img?.tagName === 'IMG') {
        arri.push(img);
        img = img.nextElementSibling;
        i++;
    }
    if (arri.length > 1) {
        const gal = document.createElement('div')
        gal.className = 'gal';
        imgf.parentElement.replaceChild(gal, imgf);
        gal.append(...arri)
    }
    
}


<div class="col-12 text">
<img data-src="/uploads/posts/2021-11/1636154460_default-good-1.png" class="fr-fic fr-dii lazy-loaded" alt="" src="/uploads/posts/2021-11/1636154460_default-good-1.png">
<img data-src="/uploads/posts/2021-11/1636154460_default-good-1.png" class="fr-fic fr-dii lazy-loaded" alt="" src="/uploads/posts/2021-11/1636154460_default-good-1.png">
<img data-src="/uploads/posts/2021-11/1636154460_default-good-1.png" class="fr-fic fr-dii lazy-loaded" alt="" src="/uploads/posts/2021-11/1636154460_default-good-1.png"> 

test test 
<img data-src="/uploads/posts/2021-11/1636154460_default-good-1.png" class="fr-fic fr-dii lazy-loaded" alt="" src="/uploads/posts/2021-11/1636154460_default-good-1.png">
<img data-src="/uploads/posts/2021-11/1636154460_default-good-1.png" class="fr-fic fr-dii lazy-loaded" alt="" src="/uploads/posts/2021-11/1636154460_default-good-1.png">
		</div>


вот такой текст был, класс контейнера с .content на .text в начале менял.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как объединить несколько js файлов в один? Fankrai Элементы интерфейса 0 03.06.2020 09:49
Как запустить галерею Colorbox на основе атрибутов изображений lukasss jQuery 4 31.07.2017 22:30
На сайте не грузится несколько (всегда разных) изображений eddin Серверные языки и технологии 0 09.11.2015 15:52
Можно ли объединить несколько классов? zazula (X)HTML/CSS 3 14.12.2014 11:40
Объединить несколько выборок в одну float jQuery 4 12.07.2011 21:31