Bersi

Нужна помощь в JavaScript (модуль Cloud Zoom Free)

Рекомендуемые сообщения

Bersi    44

Переделываю под себя модуль Cloud Zoom Free (oc 1.5.3). Немного поменял стиль вывода и добавил пару условий на вывод картинки, меньше заданного в параметрах зума. Кроме того, картинки у меня не квадратные, а масштабируются исходя из пропорций исходного изображения.

Заметил глюк: в некоторых случаях (от чего зависит, так и не понял) скрипт не может определить background-position для линзы. Как это происходит, можно посмотреть по ссылке (третья картинка в списке) и на скриншотах (прилагаются).

Не правильно:

Изображение

Правильно:

Изображение

Вроде бы нашел код в скрипте, который за это отвечает (cloud-zoom.1.0.2.js, строки 131-135):

				lens.css({
					left: x,
					top: y
				});
				lens.css('background-position', (-x) + 'px ' + (-y) + 'px');
При этом значения left и top определяются прекрасно, проблема именно с background-position.

Очень прошу помощи профессионалов.

Во вложении модифицированный модуль.

ЗЫ: я не программер, потому прошу строго не судить, если что-то объяснил коряво :)

cloud-zoom-magnifier-simple 1531-mod.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Bersi    44

Разобрался сам.

Округлил значения до целых, поменяв

				var x = (mx - sImg.offset().left - (cw * 0.5)) >> 0;
				var y = (my - sImg.offset().top - (ch * 0.5)) >> 0;
			  
				if (x < 0) {
					x = 0;
				}
				else if (x > (sImg.outerWidth() - cw)) {
					x = (sImg.outerWidth() - cw);
				}
				if (y < 0) {
					y = 0;
				}
				else if (y > (sImg.outerHeight() - ch)) {
					y = (sImg.outerHeight() - ch);
				}
на:

				var x = Math.round(mx - sImg.offset().left - (cw * 0.5)) >> 0;
				var y = Math.round(my - sImg.offset().top - (ch * 0.5)) >> 0;
			  
				if (x < 0) {
					x = 0;
				}
				else if (x > (sImg.outerWidth() - cw)) {
					x = Math.round(sImg.outerWidth() - cw);
				}
				if (y < 0) {
					y = 0;
				}
				else if (y > (sImg.outerHeight() - ch)) {
					y = Math.round(sImg.outerHeight() - ch);
				}
Тему можно удалять :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AlekseyN    0

Молодец!

Зачем же удалять, если нашел решение, да еще и описал его, еще может пригодиться кому либо! :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
goodbye    0

Скачал файл что то не работает, там нужно все менять как выше описано? (есть готовый рабочий?)

И еще по поводу qmoda я что то не разберусь когда устанавливаешь подобные модули  как их потом настраивать или отключат в qmode а то в модулях не отображает не как понять не могу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Bersi    44

Скачал файл что то не работает, там нужно все менять как выше описано? (есть готовый рабочий?)

И еще по поводу qmoda я что то не разберусь когда устанавливаешь подобные модули  как их потом настраивать или отключат в qmode а то в модулях не отображает не как понять не могу

vqmod создает папку xml в своей директории, там и лежат собственно файлы, изменяющие стандартный функционал. Если переименовать расширение подобного файла (например, mod.xml0 вместо mod.xml), это приведет к "отключению" мода. Ну или можно просто удалить ненужный файл. Что же касается изменений, где-то была неплохая инструкция (пришлю в личке).

 

Также пришлю готовый файл вместе с vqmod'ом в ближайшее время (сейчас он не под рукой).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
goodbye    0

Скачал файл что то не работает, там нужно все менять как выше описано? (есть готовый рабочий?)

И еще по поводу qmoda я что то не разберусь когда устанавливаешь подобные модули  как их потом настраивать или отключат в qmode а то в модулях не отображает не как понять не могу

vqmod создает папку xml в своей директории, там и лежат собственно файлы, изменяющие стандартный функционал. Если переименовать расширение подобного файла (например, mod.xml0 вместо mod.xml), это приведет к "отключению" мода. Ну или можно просто удалить ненужный файл. Что же касается изменений, где-то была неплохая инструкция (пришлю в личке).

 

