array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Js特效之放大镜(淘宝商品展示) - 爱码网

放大镜具体效果为:一张图片,鼠标移上去出现一个半透明的框,随着鼠标移动,半透明框随着鼠标移动,且鼠标始终处于半透明框的中间,同时在特定区域显示被半透明框覆盖图片部分的放大部分。如下图所示:

Js特效之放大镜(淘宝商品展示)

分析:要实现如图效果,需要处理两方面的事件。

问题一:要获取鼠标位置,并且鼠标始终处于半透明框的中心位置;且半透明框可以随鼠标移动而移动。

解决一:可以使用Js特效之放大镜(淘宝商品展示)来获取鼠标的位置,并且处理兼容性问题,半透明框绝对定位,可以通过控制left和top值来控制它的移动,可以通过减法来使鼠标位置处于框的中心,并且可以通过最大最小left和top值来控制半透明框不能移除图片。

问题二:如何使下方出现图片并且可以显示不同区域。

解决二:下部设置两个DIV,大的包含在小的里面,设置图片为背景,小的overflow=hidden;通过控制它的scrollLeft和scrollTop值让他滚动。

问题三:如何将半透明框覆盖区域和div展示框显示同步并放大。

解决三:透明框/图片=展示框/放大后图片,并且展示框值得变化等于透明框值变化的N倍。N等于前面比例的倒数。

代码如下:

  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title></title>
  6     <style type="text/css">
  7         *{
  8             padding: 0;
  9             margin: 0;
 10         }
 11         #photo{
 12             width: 400px;
 13             height: 225px;
 14             background: url("images/ico1.jpg") no-repeat;
 15             position: relative;
 16         }
 17         #drag{
 18             width: 80px;
 19             height: 45px;
 20             background: white;
 21             opacity: 0.5;
 22             position: absolute;
 23             left: 0;
 24             top: 0;
 25             display: none;
 26         }
 27         #show{
 28             margin-top: 20px;
 29             width: 400px;
 30             height: 225px;
 31             overflow: hidden;
 32             display: none;
 33         }
 34         #big{
 35             width: 2000px;
 36             height: 1125px;
 37             background: url("images/ico1.jpg") no-repeat;
 38             background-size: 100%;
 39         }
 40     </style>
 41 </head>
 42 <body>
 43 <div >
 44     <div >
 45     </div>
 46 </div>
 47 <div >
 48     <div >
 49     </div>
 50 </div>
 51 <script type="text/javascript">
 52     var photo=document.getElementById("photo");
 53     var drag=document.getElementById("drag");
 54     var show=document.getElementById("show");
 55     var big=document.getElementById("big");
 56     window.onmousemove=function(event){
 57         //兼容性处理
 58         var e=event||window.event;
 59         //为了使鼠标处于透明框的中心部位,需要用鼠标位置减去透明框宽度和高度的一半
 60         //x,y分别为经过处理后的鼠标横纵坐标
 61         var x= e.clientX-drag.offsetWidth/2;
 62         var y= e.clientY-drag.offsetHeight/2;
 63         //maxL,maxT分别为最大横向和最大纵向移动距离
 64         var maxL=photo.offsetWidth-drag.offsetWidth;
 65         var maxT=photo.offsetHeight-drag.offsetHeight;
 66         //如果横向坐标超过最大距离,使横向坐标等于最大距离
 67         if(x>=maxL){
 68             x=maxL;
 69         }
 70         //如果横向坐标小于最大距离,使横向坐标等于0
 71         if(x<=0){
 72             x=0;
 73         }
 74         //如果纵向坐标超过最大距离,使纵向坐标等于最大距离
 75         if(y>=maxT){
 76             y=maxT;
 77         }
 78         //如果纵向坐标小于0,使纵向坐标等0
 79         if(y<=0){
 80             y=0;
 81         }
 82         //控制透明框的位置
 83         drag.style.left=x+"px";
 84         drag.style.top=y+"px";
 85         //控制展示框显示的位置
 86         show.scrollLeft=5*x;
 87         show.scrollTop=5*y;
 88     }
 89     //图片的鼠标移入事件
 90     photo.onmouseover=function(){
 91         //透明框和展示框出现
 92         show.style.display="block";
 93         drag.style.display="block";
 94     }
 95     //图片的鼠标移出事件
 96     photo.onmouseout=function(){
 97         //透明框和展示框隐藏
 98         show.style.display="none";
 99         drag.style.display="none";
100     }
101 </script>
102 </body>
103 </html>
View Code

相关文章: