JSFiddle - React, Tailwind, and code Playground

by kachibito

HTML

<div class='section span-24'>
        <div class='span-24'>
          <div class='foggy-comparison-wrapper'>
            <div class='foggy-comparison'>
              下のレイヤーはブラエフェクトがかかってます。
            </div>
          </div>
        </div>
        <div class='foggy-demo'>
          <div class='span-15 append-1'>

                            <img src='http://placekitten.com/200/300' style='float:left;'>
                          <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing
              elit. Duis commodo massa viverra diam pharetra quis
              dictum mauris bibendum. In eget tortor id risus
              suscipit facilisis. Duis luctus tortor non sem mollis
              sodales. Cras et cursus justo. Phasellus vel libero
              erat, vel mattis justo. Aenean tempor bibendum
              euismod. Vivamus erat justo, lacinia vitae facilisis
              quis, luctus sed mauris. Suspendisse lectus dolor,
              accumsan eu lacinia in, dapibus vitae nunc.
            </p>


          </div>
        </div>
      </div>

CSS

.foggy-comparison-wrapper { position: relative; }
      .foggy-comparison {
        position: absolute;
        z-index: 2;
        width: 350px;
        background: #eee;
        padding: 20px;
        top: 80px;
        left: 150px;
        box-shadow: rgba(0,0,0,0.5) 0px 0px 15px;
      }
.section{margin:25px;}
p{width:450px;}
img{padding-right:20px;}

JavaScript

// Foggy, v1.02
//
// Description: jQuery plugin for blurring page elements
// Homepage:    http://nbartlomiej.github.com/foggy
// Author:      [email protected]

(function( $ ){

  $.fn.foggy = function( options ) {

    var settings = $.extend( {
      opacity:      0.8,
      blurRadius:   2,
      quality:      16,
      cssFilterSupport: true
    }, options);

    var BlurPass = function(content, position, offset, opacity){
      this.content = content;
      this.position = position;
      this.offset = offset;
      this.opacity = opacity;
    };

    BlurPass.prototype.render = function(target){
      $('<div/>', { html: this.content }).css({
        position: this.position,
        opacity: this.opacity,
        top: this.offset[0],
        left: this.offset[1]
      }).appendTo(target);
    };

    var Circle = function(radius){
      this.radius = radius;
    };

    Circle.prototype.includes = function(x,y){
      if (Math.pow(x,2) + Math.pow(y,2) <= Math.pow(this.radius, 2)){
        return true;
      } else {
        return false;
      }
    };

    Circle.prototype.points = function(){
      var results = [];
      for (var x = -this.radius; x<=this.radius; x++){
        for (var y = -this.radius; y<=this.radius; y++){
          if (this.includes(x,y)){
            results.push([x,y]);
          }
        }
      }
      return results;
    };

    var ManualFog = function(element, settings){
      this.element = element;
      this.settings = settings;
    };

    ManualFog.prototype.calculateOffsets = function(radius, quality){
      var all_offsets = $.grep(
        new Circle(radius+1).points(),
        function(element){ return (element[0] != 0) || (element[1] != 0) }
      );
      var offsets;
      if (all_offsets.length <= quality){
        offsets = all_offsets;
      } else {
        var overhead = all_offsets.length - quality;
        var targets = [];
        for (var i = 0; i < overhead; i++){
          targets.push(Math.round(i...