英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
react-图片放大
用于触摸和鼠标的响应式 React 图片放大组件。
为购物网站产品详情设计。
功能包括:
- 原地和并排图像放大
- 正负空间导向镜选项
- 交互提示
- 可配置的放大图像尺寸
- 可选的放大图像外部渲染
- 悬停意图
- 长按手势
- 渐隐过渡
- 基本 react-slick 轮播支持
状态
演示
在 CodePen 上 实时实验 react-image-magnify。使用 “更改视图” 按钮选择编辑模式或不同的布局选项。使用 “Fork” 按钮保存您的更改。
安装
npm install react-image-magnify
使用
如果您从 v1x 升级到 v2x,请参阅发行说明。
import ReactImageMagnify from 'react-image-magnify';
...
<ReactImageMagnify {...{
smallImage: {
alt: 'Wristwatch by Ted Baker London',
isFluidWidth: true,
src: watchImg300
},
largeImage: {
src: watchImg1200,
width: 1200,
height: 1800
}
}} />
...
在示例项目中查看更多使用示例。
必需属性
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| smallImage | 对象 | 不适用 | 小图像信息。见下文的 小图像。 |
| largeImage | 对象 | 不适用 | 大图像信息。见下文的 大图像。 |
可选样式属性
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| className | 字符串 | 不适用 | 应用于根容器元素的 CSS 类。 |
| style | 对象 | 不适用 | 应用于根容器元素的样式。 |
| imageClassName | 字符串 | 不适用 | 应用于小图像元素的 CSS 类。 |
| imageStyle | 对象 | 不适用 | 应用于小图像元素的样式。 |
| lensStyle | 对象 | 不适用 | 应用于着色镜片的样式。 |
| enlargedImageContainerClassName | 字符串 | 不适用 | 应用于放大图像容器元素的 CSS 类。 |
| enlargedImageContainerStyle | 对象 | 不适用 | 应用于放大图像容器元素的样式。 |
| enlargedImageClassName | 字符串 | 不适用 | 应用于放大图像元素的 CSS 类。 |
| enlargedImageStyle | 对象 | 不适用 | 应用于放大图像元素的样式。 |
可选交互属性
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| fadeDurationInMs | 数字 | 300 | 放大图像淡入/淡出持续的毫秒数。 |
| hoverDelayInMs | 数字 | 250 | 延迟悬停触发的毫秒数。 |
| hoverOffDelayInMs | 数字 | 150 | 延迟悬停关闭触发的毫秒数。 |
| isActivatedOnTouch | 布尔 | false | 触摸时立即激活放大。可能影响滚动。 |
| pressDuration | 数字 | 500 | 延迟长按激活(长触摸)的毫秒数。 |
| pressMoveThreshold | 数字 | 5 | 长按激活期间允许的移动像素数。 |
可选行为属性
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| enlargedImagePosition | 字符串 | 旁边(触摸时为覆盖) | 放大图像的位置。可以是“旁边”或“覆盖”。 |
| enlargedImageContainerDimensions | 对象 | {width: '100%', height: '100%'} | 指定放大图像容器的尺寸,作为具有宽度和高度属性的对象。值可以用百分比表示(例如 '150%')或数字表示(例如 200)。百分比基于小图像的尺寸。数字为像素。当 enlargedImagePosition 设置为 'over' 时(触摸输入的默认值),此设置不生效。 |
| enlargedImagePortalId | 字符串 | 不适用 | 通过指定目标元素的 id,将放大的图像渲染到您选择的 HTML 元素中。需要 React v16。默认情况下,触摸输入会被忽略 - 参见 isEnlargedImagePortalEnabledForTouch。 |
| isEnlargedImagePortalEnabledForTouch | 布尔值 | false | 指定门户渲染是否应对触摸输入生效。 |
| hintComponent | 功能 | (提供的) | 对组件类或函数组件的引用。提供了默认值。 |
| shouldHideHintAfterFirstActivation | 布尔值 | true | 仅在第一次交互开始之前显示提示。 |
| isHintEnabled | 布尔型 | false | 启用提示功能。 |
| hintTextMouse | 字符串 | 悬停以放大 | 鼠标提示文本。 |
| hintTextTouch | 字符串 | 长按缩放 | 触摸提示文本。 |
| shouldUsePositiveSpaceLens | 布尔值 | false | 指定一个正空间透镜以替代默认的负空间透镜。 |
| 镜头组件 | 功能 | (提供) | 指定自定义镜头组件。 |
小图像
{
src: String, (required)
srcSet: String,
sizes: String,
width: Number, (required if isFluidWidth is not set)
height: Number, (required if isFluidWidth is not set)
isFluidWidth: Boolean, (default false)
alt: String,
onLoad: Function,
onError: Function
}
有关响应式图像的更多信息,请参考以下资源:
响应式图像 101
响应式图像 - srcset 和 sizes 属性
大图
{
src: String, (required)
srcSet: String,
sizes: String,
width: Number, (required)
height: Number, (required)
alt: String, (defaults to empty string)
onLoad: Function,
onError: Function
}
支持
请提交一个问题。
示例项目
git clone https://github.com/ethanselzer/react-image-magnify.git
cd react-image-magnify
npm install
npm run build
cd example
yarn
yarn start
如果您的默认浏览器未自动启动,请打开一个新的浏览器窗口并访问 localhost:3000
开发
git clone https://github.com/ethanselzer/react-image-magnify.git
cd react-image-magnify
npm install
npm run #See available commands
示例项目 可在开发中使用。
要在进行更改时自动重新构建源代码,请运行 yarn run build-watch。
贡献
请使用 Github Flow 进行贡献。创建一个分支,添加提交,并 打开一个拉取请求。
归属
感谢以下社区成员提出问题和拉取请求。
@damien916 @colepatrickturner @andreatosatto90 @nathanziarek @hombrew @smashercosmo @sk1e @vidries @ionutzp @sbloedel @spiderbites @Akarshit @eddy20vt @evannoronha @benjaminadk @nilsklimm @m4recek @yaser-ali-vp @carlgunderson @tojvan @kskonecka @Coriou
你太棒了!✨💫
许可证
麻省理工学院
- 本文标题:react-image-magnify - 为购物网站设计的响应式图片放大组件
- 本文链接:https://www.cn121.com/shop/ethanselzer-react-image-magnify.html
- 原项目:ethanselzer/react-image-magnify 版权归原作者 ethanselzer 及贡献者所有
- 收录信息:本站于 2026-10-08 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 ethanselzer/react-image-magnify。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。