5-2模糊美食发红包看美食

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>发红包了能看的照片</title>
<link rel="stylesheet" type="text/css" href="css/photo.css">
</head>
<body>
<div class="blurDiv">
    <img class="blurImg" id="blurImg" src="images/pic.jpg">
    <canvas id="myCanvas"></canvas>
    <a href="javascript:reset()" class="button" id="buttonReset">想看我么</a>
    <a href="javascript:show()" class="button" id="buttonShow">收到红包</a>
</div>
<script src="js/photo.js" type="text/javascript"></script>
</body>
</html>

CSS:
body {
  padding: 0;
  margin: 0;
}
.blurDiv {
  position: relative;
  width:877px;
  height: 672px;
  margin: 50px auto 0;/*外边距:顶部50px 左右水平居中 底部0*/
}
.blurDiv .blurImg {
  width: 870px;
  height: 672px;
  display: block;/*把行元素强制转换为块元素*/
  filter: blur(20px);/*滤镜:模糊程度20px*/
  -webkit-filter: blur(20px);/*webkit保留 否则filter没有作用*/
  position: absolute;
  top: 0;
  left: 0;
  z-index: 0;
}
.blurDiv #myCanvas {
  display: block;
  margin: 0 auto;
  z-index: 99;
  position: absolute;
  top: 0;
  left: 0;
}
 .blurDiv .button {
  display: block;
  width: 240px;
  height: 60px;
  border-radius: 5px;/*边框圆角5px*/
  line-height: 60px;/*行高60px*/
  text-align: center;/*文字水平居中*/
  position: absolute;
  top: 105%;
  font-family: arial;
  font-size: 1.5em;/*em是字体大小的单位,与px的区别在此不做详细介绍*/
  color: #fff;
  text-decoration: none;/*清除字体样式*/
  z-index: 999;
}
 /*给该元素设置绝对定位和背景颜色*/
.blurDiv #buttonReset {
    left: 7%;/*距离父元素左边7%*/
  background-color: #c86814;
}
/*当鼠标悬浮在该元素时,背景颜色变为#ffb151*/
.blurDiv #buttonReset:hover {
  background-color: #ffb151;
}
.blurDiv #buttonShow {
    right: 7%;/*距离父元素右边7%*/
  background-color: #ff2f2e;
}
.blurDiv #buttonShow:hover {
  background-color: #ff596b;
}

JS:
var canvasWidth = 877;//声明画布的宽
var canvasHeight = 672;//声明画布的高
var canvas = document.getElementById("myCanvas");//获取画布
var context = canvas.getContext("2d");//获取画布的上下文
canvas.width = canvasWidth;
canvas.height = canvasHeight;
var image = new Image();//声明图片
var radius = 50;//声明半径
image.src = "images/pic.jpg";//获取图片路径
image.onload = function(e){
	initCanvas();//初始画布
}
function initCanvas(){
	Region =
	{x:Math.random()*(canvas.width-2*radius)+radius,y:Math.random()
	*(canvas.height-2*radius)+radius,r:radius}
	draw(Region);//绘制图片
}
//绘制圆形.用clip()方法剪切圆形区域
function setRegion(Region){
	context.beginPath();
	context.arc(Region.x,Region.y,Region.r,0,Math.PI*2,false);
	context.clip();
}
function draw(){
	//用于每次清除上一次绘制的圆形,保证只显示一个圆形区域
	context.clearRect(0,0,canvas.width, canvas.height);
	context.save();
	setRegion(Region);
	context.drawImage(image,0,0);
	context.restore();
}
//单击事件reset()方法,在该方法中调用initCanvas()方法,每次在不同的位置绘制圆形区域。
function reset(){
	initCanvas();
}
//单击事件show()方法,在该方法中调用draw(image)方法,使圆形半径大于画布,这时就可以绘制完整的图片了,也就是收到红包的效果。
function show(){
	Region.r = 2*Math.max(canvas.width,canvas.height);
	draw(image,Region);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值