Search code examples
htmlcsssvgz-indexmask

interacting through svg-mask not possible


I want to cover my whole website despite a small circle that follows the cursor. So I made a svg with a circle-mask that updates it's position via jquery. But now all my elements below are not clickable, because the svg lays in front of them. Is there a solution how to solve this?

<svg viewbox="0 0 100 50" width="500%" height="500%" id="mouseoverlay" class="mouseoverlay" style="position:fixed;">
<defs>
    <filter id="gauss">
        <feGaussianBlur in="SourceGraphic" stdDeviation="0.4"/>
    </filter>
    <mask id="mask" x="0" y="0" width="100" height="30">
      <rect x="0" y="0" width="100" height="100" fill="#fff"/>
     <circle cx="50" cy="25" r="4.5" filter="url(#gauss)" />
    </mask>
</defs>
<rect x="0" y="0" width="100" height="100" mask="url(#mask)" fill="#bbb" fill-opacity="1"/>    
$(document).mousemove(function (e) {
        var bodyOffsets = document.body.getBoundingClientRect();
        var fensterhoehe = window.innerHeight;
        var fensterbreite = window.innerWidth;
        tempX = e.pageX - (fensterbreite*2.5);
        tempY = e.pageY - (fensterhoehe*2.5);
        $('#mouseoverlay').css({'top':(tempY - scrollY),'left':tempX}).fadeIn("3000");
}

circle mask


Solution

  • You can take a look at pointer-events.

    ex

    var tempX;
    var tempY;
    
    $(document).mousemove(function (e) {
    
            var bodyOffsets = document.body.getBoundingClientRect();
            var fensterhoehe = window.innerHeight;
            var fensterbreite = window.innerWidth;
            tempX = e.pageX - (fensterbreite*2.5);
            tempY = e.pageY - (fensterhoehe*2.5);
            $('#mouseoverlay').css({'top':(tempY - scrollY),'left':tempX}).fadeIn("3000");
    });
    #mouseoverlay {pointer-events:none;}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <h1>HTML Ipsum Presents</h1>
    
    <p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
    
    <h2>Header Level 2</h2>
    
    <ol>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ol>
    
    <blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>
    
    <h3>Header Level 3</h3>
    
    <ul>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ul>
    
    <pre><code>
    #header h1 a {
      display: block;
      width: 300px;
      height: 80px;
    }
    </code></pre>
    <h1>HTML Ipsum Presents</h1>
    
    <p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
    
    <h2>Header Level 2</h2>
    
    <ol>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ol>
    
    <blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>
    
    <h3>Header Level 3</h3>
    
    <ul>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ul>
    
    <pre><code>
    #header h1 a {
      display: block;
      width: 300px;
      height: 80px;
    }
    </code></pre>
    <h1>HTML Ipsum Presents</h1>
    
    <p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
    
    <h2>Header Level 2</h2>
    
    <ol>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ol>
    
    <blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>
    
    <h3>Header Level 3</h3>
    
    <ul>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ul>
    
    <pre><code>
    #header h1 a {
      display: block;
      width: 300px;
      height: 80px;
    }
    </code></pre>
    <h1>HTML Ipsum Presents</h1>
    
    <p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
    
    <h2>Header Level 2</h2>
    
    <ol>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ol>
    
    <blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>
    
    <h3>Header Level 3</h3>
    
    <ul>
       <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
       <li>Aliquam tincidunt mauris eu risus.</li>
    </ul>
    
    <pre><code>
    #header h1 a {
      display: block;
      width: 300px;
      height: 80px;
    }
    </code></pre>
    
    
    
    
    
    
    
    
    
    
    
    <svg viewbox="0 0 100 50" width="500%" height="500%" id="mouseoverlay" class="mouseoverlay" style="position:fixed;">
    <defs>
        <filter id="gauss">
            <feGaussianBlur in="SourceGraphic" stdDeviation="0.4"/>
        </filter>
        <mask id="mask" x="0" y="0" width="100" height="30">
          <rect x="0" y="0" width="100" height="100" fill="#fff"/>
         <circle cx="50" cy="25" r="4.5" filter="url(#gauss)" />
        </mask>
    </defs>
      <rect x="0" y="0" width="100" height="100" mask="url(#mask)" fill="#bbb" fill-opacity="1"/>  </svg>