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

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

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


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

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

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

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

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

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

Войти

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

Войти


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

    • От 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) который прикрепляет меню сверху при скроллинге, однако работает это только на главной странице. На всех остальных не работает. 
      Проверял подключены ли нужные скрипты на страницах - всё есть.
      Помогите пожалуйста разобраться с проблемой.
    • От qwerty
      Здравствуйте. Помогите пожалуйста.
      Сайт http://test22.sportsontheweb.net/
      В мобильной версии менюшка открывается по клику на иконку (три полосочки).
      Как сделать что бы по умолчанию она была включена и показывалась?
      Спасибо!
    • От redinsane
      Вообщем есть проблема с функцией addModule();
      Я начинающий разработчик PHP и яваскрипта практически не знаю. Мне необходимо реализовать модуль по типу баннера и рекомендуемых товаров. Вот код функции addModule мной немного модифицированный. Подскажите как реализовать функцию полноценно чтобы добавлялись все необходимые поля.

       
      <script type="text/javascript"><!-- var module_row = <?php echo $module_row; ?>; function addModule() {     html  = '<tbody id="module-row' + module_row + '">';   html += '  <tr>';   html += '   <td class="left"><input type="text" id="stark<?php echo $module_row; ?>"/><input type="hidden" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" value="<?php echo $id; ?>" /><div id="featured-stark<?php echo $module_row; ?>" class="scrollbox">';      html += '    <td class="left"><input type="text" name="stark_module[' + module_row + '][width]" value="" size="3" /> <input type="text" name="stark_module[' + module_row + '][height]" value="" size="3" /></td>';   html += '    <td class="left"><select name="stark_module[' + module_row + '][layout_id]">';   <?php foreach ($layouts as $layout) { ?>   html += '      <option value="<?php echo $layout['layout_id']; ?>"><?php echo addslashes($layout['name']); ?></option>';   <?php } ?>   html += '    </select></td>';   html += '    <td class="left"><select name="stark_module[' + module_row + '][position]">';   html += '      <option value="content_top"><?php echo $text_content_top; ?></option>';   html += '      <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';   html += '      <option value="column_left"><?php echo $text_column_left; ?></option>';   html += '      <option value="column_right"><?php echo $text_column_right; ?></option>';   html += '    </select></td>';   html += '    <td class="left"><select name="stark_module[' + module_row + '][status]">';     html += '      <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';     html += '      <option value="0"><?php echo $text_disabled; ?></option>';     html += '    </select></td>';   html += '    <td class="right"><input type="text" name="stark_module[' + module_row + '][sort_order]" value="" size="3" /></td>';   html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';   html += '  </tr>';   html += '</tbody>';      $('#module tfoot').before(html);      module_row++; } //--></script> 
      На картинке примерно показано как работает эта функция. При нажатии "добавить модуль" появляется поле №2 без автокомплита. Как переписать функцию чтобы автокомплит заработал и сохраняло значения при выборе товара?
    • От Bizarro
      Здравствуйте. Имеется магазин на ocStore 1.5.5.1.1 и страница со связкой HTML-таблица + DataTables (плагин для jQuery для поиска по ней).
      Проблема заключается в том, что если попытаться ввести что-нибудь в строке поиска по магазину и нажать ENTER, то откроется страница поисковой выдачи не по введенному тексту, а по слову "поиск" и такое происходит только на этой странице. 
      Учитывая, что в родных файлах движка ничего не менялось я подозреваю что скрипт плагина как-то конфликтует со строкой поиска по сайту... Подскажите, что именно в коде скрипта может вызывать такую проблемы?
  • Последние посетители   0 пользователей онлайн

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