demo 微信毛玻璃效果


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas catch red</title>
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" type="text/javascript"></script>
    <link href="blur.css" rel="stylesheet" type="text/css">
    <meta name="viewport"
          content=" height = device-height,
                    width = device-width,
                    initial-scale = 1.0,
                    minimum-scale = 1.0,
                    maximum-scale = 1.0,
                    user-scalable = no"/>
</head>
<body>
    <div id="blur-div">
        <img id="blur-img" src="image.jpg">
        <canvas id="canvas"></canvas>
        <a id="rest-button" href="javascript:rest()" class="button">reset</a>
        <a id="show-button" href="javascript:show()" class="button">show</a>
    </div>
    <script src="blur.js" type="text/javascript"></script>
</body>
</html>

  

var canvasWidth = window.innerWidth;
var canvasHeight = window.innerHeight;

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

canvas.width = canvasWidth;
canvas.height = canvasHeight;

var image = new Image();
var radius = 50;
var clippingRegion = {x:400, y: 200, r:50};
var leftMargin = 0;
var topMargin = 0;
var timer = null;
image.src = "image.jpg";

image.onload = function (e){
    $("#blur-div").css("width",canvasWidth+"px");
    $("#blur-div").css("height",canvasHeight+"px");

    $("#blur-img").css("width",image.width+"px");
    $("#blur-img").css("height",image.height+"px");

    leftMargin = (image.width - canvas.width)/2;
    topMargin = (image.height - canvas.height)/2;

    $("#blur-image").css("top",String(-topMargin)+"px");
    $("#blur-image").css("left",String(-leftMargin)+"px");

    initCanvas()
}

function initCanvas(){
    var theLeft = leftMargin<0?-leftMargin:0;
    var thetop = topMargin<0?-topMargin:0;
    clippingRegion = { x: Math.random()*(canvas.width - 2*radius - 2*theLeft) + radius + theLeft,
                       y: Math.random()*(canvas.height - 2*radius - 2*thetop) + radius + thetop, r:radius };
    draw(image, clippingRegion);
}

function setClippingRegion(clippingRegion){
    context.beginPath();
    context.arc(clippingRegion.x, clippingRegion.y, clippingRegion.r, 0, Math.PI *2,false);
    context.clip();
}

function draw(image, clippingRegion){
    context.clearRect(0,0,canvas.width, canvas.height);

    context.save();
    setClippingRegion(clippingRegion);
    context.drawImage( image,
        Math.max(leftMargin,0),
        Math.max(topMargin, 0),
        Math.min(canvas.width,image.width), Math.min(canvas.height,image.height),
        leftMargin<0?-leftMargin:0,
        topMargin<0?-topMargin:0,
        Math.min(canvas.width,image.width), Math.min(canvas.height,image.height) );
    context.restore();
}

function rest(){

if( timer != null ){
        clearInterval(timer)
        timer = null
    }
    initCanvas()
};
function show(){
   if(timer == null){
   	timer = setInterval(
	function (){
        clippingRegion.r +=20;
       if(clippingRegion.r > 2*Math.max(canvas.width,canvas.height)){
           clearInterval(timer);
       }
        draw(image,clippingRegion);
    },30);

   }

};

canvas.addEventListener("touchstart",function(e){
    e.preventDefault()
});

  

*{
    margin:0 0;
    padding:0 0;
}

#blur-div{
    overflow: hidden;;
    margin:0 auto;
    position: relative;

}

#blur-img{;
    margin:0 auto;
    display: block;

    filter: blur(20px);
    -webkit-filter: blur(20px);
    -moz-filter: blur(20px);
    -ms-filter: blur(20px);
    -o-filter: blur(20px);

    position: absolute;
    top:0px;
    left:0px;

    z-index:0 ;
}

#canvas{
    display: block;
    margin:0 auto;

    position: absolute;
    left: 0px;
    top:0px;

    z-index: 100;

}

.button{
    display:block;
    position: absolute;
    z-index: 200;

    width:100px;
    height:30px;

    color: white;
    text-decoration: none;
    text-align: center;
    line-height: 30px;

    border-radius: 5px;
    cursor: pointer;

}

#rest-button{
    left:50x;
    bottom: 20px;
    background-color: #058;
}

#rest-button:hover{
    background-color: #047;
}

#show-button{
    right:50px;
    bottom:20px;
    background-color: #085;
}

#show-button:hover{
    background-color: #074;
}
时间: 2024-10-24 23:51:23

