图片查看插件Magnify使用详解

这次给大家带来图片查看插件Magnify使用详解,使用图片查看插件Magnify的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

因为一些特殊的业务需求,经过一个多月的蛰伏及思考,我开发了这款 jQuery 图片查看器插件 Magnify,它实现了 Windows 照片查看器的所有功能,比如模态窗的拖拽、调整大小、最大化,图片的缩放、旋转,平移、键盘控制等。插件的样式都是最基础的 CSS,定制非常容易,可以轻松修改成自己喜欢的样式。随后会陆续发布 React 及 Vue 相关版本的插件。本文主要介绍插件的特点及使用方法,而关于插件开发的细节将会在之后的具体文章中说明。

开发小记

由于最近工作繁忙,几乎每天都是晚上十点到家,然后开始编写插件,睡觉时已过凌晨,如今身心俱疲。因为没有找到相关的插件,所以很多问题都是绞尽脑汁独立思考,比如以鼠标为中心缩放图片、改变弹窗大小时对图片移动的限制、图片旋转之后的缩放、平移等问题,而开发插件最让人头疼的就是细节,甚至大部分时间是在修复单一功能的 bug 。

另外,开发插件的最大难度不是功能实现,而是如何设计插件,如何让插件的使用更简单、更方便。关于如何设计插件并不是本篇文章的重点,我会在之后专门写一篇介绍插件设计思想的文章。

插件所有的代码几乎都是在调整弹窗或者图片的 width、height、left、top ,所以兼容性问题不大,主要是 2D 旋转问题,IE 9 以下需要使用滤镜实现。为了方便调整样式,其中有很多相对位置的计算。

Magnify 采用了文件分离的方式编写,使用 npm 插件打包,并没有使用新语法,也没有使用现在流行的打包工具。使用 npm 工具已经是项目开发打包发布的一个趋势。

演示

如果你不想点开网址查看示例的话,可以通过下面的 CodePen 查看插件效果,除了视窗的大小之外,两种方式没有任何区别:

如果你的网速和其他原因不能打开 CodePen 的话,可以查看下面的图片演示。

主要功能

Magnify 的功能可以参考 Windows 照片查看器,基本完成了可以实现的所有功能。

1.模态窗拖拽

如果图片尺寸不大于展示区域,通过图片展示区域也可以拖拽弹窗。这和 QQ 图片查看器的操作方式是相同的。

图片查看插件Magnify使用详解

2.模态窗调整大小

目前的调整大小存在一点 bug,但不影响整体的使用。

图片查看插件Magnify使用详解

3.模态窗最大化

除了弹窗最大化,开发初期也设计了最小化的功能,但感觉有些鸡肋,所以暂时没有添加。

图片查看插件Magnify使用详解

4.图片缩放

可以通过鼠标滚轮、按钮、键盘等操作

图片查看插件Magnify使用详解

5.图片旋转

目前的图片旋转功能还没有添加支持 IE9 以下版本的代码。

图片查看插件Magnify使用详解

6.键盘控制

Magnify 和 Windows 照片查看器的按键是一样的

← 上一张 → 下一张 + 放大 – 缩小 ctrl + alt + 0 实际尺寸 ctrl + , 向左旋转 ctrl + . 向右旋转 7.全屏显示

Magnify 的全屏显示只实现了基本的展示功能,还没有实现幻灯片自动轮播的功能。全屏环境下使用键盘控制图片。

使用方法

Magnify 的使用和其他大多数 lightbox 插件的用法并没有两样,如果你习惯了其它插件的使用,使用 Magnify 也不会有任何障碍。

1.需要引用的文件


登录后复制

Magnify 默认使用 font-awesome 的图标,所以需要引用 font-awesome 的 css 文件。如果你想使用其它图标,可以修改 options 的 icons 参数。在之后的版本中,我可能会添加定制的字体图标文件或者使用 svg 图标。


登录后复制

2.HTML 结构

Magnify 默认使用以下结构,这样的结构可以做兼容处理,也是大多数 lightbox 使用的结构。

 图片查看插件Magnify使用详解 图片查看插件Magnify使用详解 图片查看插件Magnify使用详解

登录后复制

也可以使用下面更简洁的结构

图片查看插件Magnify使用详解图片查看插件Magnify使用详解图片查看插件Magnify使用详解

登录后复制

Magnify 的 HTML 结构包含以下几个选项

添加 src 属性可以链接到大图。如果在 标签中使用,它会覆盖 href 属性的值。添加 data-caption 属性可以显示标题。如果你不使用这个属性,插件会显示 URL 中的图片名。添加 data-group 属性可以对图片分组。 3.初始化插件

如果在 HTML 中添加 data-magnify 属性,插件会自动初始化。

手动初始化插件的方法和所有 jQuery 插件一样:

$('[data-magnify=gallery]').magnify(options);

登录后复制

参数配置