Также пришлю готовый файл вместе с vqmod'ом в ближайшее время (сейчас он не под рукой).

Ок. буду ждать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Lery37    4

что-то у меня никак не хочет работать корректно этот модуль... дополнительные фото к товару подставляет маленькие...и при наведении как и должен увеличивает..но как сделать чтобы другие фото подставлялись такого же размера что и основное фото????

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
muha    0

Чтобы к фотке не дополнялись маленькие изображения, в админке можно размеры приравнять, а вот почему идет дубликат привьюшки я не понял ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От colaweb

      3 000.00 руб
      Скачать/Купить дополнение


      Анимация для вашего магазина или сайта
      Сделаю анимацию для вашего магазина или сайта.
      Большой опыт работы.
       
      Примеры
      Анимация главной страницы
      «Эффект полета» картинки в корзину при клике на кнопку "купить"
       
      Мой портфолио на форуме
      https://opencartforum.com/profile/12157-colaweb/content/?type=downloads_file
      Добавил colaweb Добавлено 19.02.2018 Категория Услуги  
    • От colaweb
      Сделаю анимацию для вашего магазина или сайта.
      Большой опыт работы.
       
      Примеры
      Анимация главной страницы
      «Эффект полета» картинки в корзину при клике на кнопку "купить"
       
      Мой портфолио на форуме
      https://opencartforum.com/profile/12157-colaweb/content/?type=downloads_file
    • От skyzy
      Приветствую знатоков!
      Решил слегка доработать функцию add в файле common.js (отвечает за добавление товара вкорзину).
      Хотелось, чтобы выскакивало модальное окно с тем же текстом, что и в стандартном сообщении. 
      Проблема в следующем. 
      В хроме появляется ошибка: Cannot read property 'open' of undefined
      При этом в яндекс браузере всё работает на ура.
      Вот код функции:
      ...'add': function(product_id,buttonId, quantity) { $.ajax({ url: 'index.php?route=checkout/cart/add', type: 'post', data: 'product_id=' + product_id + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1), dataType: 'json', beforeSend: function() { $('#cart > button').button('loading'); }, complete: function() { $('#cart > button').button('reset'); }, success: function(json) { $('.alert, .text-danger').remove(); if (json['redirect']) { location = json['redirect']; } if (json['success']) { $('#content').parent().before('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">×</button></div>'); // Need to set timeout otherwise it wont update the total setTimeout(function () { $('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>'); }, 100); document.getElementById('cartCount').innerHTML = json['total']; //Меняем класс блока с корзиной var articleCart = document.getElementById(buttonId); articleCart.className = ""; articleCart.className = "activeCart"; $('html, body').animate({ scrollTop: 0 }, 'slow'); $('#cart > ul').load('index.php?route=common/cart/info ul li'); //Открываем модальное окно. ================>>> $.magnificPopup.open <<<========================== Здесь выскакивает ошибка ({ items: { src: '<div class="cartAddPopup">'+json['success']+'</div>', type: 'inline' } }); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); }... Сайт: joy-joy.ru прямо на главной странице можно посмотреть
      ocStore 2.1
      Надеюсь на помощь знатоков.
    • От Froxy
      Eсть возможность вывести базовую цену товара, то есть без скидок и выбираемых опций, чтоб было 2 цены допустим 1 с опциями и 1 начальная?
      Сделал примерно таки  образом:
      Вывел начальное повторную цену товара: <?php echo $price_value; ?>
      Но возникла проблема, цена показывается с 4 нулями после  точки "100.0000"
      Пытаюсь убрать их с помощью js, но не  получается, вот код:
      <div id="number2"> <?php echo $price_value; ?> </div> <script type="text/javascript"> var number = +document.getElementById ("number2"); number = number.toFixed(2); alert(number); </script> В чем мб проблема?
    • От Igor112
      Мой сайт http://bizarreshop.by/ . Добавил скрипт (menu.js) который прикрепляет меню сверху при скроллинге, однако работает это только на главной странице. На всех остальных не работает. 
      Проверял подключены ли нужные скрипты на страницах - всё есть.
      Помогите пожалуйста разобраться с проблемой.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу