smartJQueryZoom(smartZoom) 的使用方法
smartZoom 是一个我很喜欢用的库。
但是这个库有一些不完善的地方。
比如BUG。
比如使用上可能遇到的问题。
<article>
<div id="zoom_box" class="zoom-box" style="display: none">
<img>
</div>
</article>
比如说,我们想用 smartZoom 渲染这个img。
前提条件:这个库依赖 jQuery.
首先,它的父元素的宽高必须是个像素值。设 100% 可能会出问题。
可以用 jquery 计算并赋值宽高。
// 加数字值和项目样式有关 不通用
$("#zoom_box").css({
width: $("article").width() + 40 + 'px',
height: $("article").height() + 25 + 'px',
})
其次。
不要给你想渲染的 img 设宽高。像素值和 100% 什么的都不需要。
最后调用渲染一下就好。
$("#zoom_box img").smartZoom({
'dblClickEnabled': false,
'containerBackground': "#000"
});
渲染时的参数,github 上有说明。
options = {'top' : '0', // top 像素值 一般用不上
'left' : '0', // left 像素值 一般用不上
'width' : '100%', // 宽度 如果你不希望图片的显示区域是这个DIV全部区域,那么需要设置一下
'height' : '100%', // 高度 同上
'easing' : 'smartZoomEasing', // jquery easing 函数 如果浏览器不支持CSS3 那么需要写一下
'maxScale' : 3, // 最大放大倍率
'dblClickMaxScale' : 1.8, // 双击时的最大放大倍率
'mouseEnabled' : true, // 是否可以用鼠标与渲染区域交互
'scrollEnabled' : true, // 是否可以用滚轮缩放图片
'dblClickEnabled' : true, // 是否可以双击放大图片
'mouseMoveEnabled' : true, // 是否支持鼠标移动交互
'moveCursorEnabled' : true, // 是否可以鼠标拖动图片
'touchEnabled' : true, // 是否支持触摸交互(触摸屏)
'dblTapEnabled' : true, // 是否支持触摸双击(触摸屏)
'pinchEnabled' : true, // enable zoom when user pinch on target
'touchMoveEnabled' : true, // 是否可以通过触摸事件拖动图片
'containerBackground' : '#FFFFFF', // 如果不用样式表,那么可以设置背景色,透明背景需要设为 transparent
'containerClass' : ''// 用的样式表 定制化样式时会用到
}
以上。
2019.08.16 更新:
实际上,想给 img 设宽高100%也是可以的。但是DOM结构要改一下。
<div id="zoom_box" class="zoom-box" style="display: none">
<div id="inner" class="inner">
<img>
</div>
</div>
此时,现在的 div#inner 相当于以前的 img。现在的 img 宽高是 100% ,永远和 div#inner 一样大。
// inner 的宽度用 inner 的高度和图片比例去计算
$("#inner").css({
width: ($("article").height() + 25) * (1440 / 810) + 'px',
height: ($("article").height() + 25) + 'px',
})
渲染方法也需要改一下。
$("#zoom_box #inner").smartZoom({
'dblClickEnabled': false,
'containerBackground': "#000"
});
也就是说,以前 smartzoom 渲染绑在 img 上,现在绑在 div#inner 上。
OVER。
smartJQueryZoom(smartZoom) 的使用方法的更多相关文章
- smartJQueryZoom(smartZoom) 存在的兼容性BUG,以及解决方法
smartJQueryZoom 是一个很好用的库. 它基于jQuery,可以对某个元素(比如 img)进行渲染,渲染之后可以放大这个区域,在做图片浏览时很好用. 但它有一个兼容性BUG: 当浏览器不是 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
随机推荐
- ConcurrentHashMap源码解析-Java7
目录 一.ConcurrentHashMap的模型图 二.源码分析-类定义 2.1 极简ConcurrentHashMap定义 2.2 Segment内部类 2.3 HashEntry内部类 2.4 ...
- 使用Kubeflow构建机器学习流水线
在此前的文章中,我已经向你介绍了Kubeflow,这是一个为团队设置的机器学习平台,需要构建机器学习流水线. 在本文中,我们将了解如何采用现有的机器学习详细并将其变成Kubeflow的机器学习流水线, ...
- maven依赖冲突以及解决方法
什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的.每个显式声明的类包都会依赖于一些其它的隐式类包, ...
- vmware 虚拟机安装失败如何解决
1.最好安装在默认路径2,安装之前先卸载之前安装的软件,卸载使用最经典的Windows软件卸载工具Windows install clean up其他方式的卸载我使用了很多次都不行,网上很多方法都看了 ...
- 查看日志文件常用命令:tail,cat,tac,head,echo
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- Python 简明教程 --- 11,Python 元组
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 软件工程的目标是控制复杂度,而不是增加复杂性. -- Dr. Pamela Zave 目录 我们在上 ...
- Win8.1卸载64位Oracle Database 11g的详细图文步骤记录
Oracle Database 11g在Win8 上的卸载过程记录. Step1停用oracle服务:进入计算机管理/任务管理器,在服务中,找到oracle开头的所有服务,右击选择停止: Step2 ...
- IDEA创建SpringBoot的多模块项目教程
最近在写一个多模块的SpringBoot项目,基于过程总了一些总结,故把SpringBoot多个模块的项目创建记录下来. 首先,先建立一个父工程: (1)在IDEA工具栏选择File->New- ...
- 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务
一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...
- 看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题. 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较 ...