[Java教程]用js实现放大镜的效果

0 2016-05-22 22:00:06

第一次发博客,还有点小激动,本人现在正在天津上大学,希望以后从事前端这一行业,学习的时间不长,写博客为了记录自己的学习过程和收获,当然也算是巩固。可能写的东西不会像大牛那样高大上,只是一些基本的内容,当然我也会收藏一些我认为好的,不错的文章(其实最主要是我能看懂。。。。)。我相信以后自己也能够写出高大上的东西。加油!

废话说的有点多,说正事。前几天看了一段潭州教育的教学视频,其中的老师是用JQuery实现放大镜的效果(老师讲的是在是太慢,各种乱扯,跳着看的)。由于我还没有好好的学习过JQuery,但是那些基本的代码还是可以看懂的,所以就想拿现在正在学习的js练一下手,最后还是成功的实现了这个效果。

思路:先让move块和bimg块隐藏,当鼠标移动到box上时,使move块和bimg块显示,获取鼠标当前的位置,然后经过计算给与move块和bimg块适当的值实现放大镜效果(move块和bimg块的位置的计算后面有详细介绍)

放大镜

css样式:*{ margin:0px; padding:0px;}#box{ width:430px; height:430px; margin:100px; margin-left:17%; position:relative;//这里使用相对定位,好让其他的元素能依靠这个元素定位}#move{ background-image:url(../images/move.png); width:220px; height:220px; position:absolute; left:0px; top:0px; display:none;//先让他隐藏,用js使其显示}#bimg{ width:430px; height:430px; overflow:hidden; position:absolute; top:0px; left:450px; display:none;//先让他隐藏,用js使其显示}#bimg img{ width:800px; height:800px; position:absolute; top:0px; left:0px;}

