How to reveal part of blurred image where mouse is hovered?

后端 未结 5 1874
别跟我提以往
别跟我提以往 2020-12-13 07:41

How to reveal part(small portion) of blurred image where mouse is hovered??Currently it blurs whole image but I want the part of the blurred image where the mouse i

5条回答
  •  抹茶落季
    2020-12-13 08:08

    I have created a fiddle with a jQuery solution.It blurs hovered part of image .Hope it helps:

    Fiddle

    jQuery

    $('.pic').mousemove(function(event){
        event.preventDefault();
        var upX=event.clientX;
        var upY=event.clientY;
        $('#blurr').css({'display':'block','top':''+(upY-15)+'px','left':''+(upX-15)+'px'});
    });
    

    CSS

    .pic{
        display:inline-block;
    }
    /*below CSS for the blurring div*/
    #blurr{
        position:absolute;
        display:none;
        width:30px;
        height:30px;
        background-color:rgb(240,240,240);
        border-radius:50%;
        -moz-border-radius:50%;
        -webkit-border-radius:50%;
        box-shadow:0px 0px 10px 10px white;
        -moz-box-shadow:0px 0px 10px 10px white;
        -webkit-box-shadow:0px 0px 10px 10px white;
        opacity:0.8;
        filter:alpha(opacity=80); /* For IE8 and earlier */
    }
    

    Update 28/Feb/2014

    Fiddle : Reveal part of transparent-overlayed image

    HTML

    follow picture

    CSS

    html,body{
        margin:0px;
        padding:0px;
    }
    #container{
        position:relative;
    }
    .blurPic{
        position:absolute;
        top:0px;
        left:0px;
        width:0px;
        height:0px;
        box-shadow:0px 0px 0px 160px white inset; 
        -moz-box-shadow:0px 0px 0px 160px white inset; 
        -webkit-box-shadow:0px 0px 0px 160px white inset; 
        -ms-box-shadow:0px 0px 0px 160px white inset; 
        opacity:0.9;
        filter:alpha(opacity=0.9); /* For IE8 and earlier */
    }
    

    jQuery

    /**Give equal width and height as  to .blurPic**/
    var hgt = $('.blurPic').width($('#container img').width());
    $('.blurPic').height($('#container img').height());
    /*****************************************************/
    
    /*******Get shadow values*****/
    var result = $('.blurPic').css('boxShadow').match(/(-?\d+px)|(rgb\(.+\))/g)
    var color = result[0],
        y = result[1],
        x = result[2],
        blur = result[3];
    /******************************/
    
    /**Change box-shadow on mousemove over image**/
    var blurStartW = hgt.width()/2;
    var blurStartH = hgt.height()/2;
    $('.blurPic').mousemove(function(event){
        event.preventDefault();
        var scrollLeftPos = $(window).scrollLeft(),
        scrollTopPos = $(window).scrollTop(),
        offsetLft = hgt.offset().left,
        offsetTp = hgt.offset().top;
        var upX=event.clientX;
        var upY=event.clientY;
        $(this).css({boxShadow : ''+(-offsetLft+upX-blurStartW+scrollLeftPos)+'px '+(-offsetTp+upY-blurStartH+scrollTopPos)+'px 20px 100px white inset'});
    });
    /*********************************************/
    
    /***reset box-shadow on mouseout***/
    $('.blurPic').mouseout(function(){
        $(this).css({boxShadow : '0px 0px 0px 160px white inset'});
    });
    /**********************************/
    

    Update 01/Mar/2014

    Fiddle : Reveal part of Blurred image

    The above fiddle uses Vague.js because CSS3 blurring may not work in all browsers

    HTML

    follow picture

    CSS

    html,body{
        margin:0px;
        padding:0px;
    }
    #container{
        position:relative;
        margin-left:100px;
        display:inline-block;
    }
    .revealPic{
        position:absolute;
        top:0px;
        left:0px;
        background-image:url('http://i.imgur.com/IGKVr8r.png');
        background-color:white;
        background-position:0px 0px;
        background-repeat:no-repeat;
        width:50px;
        height:50px;
        /*making div circular*/
        border-radius:50%;
        -moz-border-radius:50%;
        -webkit-border-radius:50%;
        -ms-border-radius:50%;
        -khtml-border-radius: 50%;
    }
    

    jQuery

    var hgt = $('#container'),
        bgt = $('#container .revealPic');
    
    var bgtHalfW = bgt.width()/2,
        bgtHalfH = bgt.height()/2;
    
    /**Change position of .revealPic and background-image within it on mousemove over container**/
    hgt.mousemove(function(event){
        event.preventDefault();
        bgt.show();
        var scrollLeftPos = $(window).scrollLeft(),
        scrollTopPos = $(window).scrollTop(),
        offsetLft = hgt.offset().left,
        offsetTp = hgt.offset().top;
        var upX=event.clientX;
        var upY=event.clientY;
        bgt.css({backgroundPosition : ''+(offsetLft-upX+bgtHalfW-scrollLeftPos)+'px '+(offsetTp-upY+bgtHalfH-scrollTopPos)+'px',top:''+(-offsetTp+upY-bgtHalfH+scrollTopPos)+'px',left:''+(-offsetLft+upX-bgtHalfW+scrollLeftPos)+'px'});
    });
    /*********************************************/
    
    /*Hide .revealPic div on mouseout*/
    hgt.mouseout(function(){
        bgt.hide();
    });
    /*********************************/
    
    /*Using vague.js to make blurred image*/
    var vague = $("#container img").Vague({intensity:10});
    vague.blur();
    /**************************************/
    

提交回复
热议问题