Как сделать эффект лупы

Обновлено: 06.07.2024

Как увеличить картинку без потери качества – эффект лупы на сайте

Если Вас это заинтересовало, тогда прошу Вас пройти далее и ознакомиться полностью с материалом, который я для Вас подготовил …

Zoom картинки или как увеличить картинку на сайте при помощи jQuery

Все о том, как увеличить картинку без потери качества с помощью jquery и добиться эффекта лупы на вашем сайте при наведении на нее курсора, Вы узнаете, если прочтете до конца данную статью.

Вот пример как увеличить картинку:

А также сможете скачать исходные файлы, которые вам помогут воспроизвести эффект лупы для картинки на вашем сайте. Но сначала посмотрите демонстрационные материалы:

Теперь давайте с вами разберемся, как работает лупа для сайта, чтобы увеличить картинку?!

Для начала нам нужно создать HTML документ:

И в нем мы с вами присвоим изображениям на которые будет распространяться эффект лупы:

Затем подключим наши стили CSS имитирующие эффект лупы:

Теперь подключаем jQuery:

Этот код формирует блок div glass , который является нашей лупой:

Далее определяем положение курсора:

Еще нам нужно рассчитать положение лупы на картинке и присвоить стили CSS:

И заключительное действие, которое мы должны сделать – это обработать движение курсора на нашей картинке:

Вот теперь наш эффект лупы увеличения картинки на сайте готов и Вы можете увидеть, как увеличить картинку без потери качества при помощи эффекта лупы на демонстрационных материалах выше, а также скачать исходные файлы для использования их на своем сайте и увеличить картинку у себя скачав исходные файлы:

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

Всем привет!
время Пришло уроков Фотошопа.
В этой статье я как, расскажу нарисовать в Фотошопе увеличительное стекло (передать) и лупу правильное отражение в ней.
После как, того будут пройдены все этапы, у получится вас вот такое:

Для урока я использовать буду вот такое фото:

Сохраните откройте и себе это изображение в Фотошопе.
Конечно же, не использовать обязательно именно эту картинку, можете интернете в найти любую другую картинку.

Потом жмите на галочку Теперь:

Жмите такой результат должен получиться у этому:

Изображение можно Добавим

так Вот примерно получится у вас:

Теперь еще создадим один слой для второго Только. блика блик будет поменьше и без как, размытия у меня на рисунке:

Делаем оправу лупы для

Сместите слой этот немного ниже:

Примерно так как у меня:

такая Вот лупа получилась у меня. Наверно, проще бы было видео урок сделать, чем такую строчить статью с кучей изображений. Если у выходит-то не кого, пишите в комментариях, буду делать урок-видео по этой теме.


Просмотр демо страницы и скачивание исходников не доступно

Уважаемый читатель, XoZblog существует и развивается за счёт доходов от ненавязчивой рекламы. Если не затруднит, добавьте этот сайт в исключение AdBlock. Спасибо за понимание!

HTML разметка

Вся особенность разметки заключается в том чтобы присвоить, тем изображениям, у которых планируется использовать лупу, класс magniflier .

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

Стили CSS

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

.glass <
width : 175px ;
height : 175px ;
position : absolute ;
border-radius : 50% ;
cursor : crosshair ;

/* Создание эффекта стекла */
box-shadow :
0 0 0 7px rgba ( 255 , 255 , 255 , 0.85 ) ,
0 0 7px 7px rgba ( 0 , 0 , 0 , 0.25 ) ,
inset 0 0 40px 2px rgba ( 0 , 0 , 0 , 0.25 ) ;

/* Изначально скрыто */
display : none ;
>


Вот так выглядит лупа

Лупа, точнее блок div glass создается средствами jQuery, при наведении курсора выводится методом fadeIn . Но обо всем по порядку.

jQuery

И так, следующий код формирует блок div glass , который является увеличительным стеклом:

// Добавляем увеличительное стекло
if ( ui. magniflier . length ) <
var div = document. createElement ( 'div' ) ;
div. setAttribute ( 'class' , 'glass' ) ;
ui. glass = $ ( div ) ;

$ ( 'body' ) . append ( div ) ;
>

Однако, до того как мы сформируем увеличенную область изображения и покажем ее, нужно произвести несколько действий. И первое что необходимо, так это определить положение курсора на странице.

Для удобства помещаем эту функцию в переменную:

// Определяем положение курсора
var mouseMove = function ( e ) <
var $el = $ ( this ) ;

// Получаем отступы до края картинки слева и сверху
var magnify_offset = cur_img. offset ( ) ;

// Позиция курсора над изображением
// pageX/pageY - это значения по х и у положения курсора от краев браузера
mouse. x = e. pageX - magnify_offset. left ;
mouse. y = e. pageY - magnify_offset. top ;

// Увеличительное стекло должно отображаться только когда указатель мыши находится над картинкой
// При отводе курсора от картинки происходит плавное затухание лупы
// Поэтому необходимо проверить, не выходит ли за границы картинки положение курсора
if (
mouse. x cur_img. width ( ) &&
mouse. y cur_img. height ( ) &&
mouse. x > 0 &&
mouse. y > 0
) <
// Если условие истинно то переходим дальше
magnify ( e ) ;
>
else <
// иначе скрываем
ui. glass . fadeOut ( 100 ) ;
>

