- Как реализовать увеличение картинки при наведении курсора CSS
- HTML
- CSS
- JavaScript
- Шаг 1
- Шаг 2
- Шаг 3
- Как изображение увеличивается в div preview?
- Шаг 4
- Как сделать — Увеличение при наведении
- Увеличить при наведении
- Как увеличить при наведении
- Пример
- ВЫБОР ЦВЕТА
- Сообщить об ошибке
- Ваше предложение:
- Спасибо Вам за то, что помогаете!
- Как сделать плавное увеличение картинки при наведении — эффект на чистом CSS
- Css наведение увеличение при наведении
- Соберем весь код «увеличить при наведении.«.
- Выведем пример кода «увеличить при наведении.«.
- Разбираем с примером — как увеличить при наведении медленно.
- Соберем весь код «увеличить при наведении медленно.«.
- Пример как увеличить при наведении медленно.
- Нужно ещё медленне увеличивать при навдении:
Как реализовать увеличение картинки при наведении курсора CSS
Скорее всего, вы сталкивались с таким эффектом как увеличение картинки при наведении курсора при посещении интернет-магазинов. При наведении курсора мыши на разные части изображения товара они отображаются в увеличенном виде.
В этой статье рассказывается о том как реализовать увеличение картинки при наведении курсора CSS и JavaScript без использования библиотеки jQuery.
HTML
HTML-код довольно простой: строка разделена на два столбца. Первый из них содержит два изображения, превью которых будет выводиться. Второй содержит div с идентификатором ‘preview’, который будет отображать превью. Оба изображения имеют одинаковую ширину и высоту.
CSS
Для preview div него задан определенный размер, границы и отступы. Свойство background-repeat: no-repeat гарантирует, что фоновое изображение не будет повторяться. margin-left: auto и margin-right: auto выравнивают этот div по центру относительно родительского элемента.
Для изображений задано свойство display: block , чтобы они не выводились рядом друг с другом. Для родительского div задано свойство text-align: center , чтобы выровнять изображения по центру. При наведении на изображения курсор мыши меняется на иконку лупы с минусом.
В медиа запросе я задал значение display: inline-block , чтобы отображать оба изображения в одной строке, если ширина экрана меньше или равна 767 пикселям.
#preview < margin-top: 10px; border:1px solid black; width:350px; height:500px; background-repeat: no-repeat; margin-left: auto; margin-right: auto; >#samples < text-align: center; >#samples img < margin: 10px; display: block; border: 2px solid #6A6462; >#samples img:hover < cursor: zoom-in; border: 0; -moz-box-shadow:2px 2px 7px 2px rgba(130,130,130,1),-1px -1px 7px 2px rgba(130,130,130,1); -webkit-box-shadow: 2px 2px 7px 2px rgba(130,130,130,.7),-1px -1px 7px 2px rgba(130,130,130,1); box-shadow: 2px 2px 7px 2px rgba(130,130,130,.7),-2px -2px 7px 2px rgba(130,130,130,1); >@media screen and (max-width: 767px) < #samples img < display: inline-block; >>
JavaScript
С помощью JavaScript реализован ключевой код, благодаря которому работает превью. Разделим его написание на шаги.
Шаг 1
Сначала используются функции ‘zoomIn’ и ‘zoomOut ‘, чтобы увеличивать и уменьшать изображения. Данные функции определены в JavaScript. Я подключил к этим двум функциям два события – onmousemove и onmouseout соответственно.
Шаг 2
Начнем с функции zoomOut . Я записал div с id ‘preview’ в переменную pre и установил visibility hidden .
Шаг 3
В функции zoomIn задано visibility visible. Всякий раз, когда курсор мыши перемещается по изображениям, будет виден div с превью. В остальных случаях он будет скрыт.
Условие $(‘#zoom1’).is(‘:hover’) проверяет, находится ли курсор мыши над первым изображением (с идентификатором ‘zoom1’). Если условие истинно (true), то первое изображение устанавливается в качестве фонового изображения для div с id preview. Таким образом, каждый раз, когда вы наводите курсор мыши на первое изображение, div становится видимым с первым изображением в качестве фона. То же самое относится и ко второму изображению.
Как изображение увеличивается в div preview?
Я установил для изображения ширину и высоту 100px и 250px. Но его реальные размеры гораздо больше. Так как я не установил это же ограничение размера для фонового изображения div preview, то оно принимает его полную ширину и высоту. Ширина и высота этого блока меньше ширины фонового изображения. Поэтому оно не полностью покрывает весь div и создает ощущение, будто изображение увеличивается.
function zoomIn(event) < var pre = document.getElementById("preview"); pre.style.visibility = "visible"; if ($('#zoom1').is(':hover')) < var img = document.getElementById("zoom1"); pre.style.backgroundImage = "url('pic1.jpg')"; >if ($(‘#zoom2’).is(‘:hover’)) < var img = document.getElementById("zoom2"); pre.style.backgroundImage = "url('pic2.jpg')"; >> function zoomOut()
Шаг 4
Оператор var posX = event.offsetX присваивает значение координаты X позиции курсора мыши относительно изображения, на котором мышь перемещается в var posX . Аналогично, posY сохраняет значение координаты Y.
Положение фонового изображения div с определяется оператором pre.style.backgroundPosition=(-posX*2.5)+»px «+(-posY*5.5)+»px» .
Я использовал отрицательные значения posX и posY, чтобы фон изображения превью перемещался в направлении, противоположном движению курсора мыши.
Кроме этого, некоторые числа умножаются на posX и posY, чтобы можно было видеть изображение превью полностью при движении курсора.
Ниже представлена полная версия исходного кода анимации.
#preview < margin-top: 10px; border:1px solid black; width:350px; height:500px; background-repeat: no-repeat; margin-left: auto; margin-right: auto; >#samples < text-align: center; >#samples img < margin: 10px; display: block; border: 2px solid #6A6462; >#samples img:hover < cursor: zoom-in; border: 0; -moz-box-shadow:2px 2px 7px 2px rgba(130,130,130,1),-1px -1px 7px 2px rgba(130,130,130,1); -webkit-box-shadow: 2px 2px 7px 2px rgba(130,130,130,.7),-1px -1px 7px 2px rgba(130,130,130,1); box-shadow: 2px 2px 7px 2px rgba(130,130,130,.7),-2px -2px 7px 2px rgba(130,130,130,1); >@media screen and (max-width: 767px) < #samples img < display: inline-block; >>
function zoomIn(event) < var pre = document.getElementById("preview"); pre.style.visibility = "visible"; if ($('#zoom1').is(':hover')) < var img = document.getElementById("zoom1"); pre.style.backgroundImage = "url('pic1.jpg')"; >if ($(‘#zoom2’).is(‘:hover’)) < var img = document.getElementById("zoom2"); pre.style.backgroundImage = "url('pic2.jpg')"; >var posX = event.offsetX; var posY = event.offsetY; pre.style.backgroundPosition=(-posX*2.5)+»px «+(-posY*5.5)+»px»; > function zoomOut()
Как сделать — Увеличение при наведении
Узнать, как увеличить/масштабировать элемент при наведении с помощью CSS.
Увеличить при наведении
Наведите курсор на зеленую коробку:
Как увеличить при наведении
Пример
.zoom:hover transform: scale(1.5); /* (150% зум — Примечание: если масштаб слишком велик, он будет выходить за пределы видового экрана) */
>
Совет: Зайдите на наш учебник CSS Трансформировать чтобы узнать больше о том, как масштабировать элементы.
Мы только что запустили
SchoolsW3 видео
ВЫБОР ЦВЕТА
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
ТОП Учебники
ТОП Справочники
ТОП Примеры
Получить сертификат
SchoolsW3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Как сделать плавное увеличение картинки при наведении — эффект на чистом CSS
Прочитав эту статью, вы узнаете, как сделать так, чтобы при наведении мышки, изображение плавно увеличивалось. И не просто увеличивалось в размерах, а чтобы создавался эффект зума.
Мы будем использовать только html и css. JavaScript нам не понадобится.
Итак, напишем немного html кода. Мы поместим нашу картинку img в блок с классом photo

Здесь я не добавляю какие-либо дополнительные классы к картинке, чтобы не запутывать вас при объяснении. Но на своем проекте, лучше будет, если вы тегу img добавите какой-то свой класс и будете обращаться к картинке по этому классу.
Далее перейдем к css. С помощью hover мы сможем менять значения у свойств.
В данном случае, мы увеличим картинку, изменив для нее свойство transform. Запишем это в коде:
Здесь мы прописали следующую инструкцию: при наведении (hover) на блок, в котором содержится картинка (класс photo), мы меняем значение transform у самой картинки (img).
Значение scale — это на сколько мы масштабируем картинку. По умолчанию идет значение 1.
Чтобы добавить немного плавности переходу, добавим свойство transition для тега img
Здесь мы указали, какое свойство будем меняться и сколько будет длиться переход.
Теперь картинка у нас увеличивается плавно, но она выходит за пределы свой условной рамки. Чтобы это исправить, нам нужно добавить к блоку photo свойство overflow со значением hidden
Мы, как бы, говорим: все что выходит за пределы этого блока — скрываем.
Но это еще не все, ведь браузер не знает, какой размер у нашего блока — поэтому нам нужно его задать. А для картинки прописать, чтобы она занимала всю ширину и высоту блока photo.
В итоге получится вот такой код:
Надеюсь вы поняли принцип, по которому можно делать увеличение картинки при ховере. Я прикреплю наше видео, где еще раз подробно все объясняю.
Css наведение увеличение при наведении
Для того, чтобы увеличить при наведении с помощью css вам понадобится:
Для примера возьмем картинку:
Добавим этому объекту — класс — с произвольным значением — «example».
Напишем стили и «увеличим при наведении» — первое, ну, чтобы увидеть края объекта добавим border.
Вам ещё нужно псевдокласс hover.
На него повесим «transform» с. ну пусть увеличение будет 1.3:
Соберем весь код «увеличить при наведении.«.
Css:
Выведем пример кода «увеличить при наведении.«.
Не совсем то, что нам нужно. слишком дергается и увеличивается слишком быстро!
Разбираем с примером — как увеличить при наведении медленно.
Сверху я показал пример — «увеличить при наведении.«, но получилось не очень красиво, потому, что увеличение происходит слишком быстро!
Поэтому! Давайте уменьшим скорость увеличения при наведении!
Для этого вам понадобится:
Весь код возьмем из первого пункта!
И добавим туда «transition» со значением «0.5s»:
Соберем весь код «увеличить при наведении медленно.«.
Css:
Пример как увеличить при наведении медленно.
Поступаем аналогично. размещаем код «увеличения при наведении медленно» прямо здесь:
Нужно ещё медленне увеличивать при навдении:
Если это все равно слишком быстро, то увеличиваем число в «transition» — давайте поставим «2 секунды»