h5实现放大镜效果的代码


本文摘自PHP中文网,作者不言,侵删。

这篇文章分享给大家的内容是关于h5实现放大镜效果的代码,内容很有参考价值,希望可以帮到有需要的小伙伴。

最近公司做的艺术品放大效果,和以往的淘宝放大镜效果有些不同,这个需要在本图上放大

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

<html>

<head>

  <meta charset="UTF-8">

  <style type="text/css">

    *{margin:0;padding:0}

    .demo{width: 680px;height: 480px;position:relative;background:#333;margin:20px auto;overflow:hidden;}

    .small_box{position:absolute;/*left:100px;*/top: 0;/*height: 480px;*/}

    .big_box{width: 100px;height: 100px;border:1px solid #999;background:url(./images/cc.jpg) no-repeat;position:absolute;top: 0;left: 0;border-radius:50%;cursor:none;display:none;box-shadow: 0px 0px 8px #000;}

  </style>

</head>

<body>

  <p id="demo" class="demo">

    <img id="small_box" class="small_box" src="images/cc.jpg"/>

    <p id="big_box" class="big_box">

    </p>

  </p>

  <script type="text/javascript" src="./js/jquery-1.10.1.min.js"></script>

  <script type="text/javascript">

    $(function(){

      (function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery)

      // 画原本的宽高

      var origin_img = new Image();

      origin_img.src = $('.small_box').attr('src');

      var origin_w = origin_img.width;

      var origin_h = origin_img.height;

      // 计算画缩放的宽高

      var now_h = 480;

      var now_w = (origin_w/origin_h)*now_h;

      $('.small_box').css({'left':(680 -now_w)/2+'px','height':now_h+'px'})

      console.log($('.small_box').offset().left);

      $('#demo')[0].onmousemove = function(ev){

        var _event=ev||window.event;

        var x = _event.pageX||_event.clientX,

            y = _event.pageY||_event.clientY;

        var left=x- $('#big_box').width()/2 - $('.demo').offset().left ;

        var top=y - $('#big_box').width()/2 - $('.demo').offset().top ;

        $('#big_box')[0].style.left = left+ 'px';

        $('#big_box')[0].style.top = top + 'px';

        var percentX = ($('.small_box').offset().left -x)/now_w;

        var percentY = ($('.small_box').offset().top -y)/now_h;

        $('.big_box').css({

          'background-position-x':percentX*origin_w  + $('#big_box').width()/2+'px',

          'background-position-y':percentY*origin_h  + $('#big_box').height()/2+'px'

        })

      }

      // 滚轮滚动

      $('.big_box').on('mousewheel',function(_event,delta){

        var x = _event.pageX||_event.clientX,

            y = _event.pageY||_event.clientY;

        var left=x- $('#big_box').width()/2 - $('.demo').offset().left ;

        var top=y - $('#big_box').width()/2 - $('.demo').offset().top ;

        var targe_w = $(this).width();

        var targe_h = $(this).height();

        if (delta>0) {

          targe_w += 3;

          targe_h += 3;

          $('#big_box')[0].style.left = left -3+ 'px';

          $('#big_box')[0].style.top = top -3 + 'px';

        }else{

          targe_w -= 3;

          targe_h -= 3;

          $('#big_box')[0].style.left = left +3+ 'px';

          $('#big_box')[0].style.top = top +3 + 'px';

        }

        $(this).width(targe_w);

        $(this).height(targe_h);

      })

      //显示放大镜

      $('.demo').on('mouseover',function(){

        $('#big_box').show();

      });

      $('.demo').on('mouseout',function(){

        $('#big_box').hide();

      });

    })

  </script>

  <br/> <br/> <br/> <br/> <br/>

</body>

</html>

相关推荐:

HTML5 Canvas实现烟花绽放的特效

canvas实现爱心和彩虹雨的效果

以上就是h5实现放大镜效果的代码的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

使用HTML5的canvas和javascript创建一个绘图程序的示例代码

怎样编写灵活、稳定、高质量的html和css代码

详细介绍HTML5元素及基本语法

html下拉菜单怎么做?html下拉菜单的代码实例介绍

h5实现桌面通知以及提示功能的实例

javascript如何实现submit功能

html页面怎么设置不停刷新页面

HTML5手机开发-滚动和惯性缓动的代码实例

bootstrap.css样式表是什么

html的内联元素和块级元素有哪些不同

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...