options = {  draggable: true,  resizable: true,  movable: true,  keyboard: true,  title: true,  modalWidth: 320,  modalHeight: 320,  fixedContent: true,  fixedModalSize: false,  initMaximized: false,  gapThreshold: 0.02,  ratioThreshold: 0.1,  minRatio: 0.1,  maxRatio: 16,  headToolbar: [   'maximize',   'close'  ],  footToolbar: [   'zoomIn',   'zoomOut',   'prev',   'fullscreen',   'next',   'actualSize',   'rotateRight'  ],  icons: {   maximize: 'fa fa-window-maximize',   close: 'fa fa-close',   zoomIn: 'fa fa-search-plus',   zoomOut: 'fa fa-search-minus',   prev: 'fa fa-arrow-left',   next: 'fa fa-arrow-right',   fullscreen: 'fa fa-photo',   actualSize: 'fa fa-arrows-alt',   rotateLeft: 'fa fa-rotate-left',   rotateRight: 'fa fa-rotate-right'  }}

登录后复制

关于插件参数的具体含义,我就不在此复制黏贴了,请大家参考 官方文档 的详细说明。如有问题,可以在此留言。

自定义样式

图片查看插件Magnify使用详解

因为插件的样式比较简单,所以修改起来也非常容易。除了 Windows 照片查看器,QQ 的图片查看器也非常的高大上。我们只要简单修改就可以实现 QQ 图片查看器的效果,但是部分功能比如缩略图还没有实现。

面对这样的图片查看器足以令人心旷神怡~

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

jquery动态合并单元格

JS实现表格中相同单元格合并

以上就是图片查看插件Magnify使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2782530.html

(0)
上一篇 2025年3月8日 16:31:59
下一篇 2025年3月8日 16:32:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • jQuery EasyUI 折叠面板的使用

    这次给大家带来jQuery EasyUI 折叠面板的使用,jQuery EasyUI 折叠面板使用的注意事项有哪些,下面就是实战案例,一起来看一下。 下面小编就为大家分享一篇jQuery EasyUI 折叠面板accordion的使用实例,…

    编程技术 2025年3月8日
    200
  • aja的异步上传插件

    这次给大家带来aja的异步上传插件,使用aja的异步上传插件的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例为大家分享了ajaxfileupload异步上传插件的使用方法,供大家参考,具体内容如下 服务器端采用struts2来处…

    编程技术 2025年3月8日
    200
  • vue的自定义动态组件使用详解

    这次给大家带来vue的自定义动态组件使用详解,使用vue自定义动态组件的注意事项有哪些,下面就是实战案例,一起来看一下。  学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,…

    2025年3月8日
    200
  • vue2全家桶是什么,如何使用?

    这次给大家带来vue2全家桶是什么,如何使用?,vue2全家桶是什么?使用的注意事项有哪些,下面就是实战案例,一起来看一下。  都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的…

    2025年3月8日
    200
  • H5的缓存Manifest的使用

    这次给大家带来H5的缓存Manifest的使用,使用H5的缓存Manifest注意事项有哪些,下面就是实战案例,一起来看一下。 在app中更新h5页面一直有缓存问题。默认什么都不做的情况下,app有一定的空间缓存页面。一开始更新之后会马上加…

    2025年3月8日 编程技术
    200
  • webpack自动刷新与解析的使用

    这次给大家带来webpack自动刷新与解析的使用,使用webpack自动刷新与解析的注意事项有哪些,下面就是实战案例,一起来看一下。 前端需要频繁的修改js和样式,且需要根据浏览器的页面效果不断的做调整;而且往往我们的开发目录和本地发布目录…

    2025年3月8日 编程技术
    200
  • React BootStrap框架如何使用

    这次给大家带来React BootStrap框架如何使用,使用React BootStrap框架的注意事项有哪些,下面就是实战案例,一起来看一下。 安装 【相关视频推荐:bootstrap教程】 在终端cd到你的项目目录下执行:$ npm …

    2025年3月8日
    200
  • vue中使用cropperjs

    这次给大家带来vue中如何使用cropperjs,vue中使用cropperjs的注意事项有哪些,下面就是实战案例,一起来看一下。 用vue的项目里需要对图片进行裁剪,于是使用了cropperjs,在使用的过程中也踩过一些坑,以下是在.vu…

    2025年3月8日
    200
  • Immutable及React应该如何使用

    这次给大家带来Immutable及React应该如何使用,Immutable及React使用的注意事项有哪些,下面就是实战案例,一起来看一下。 Immutable 可以给 React 应用带来数十倍的提升,也有人说 Immutable 的引…

    2025年3月8日
    200
  • plotly.js 绘图库怎样使用

    这次给大家带来plotly.js 绘图库怎样使用,使用plotly.js 绘图库的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了plotly.js 绘图库入门使用教程,分享给大家,具体如下: Plotly 缘起 这两天想在前端…

    2025年3月8日
    200

发表回复

登录后才能评论