html5 – 使用CSS3可以创建这种图像屏蔽效果吗?

前端之家收集整理的这篇文章主要介绍了html5 – 使用CSS3可以创建这种图像屏蔽效果吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用 CSS3看过一些很酷的图像遮罩和其他效果.只使用CSS3我们可以在下面的代码中看到这种效果,或者看到工作小提琴.

http://jsfiddle.net/s6u9a/

HTML

  1. <canvas id="canvas1" width="400" height="400"></canvas>

使用Javascript

  1. var can = document.getElementById('canvas1');
  2. var ctx = can.getContext('2d');
  3.  
  4. can.addEventListener('mousemove',function(e) {
  5. var mouse = getMouse(e,can);
  6. redraw(mouse);
  7. },false);
  8.  
  9.  
  10. function redraw(mouse) {
  11. console.log('a');
  12. can.width = can.width;
  13. ctx.drawImage(img,0);
  14. ctx.beginPath();
  15. ctx.rect(0,500,500);
  16. ctx.arc(mouse.x,mouse.y,70,Math.PI*2,true)
  17. ctx.clip();
  18. ctx.drawImage(img2,0);
  19. }
  20.  
  21. var img = new Image();
  22. img.onload = function() {
  23. redraw({x: -450,y: -500})
  24. }
  25. img.src = 'http://placekitten.com/400/400';
  26.  
  27. var img2 = new Image();
  28. img2.onload = function() {
  29. redraw({x: -450,y: -500})
  30. }
  31. img2.src = 'http://placekitten.com/400/395';
  32.  
  33.  
  34. function getMouse(e,canvas) {
  35. var element = canvas,offsetX = 0,offsetY = 0,mx,my;
  36.  
  37. if (element.offsetParent !== undefined) {
  38. do {
  39. offsetX += element.offsetLeft;
  40. offsetY += element.offsetTop;
  41. } while ((element = element.offsetParent));
  42. }
  43.  
  44. mx = e.pageX - offsetX;
  45. my = e.pageY - offsetY;
  46.  
  47. return {
  48. x: mx,y: my
  49. };
  50. }

解决方法

这是使用背景图像的替代方法.它更灵活,你得到一个圆形(或任意形状)视口:

http://jsfiddle.net/maackle/66uCs/

HTML

  1. <div class="masker">
  2. <img class="base" src="http://lorempixel.com/400/400/cats/1" />
  3. <div class="overlay"></div>
  4. </div>

CSS

  1. .masker {
  2. position: relative;
  3. }
  4. .overlay {
  5. position: absolute;
  6. display: none;
  7. width: 100px;
  8. height: 100px;
  9. border-radius: 50%;
  10. background: url(http://lorempixel.com/400/400/cats/2) no-repeat;
  11. }

jQuery 1.10.1

  1. $('.masker').on('mousemove',function (e) {
  2. var r,x,y,top,left,bottom,right,attr,$base,$overlay;
  3. r = 100;
  4. $base = $(this).find('.base');
  5. $overlay = $(this).find('.overlay');
  6. x = e.pageX - $base.offset().left;
  7. y = e.pageY - $base.offset().top;
  8. top = y - r / 2;
  9. left = x - r / 2;
  10. if (x < 0 || y < 0 || x > $base.width() || y > $base.height()) {
  11. $overlay.hide();
  12. } else {
  13. $overlay.show().css({
  14. 'background-position': '' + (-left) + 'px ' + (-top) + 'px','left': left,'top': top
  15. });
  16. }
  17. });
  18.  
  19. //just for good measure
  20. $('.masker').on('mouSEOut',function (e) {
  21. $(this).find('.overlay').hide();
  22. });

猜你在找的HTML5相关文章