Javascript:function bigimg(){ var bbox = document.getElementById("box"); var bmove = document.getElementById("move"); var bbimg = document.getElementById("bimg"); var b_bimg = document.getElementById("b_bimg"); bbox.onmouseover = function(){//鼠标移动到box上显示大图片和选框 bbimg.style.display = "block"; bmove.style.display="block"; } bbox.onmouseout = function(){//鼠标移开box不显示大图片和选框 bbimg.style.display = "none"; bmove.style.display="none"; } bbox.onmousemove = function(e){//获取鼠标位置 var x = e.clientX;//鼠标相对于视口的位置 var y = e.clientY; var t = bbox.offsetTop;//box相对于视口的位置 var l = bbox.offsetLeft; var _left = x - l - bmove.offsetWidth/2;//计算move的位置 var _top = y - t -bmove.offsetHeight/2; if(_top<=0)//滑到box的最顶部 _top = 0; else if(_top>=bbox.offsetHeight-bmove.offsetHeight)//滑到box的最底部 _top = bbox.offsetHeight-bmove.offsetHeight ; if(_left<=0)//滑到box的最左边 _left=0; else if(_left>=bbox.offsetWidth-bmove.offsetWidth)//滑到box的最右边 _left=bbox.offsetWidth-bmove.offsetWidth ; bmove.style.top = _top +"px";//设置move的位置 bmove.style.left = _left + "px"; var w = _left/(bbox.offsetWidth-bmove.offsetWidth);//计算移动的比例 var h = _top/(bbox.offsetHeight-bmove.offsetHeight); var b_bimg_top = (b_bimg.offsetHeight-bbimg.offsetHeight)*h;//计算大图的位置 var b_bimg_left = (b_bimg.offsetWidth-bbimg.offsetWidth)*w; b_bimg.style.top = -b_bimg_top + "px";//设置大图的位置信息 b_bimg.style.left = -b_bimg_left + "px"; } }

效果图:

1、move块的计算

黑色箭头:var x = e.clientX;//鼠标相对于视口的位置var y = e.clientY;

红色箭头:var t = bbox.offsetTop;//box相对于视口的位置var l = bbox.offsetLeft;

橙色箭头:var _left = x - l - bmove.offsetWidth/2;//计算move的位置var _top = y - t -bmove.offsetHeight/2;

2、bimg块的计算

利用move块在可移动范围内的比例来设置大图的位置

move块的移动范围:bbox.offsetWidth-bmove.offsetWidth

move块现在的坐标占可移动范围的比例:var w = _left/(bbox.offsetWidth-bmove.offsetWidth);//计算移动的比例var h = _top/(bbox.offsetHeight-bmove.offsetHeight);

bimg的移动范围:b_bimg.offsetHeight-bbimg.offsetHeight

bimg的位置:var b_bimg_top = (b_bimg.offsetHeight-bbimg.offsetHeight)*h;//计算大图的位置var b_bimg_left = (b_bimg.offsetWidth-bbimg.offsetWidth)*w;

限制move块移动范围的内容简单,在介绍move块的计算中以涉及到了,就不在多说。这样简单的放大镜效果就实现了。

2016年5月22日    21:33

本文网址:http://www.shaoqun.com/a/223818.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JS

0

放大镜用java怎么写_[Java教程]用js实现放大镜的效果相关推荐

  1. 怎么才能学好Java编程写好Java代码?

    动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦! 刚刚接触Java编程的朋友总会遇到一些情况,比如:跟着Java基础教程看过一遍后,自己写代码的时候却无从下手:写 ...

  2. java文件边读边写_[Java教程]node.js 利用流实现读写同步,边读边写

    [Java教程]node.js 利用流实现读写同步,边读边写 0 2017-09-10 13:00:14 //10个数 10个字节,每次读4b,写1blet fs=require("fs&q ...

  3. java 多线程写缓存,Java多线程_缓存对齐

    1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...

  4. java爬虫拉勾网_[Java教程]node.js爬虫爬取拉勾网职位信息

    [Java教程]node.js爬虫爬取拉勾网职位信息 0 2017-03-14 00:00:21 简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳 ...

  5. javascript java 传参_[Java教程]【JS】JavaScript中的参数传递

    [Java教程][JS]JavaScript中的参数传递 0 2017-02-18 00:00:24 ECMAScript中所有函数的参数都是按值传递的,简单讲就是函数外部的值 复制给函数内部的参数, ...

  6. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  7. java手写_怎么用Java制作手写板,如果能提供代码更好

    展开全部 做什么事都要学会GOOGLE. 搜索JAVA记事本. 你新建62616964757a686964616fe78988e69d8331333262343139一个类叫TEST. import ...

  8. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

  9. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

最新文章

  1. php如何添加超链接,如何使用phpcms添加超链接
  2. R语言基于Boruta进行机器学习特征筛选(Feature Selection)
  3. SpaceVim snippets C配置
  4. editplus sn
  5. Windows环境下使用Mycat模拟分库分表-读写分离案例
  6. mysql查询结果更新到新表_MySQL查询结果复制到新表的方法(更新、插入)
  7. 字节跳动高工面试:mysql索引视频教程
  8. [转载] Python字符串的截取
  9. hyperledger的个人分享
  10. 控制按键的 几种方法
  11. 中小企业管理软件(管家婆辉煌版2top+)安装教程
  12. 【Redis系列】Redis常用数据类型命令大全,6K字爆肝整理,路过不容错过
  13. android开发_ViewGroup(组视图)-- 五大布局
  14. mysql+tinyint+符号_mysql中TINYINT的取值范围
  15. hello world你知多少------300种编程语言中的hello world程序汇
  16. 品牌如何热搜不断?五菱社会化超级运营的玩梗之路
  17. 福州黑白风格的婚纱照拍摄介绍
  18. 【转】Guide to Elliptic Curve Cryptography(ECC椭圆曲线算法1)
  19. 数据可视化项目(一)
  20. 读懂2014年全球互联网广告新生态

热门文章

  1. 计算机组成原理实验一 运算器实验
  2. 今天的打拼,是为了与众不同的明天!
  3. 《 Kubebuilder v2 使用指南 》-P1-总览篇
  4. 窗口桌面置顶(主窗口和子窗口)
  5. STM32中断优先级概念
  6. 算法思想之递归分治回溯
  7. jQuery 基础 筛选和遍历 jQuery 对象
  8. BZOJ 3159: 决战 解题报告
  9. X86汇编学习小结----cmp 完整版本
  10. 电子技术中的偏置的含义