demo 微信毛玻璃效果的相关文章

[转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟就落地了嘛,然后捡瓜的人很多,然后国内外开始了各种探讨,从界面到动画,从兼容到实现等.其中,“毛玻璃”一次梆梆出世

CSS技巧收集——毛玻璃效果

CSS技巧收集--毛玻璃效果 原文地址    http://www.cnblogs.com/ghost-xyx/p/5677168.html 先上 demo和 源码 其实毛玻璃的模糊效果技术上比较简单,只是用到了 css 滤镜(filter)中的 blur 属性.但是要做一个好的毛玻璃效果,需要注意很多细节. 比如我们需要将上图中页面中间的文字区域变成毛玻璃效果,首先想到的是给其设置一个透明度,并添加模糊滤镜: .content { background-color: rgba(0,0,0,0.

iOS 8.0 毛玻璃效果UIVisualEffect

随着iOS8.0和OS X 10.0的发布,大量的毛玻璃效果随处可见. 以前我们实现毛玻璃效果,更多是通过CGImage来实现.现在,XCode6中自带了实现这一效果的API.API如下: typedef NS_ENUM(NSInteger, UIBlurEffectStyle) { UIBlurEffectStyleExtraLight, UIBlurEffectStyleLight, UIBlurEffectStyleDark } NS_ENUM_AVAILABLE_IOS(8_0); NS

CSS技巧收集——毛玻璃效果(深入理解滤镜filter)

原文链接:http://www.cnblogs.com/ghost-xyx/p/5677168.html 先上 demo和 源码 其实毛玻璃的模糊效果技术上比较简单,只是用到了 css 滤镜(filter)中的 blur 属性.但是要做一个好的毛玻璃效果,需要注意很多细节. 比如我们需要将上图中页面中间的文字区域变成毛玻璃效果,首先想到的是给其设置一个透明度,并添加模糊滤镜: .content { background-color: rgba(0,0,0,0.3); -webkit-filter

移动端UI设计越来越流行的高斯模糊(Gaussian blur)和毛玻璃效果(磨砂效果),如何使用Android RenderScript简单实现?

高斯模糊(Gaussian blur)和毛玻璃效果(亦称磨砂效果),近两年在移动端的UI设计上越来越流行,特别是iOS手机上出现的较多,iOS系统也提供了相应的API帮助开发人员分分钟实现这两个效果.而Android系统则经历了一个漫长的探索过程,对图片的处理,从Java算法到NDK方式实现等,各种摸索层出不穷. 值得欣慰的是,Google终于在API 11中引入了 RenderScript ,一个强大的图片处理框架,帮助Android开发人员专注于图片处理算法而不是API的调度工作.使用Ren

Android高斯模糊技术,实现毛玻璃效果(转)

本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235930&idx=1&sn=e328709c41ae208a9e41ef79d38cbeed&scene=24&srcid=09104fpQDG98JcRcUB9Ec7BN#wechat_redirect http://blog.csdn.net/grp0916/article/details/50494712 Android高

用swing实现了io7的毛玻璃效果

话不多说,上图 我new 了一些按钮,每个按钮的位置和背景颜色是随机的,其中有一些按钮的背景色每隔一秒变一次,拖动顶层panel,panel下的所有控件都将会模糊,而且是实时和动态的,比如下图,按钮为选择状态 panel背后的有些按钮在实时的变色,同样可以及时的模糊,模糊效果在很多应用上可以使用,模糊的背景能减弱视觉疲劳,还可以吸引用户的注意力. 源码地址:http://download.csdn.net/detail/lw421058391/7731725 用swing实现了io7的毛玻璃效果

CSS遮罩效果和毛玻璃效果

前面的话 本文将详细介绍CSS遮罩效果和毛玻璃效果 遮罩效果 普通遮罩 一般地,处理全屏遮罩的方法是使用额外标签 <style>.overlay{ position:fixed; top: 0;right: 0;left: 0;bottom: 0; background:rgba(0,0,0,0.8); } .lightbox{ position:absolute; top: 0;right: 0;left: 0;bottom: 0; margin:auto; z-index:1; width

用css使图片产生毛玻璃效果

毛玻璃的图片效果,使得其显示更加唯美,用户体验更佳,所以在手机端电脑端应用甚广 比如ios系统: 所以现在我们就来看看毛玻璃效果的实现方法吧: 首先这是html的主要内容: <div class="container"> <div class="mat_class"></div> <p class="word">SHOW TIME</p> </div> 这里container