在图片上直接画出带超级链接热区元素map和area相信大家并不陌生,Dreamweaver等网页制作软件都有直接在图片上绘制带超级链接的热区工具,但是直接绘制的热区是不能随着图片自适应放大和缩小的,现在很多网页对浏览器分辨率兼容性要求很高,多数都是用的百分比来定义图片的尺寸,希望图片能随着分辨率的不同,显示设备的不同,自适应的显示最佳效果,这种情况下如何定义图片热区的尺寸可以随着图片一起变化呢?

这是我今天遇到的问题,问了百度个把小时也没有找到答案,忽悠人的错误答案也不少。热区的范围和坐标主要是由area元素的coords属性来决定的,例如下面这行代码

<area shape="rect" coords="338,308,609,589" >

这是一个矩形热区的范围和坐标,你可以看到有四个数字,这四个数字代表的是什么意思呢,前两个数字是矩形热区左上角的点相对于图片总长宽的横坐标和纵坐标,后面两个数字是矩形热区右下角的点相对于图片总长宽的横坐标和纵坐标。网上有的说,如果图片是用百分比来定义的话,这四个数字也用百分比定义应该就可以吧,很遗憾不行,这地方貌似只能是纯整数的数值方能起效果,加个“%”符号都不起任何作用了。想不通百度贴吧里居然还有不少答案是说用百分比数值来定义。什么都问百度也不一定都是对的,如果这篇文章是被百度搜出来的,那你一定要耐心的看完。

我们如何定义个热区让它随图片的大小来自由缩放呢?不急,只要功夫深,铁杵磨成绣花针,方法总是有的,借助js可以重新定义coords的属性值,让其随着图片的大小来生成新的数值。怎么做?高手应该想到办法了,我这里就只介绍下jquery方法吧。假如我有一张id=pic的图片,宽度是1920,高度是1080,代码如下

<img id="pic" src="pic.jpg" alt="" usemap="#Map" width="1920" height="1080" />
那么绘制一个矩形热区,是可以随着图片大小自由缩放的呢,代码参考下面

var picw = $("#pic").width();
var pich = $("#pic").height();
var x1 = parseInt(picw*0.1820);
var y1 = parseInt(pich*0.2955);
var x2 = parseInt(picw*0.3280);
var y2 = parseInt(pich*0.5645);
$(".box").attr("coords",'"'+x1+','+y1+','+x2+','+y2+'"')

你一定很奇怪,上面这段代码各个数值都要乘以一个小数是怎么得出来,首先你还是要在原始大小的图片上绘制一个你所需要的矩形范围和坐标,例如下面这行代码

<area shape="rect" coords="338,308,609,589" href="/" class="box" target="_blank" onfocus= "this.blur() " >

然后用所得到的coords属性值对应的去除原始图片的长和宽就获得了当前图片热区范围和位置与原始图片的比例,然后每次都用js获取图片的宽和高来乘以这个比例值就总是可以得到热区相对于图片的真实大小和位置,不管图片怎么变化,热区也会随之改变。建议函数写在onResize的方法里,这样在浏览器人为缩放的时候,图片热区也会随图片变化自由变化。

[jquery] 图片热区随图片大小自由缩放的更多相关文章

  1. Discuz!图片查看插件(支持鼠标缩放、实际大小、旋转、下载)

    Discuz!图片查看插件(支持鼠标缩放.实际大小.旋转.下载) 图片查看是网站中的常用功能,用于展示详细的图片.在discuz图片插件的基础上进行了改造,因此这篇文章主要从以下几个方面来讨论图片查看 ...

  2. jquery实现上传图片及图片大小验证、图片预览效果代码

    jquery实现上传图片及图片大小验证.图片预览效果代码 jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture() ...

  3. jquery 实现点击图片居住放大缩小

    该功能是基于jquery实现的,所以 第一步则是引入jquery jquery下载地址:https://jquery.com/download/ 或者使用此时调试的版本(3版本) /*! jQuery ...

  4. jQuery功能强大的图片查看器插件

    简要教程 viewer是一款功能强大的图片查看器jQuery插件.它可以实现ACDsee等看图软件的部分功能.它可以对图片进行移动,缩放,旋转,翻转,可以前后浏览一组图片.该图片查看器还支持移动设备, ...

  5. PHP图片裁剪_图片缩放_PHP生成缩略图

    在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...

  6. java常用开发工具类之 图片水印,文字水印,缩放,补白工具类

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  7. (转)jQuery轻量级响应式图片轮播插件ResponsiveSlides.js(仅1kb)也可以做纯文本轮播

    ResponsiveSlides.js是一个展示同一容器内图片的轻量级响应式jQuery幻灯片插件(tiny responsive slideshow jQuery plugin).它支持包括IE6在 ...

  8. NPOI 图片在单元格等比缩放且居中显示

    NPOI导出的图片默认是在单元格左上方,这使得图片在单元格显示得很难看.居中,且等比缩放,才是图片在单元格上的完美展示. /// <summary> /// 图片在单元格等比缩放居中显示 ...

  9. java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。

    java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...

随机推荐

  1. T4模板_根据DB生成实体类

    为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文件添加代码: <#@ tem ...

  2. linux字体安装

    Google查了一下,果然Windows下的ttf字体与GNOME是兼容的!我立即确定了我的方案——使用Windows下的“微软雅黑”体作为桌面和应用程序的默认字体! 1. 首先获得一套“微软雅黑”字 ...

  3. (原+转)ubuntu16中莫名死机及重新安装显卡驱动

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5992693.html 参考网址: http://blog.csdn.net/u012581999/ar ...

  4. (原)vs2013编译boost1.60库

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5394236.html 参考网址: http://www.cnblogs.com/chuncn/arch ...

  5. Ubuntu13.04手动安装nvidia显卡驱动

    1. 下载最新版的nVidia驱动,命名为NVIDIA.run. http://www.nvidia.com/page/drivers.html 2.编辑blacklist.conf. sudo ge ...

  6. ZendFramework2 源码分析 init_autoloader.php

    // Composer autoloading if (file_exists('vendor/autoload.php')) { // 加载自动加载器 $loader = include 'vend ...

  7. JSONP跨域的原理

    一种脚本注入行为 在 2011年10月27日 那天写的     已经有 12671 次阅读了 感谢 参考或原文   服务器君一共花费了23.005 ms进行了2次数据库查询,努力地为您提供了这个页面. ...

  8. load Event

    document.addEventListener("DOMContentLoaded");------------------load document.body.addEven ...

  9. QTableView中嵌入复选框CheckBox 的四种方法总结

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  10. 线程池 异步I/O线程 <第三篇>

    在学习异步之前先来说说异步的好处,例如对于不需要CPU参数的输入输出操作,可以将实际的处理步骤分为以下三步: 启动处理: 实际的处理,此时不需要CPU参数: 任务完成后的处理: 以上步骤如果仅仅使用一 ...