Следующим шагом является, расчет положения лупы над картинкой и положение изображения в лупе (т.к. увеличенная область изображения будет являться фоном для блока glass ). После расчета полученные значения присваиваем CSS свойствам блока glass :

var magnify = function ( e )

// Основное изображение будет в качестве фона в блоке div glass
// поэтому необходимо рассчитать положение фона в этом блоке
// относительно положения курсора над картинкой
//
// Таким образом мы рассчитываем положение фона
// и заносим полученные данные в переменную
// которая будет использоваться в качестве значения
// свойства background-position

var rx = Math . round ( mouse. x / cur_img. width ( ) * native_width - ui. glass . width ( ) / 2 ) *- 1 ;
var ry = Math . round ( mouse. y / cur_img. height ( ) * native_height - ui. glass . height ( ) / 2 ) *- 1 ;
var bg_pos = rx + "px " + ry + "px" ;

// Теперь определим положение самого увеличительного стекла
// т.е. блока div glass
// логика простая: половину ширины/высоты лупы вычитаем из
// положения курсора на странице

var glass_left = e. pageX - ui. glass . width ( ) / 2 ;
var glass_top = e. pageY - ui. glass . height ( ) / 2 ;

// Теперь присваиваем полученные значения css свойствам лупы
ui. glass . css ( <
left : glass_left ,
top : glass_top ,
backgroundPosition : bg_pos
> ) ;


Увеличительное стекло в действии

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

// Движение курсора над изображению
$ ( ui. magniflier ) . on ( 'mousemove' , function ( ) <
// Плавное появление лупы
ui. glass . fadeIn ( 100 ) ;
// Текущее изображение
cur_img = $ ( this ) ;
// определяем путь до картинки
var src = cur_img. attr ( 'src' ) ;
// Если существует src, устанавливаем фон для лупы
if ( src ) <
ui. glass . css ( <
'background-image' : 'url(' + src + ')' ,
'background-repeat' : 'no-repeat'
> ) ;
>

// Проверяем есть ли запись о первоначальном размере картинки native_width/native_height
// если нет, значит вычисляем и создаем об этом запись для каждой картинки
// иначе показываем лупу с увеличением

if ( ! cur_img. data ( 'native_width' ) )

// Создаем новый объект изображение, с актуальной идентичный актуальному изображению
// Это сделано для того чтобы получить реальные размеры изображения
// сделать напрямую мы этого не может, так как в атрибуте width указано др значение

var image_object = new Image ( ) ;

image_object. onload = function ( )

// эта функция выполнится только тогда после успешной загрузки изображения
// а до тех пор пока загружается native_width/native_height равны 0

// определяем реальные размеры картинки
native_width = image_object. width ;
native_height = image_object. height ;

// Записываем эти данные
cur_img. data ( 'native_width' , native_width ) ;
cur_img. data ( 'native_height' , native_height ) ;

// Вызываем функцию mouseMove и происходит показ лупы
mouseMove. apply ( this , arguments ) ;
ui. glass . on ( 'mousemove' , mouseMove ) ;

image_object. src = src ;

return ;
> else <
// получаем реальные размеры изображения
native_width = cur_img. data ( 'native_width' ) ;
native_height = cur_img. data ( 'native_height' ) ;
>

// Вызываем функцию mouseMove и происходит показ лупы
mouseMove. apply ( this , arguments ) ;
ui. glass . on ( 'mousemove' , mouseMove ) ;
> ) ;

На этом все. Эффект лупы для изображений готов. Для более детального знакомства и уж тем более использования рекомендую скачать исходники, так как здесь приведен не весь код ❗


Просмотр демо страницы и скачивание исходников не доступно

Уважаемый читатель, XoZblog существует и развивается за счёт доходов от ненавязчивой рекламы. Если не затруднит, добавьте этот сайт в исключение AdBlock. Спасибо за понимание!

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на страницу ВКонтакте или добавляйте в круги на Google+. Не забывайте оставлять комментарии, спасибо!

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на еженедельную почтовую рассылку или на новостную ленту RSS. Спасибо!


Как сделать эффект лупы?

Нужна помощь! Как это сделать. как соединить лупу( растр с корела) с эфектом увеличения (Magnify) что бы лупу передвигать и она увеличивала карту?

[РЕШЕНО]

1. Смещаешь Anchor Point слоя лупы в середину стекла
2. Привязываешь центр эффекта увеличения к положению лупы с помощью выражений и его "спиральки". Теперь они будут связаны.
3. Эффект увеличения наверное лучше применить к Adjustment layer, тогда он будет действовать на все, что ниже находится.

Если что то осталось не понятным, то прикладывай скриншоты для более детального разговора.

а такой вопрос можно ли это увеличение сделать статичным к примеру в углу, а картинка внутри чтоб двигалась когда я центр вожу?

Читайте также: