商城项目中,有鼠标移入图片放大的功能,研究一下实现

Image zoom

body {

display: flex;

justify-content: center;

align-items: center;

min-height: 100vh;

}

#image {

width: 300px;

height: 300px;

background-color: #000;

background-image: url(https://placekitten.com/900/900);

background-size: 300px 300px;

background-repeat: no-repeat;

}

#image[zoomed] {

background-size: 900px 900px;

background-position: calc(var(--x) * 100%) calc(var(--y) * 100%);

}

let el = document.querySelector('#image')

// PC端操作

el.addEventListener('mouseenter', enterHandler)

el.addEventListener('mousemove', moveHandler)

el.addEventListener('mouseleave', leaveHandler)

// 移动端操作

el.addEventListener('touchstart', enterHandler)

el.addEventListener('touchmove', moveHandler)

el.addEventListener('touchend', leaveHandler)

function enterHandler(e) {

e.target.setAttribute('zoomed', 1)

moveHandler(e)

}

function moveHandler(e) {

// getBoundingClientRect用于获取元素相对于视窗的位置集合。集合中有top, right, bottom, left等属性

let rect = e.target.getBoundingClientRect()

let offsetX, offsetY

let isH5 = ['touchstart', 'touchmove', 'touchend'].includes(e.type)

// 是移动端,并且touches事件存在

if (isH5 && e.touches[0]) {

offsetX = e.touches[0].pageX - rect.left

offsetY = e.touches[0].pageY - rect.top

e.preventDefault()

} else {

// PC端

offsetX = e.offsetX

offsetY = e.offsetY

}

// 元素的位置信息

let x = offsetX / rect.width

let y = offsetY / rect.height

// 设置元素属性,用于计算background-position的位置

e.target.style.setProperty('--x', x)

e.target.style.setProperty('--y', y)

}

function leaveHandler(e) {

e.target.removeAttribute('zoomed')

moveHandler(e)

}

具体效果复制下去打开看看

php 鼠标点击图片放大,鼠标移入放大图片预览效果实现相关推荐

  1. html实现360展示图片,js html5 360度全景图片预览效果

    特效描述:js html5 360度全景图片 预览效果.html5实现360度全景,html5 720度全景图,html5全景图,html5全景图源代码,html5 3d全景,360度全景图,3d36 ...

  2. element表格图片放大_图片在表格中,鼠标经过图片上方,图片有放大预览效果 (vue+element )...

    element的鼠标移到图片时,放大预览效果.实现思路:element的 el-table + el-popover export default { data () { return { tabDa ...

  3. 鼠标移到到图片,图片向上滑动预览效果

    <!DOCTYPE html> <html> <head><title>鼠标移到到图片,图片向上滑动预览效果</title><scri ...

  4. 实现图片点击放大预览效果

    前因 在开发微信公众号时,产品经理要求实现图片可以点击放大,并且点击下一张的效果.因为是第一次做公众号的项目,也是第一次在移动端要做图片预览的效果,所以在网上查了相关资料. 实现路程 首先,在以往的项 ...

  5. Axure RP9——【图片放大预览效果】

    图片放大预览效果 目录 I.实现效果 II.实现步骤 I.实现效果 一般适用于做电商平台图片的放大预览,以此更方便我们看清内容细节. 鼠标停留在商品大图时,会出现一个预览区域,并且右侧会出现预览区域的 ...

  6. html js 图片放大效果,JavaScript实现图片放大预览效果

    代码实现: Document .preview-img { position: relative; height: 398px; } .mask { display: none; position: ...

  7. 微信小程序:previewImage实现图片放大预览效果

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 前言 记录一下做项目的过程中遇到的图片放大预览效果的实现 实现的是点击图片可以放大预览,这个效果在京东淘宝都可以看到 ...

  8. elementui 使用el-image 控件 解决 通过点击查看按钮两次才能 实现预览图片

    需求:点击查看按钮,将图片显示出来. 问题:查看按钮必须触发两次才会将图片显示出来 前端效果: 点击查看按钮,弹出来图片 图片展示: 解决方法有两种: 第一种 调用Image 的源码中的image-v ...

  9. 基于JS实现购物车图片局部放大预览效果

    在电商网站中,商品图片是非常重要的展示元素.为了让用户更好地了解商品细节,一些网站会提供图片局部放大预览效果.这篇文章将介绍如何使用JavaScript实现购物车图片局部放大预览效果. 第一步:HTM ...

  10. JQuery实现超链接和图片提示预览效果

    文章目录 超链接提示 效果 html css jQuery部分 解决问题1 解决问题2 解决问题3 完整jQuery代码 图片预览 html css jQuery代码 实现效果 其实现在的浏览器已经具 ...

最新文章

  1. iOS开发UI篇—transframe属性(形变)
  2. mysql 唯一性约束报错_怪异的MySQL Online DDL报错Duplicate entry
  3. Leetcode 102. 二叉树的层次遍历
  4. 前端判断是否安装桌面应用_前端开发人员的桌面应用神器 Electron
  5. mybatis 映射成多个list_SSM:Mybatis架构与原理
  6. Java标识符和数据类型
  7. Linux使用Mac键盘,System76 推出 Linux 键盘 看完手痒了!
  8. Stanford NLP 第四课 神经网络复习
  9. java注解拦截_轻松实现java拦截器+自定义注解
  10. 计算机共享怎么ip设置,如何设置网络打印机共享
  11. 【NOIP提高组五校联考】挖金矿
  12. cocos2dx 3.2 学习篇之六(精灵运动,自定义运动轨迹(太极八卦))
  13. Java 一个数字、字母、汉字各占几个字节
  14. 看电影哪款蓝牙耳机降噪效果最好?性价比降噪蓝牙耳机推荐
  15. 国外问卷调查详细讲解
  16. C#如何设置Excel文档保护——工作簿、工作表、单元格
  17. 无路可逃java攻略_孤岛惊魂5
  18. 四、移植 JZ2440 开发板
  19. EVE安装与简单使用教程
  20. The Balance(详细讲解)

热门文章

  1. java连接到mysql_[操作系统]Java如何连接到MySQL数据库的
  2. Lyapunov and Stability Theory
  3. ecshop 模板 php代码,ecshop无法在模板文件.dwt和.lbi中直接添加php代码的解决方法...
  4. php如何禁用浏览器的缓存,php如何禁止浏览器使用缓存页面
  5. dos命令行设置网络优先级_替代windows系统下cmd的10款命令行工具
  6. java中static作用_java中static作用详解
  7. 两端分散对齐怎么设置_Word文字很难对齐?用这4个方法,2秒可对齐所有文字!...
  8. java 面向对象继承的思想_Java面向对象思想
  9. EnjoyingSoft之Mule ESB开发教程第六篇:Data Transform - 数据转换
  10. python request 留位置4