javascript - SVG filter won't disappear on hover using transitions -


i working on new stuff , have been introduced world of svg objects. nice. anyways, have button have built , put filter on it. designer i'm working filter (a drop shadow) go opacity 1 0 on hover, , return 1 off hover.

i have tried normal transitions on filter, , can filter disappear transition far smooth.

here's code:

html

<svg version="1.1" id="layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 216 216" style="enable-background:new 0 0 216 216;" xml:space="preserve">   <filter id="fade" height="150%" width='150%'>      <femerge>       <femergenode/>       <!-- contains offset blurred image -->       <femergenode in="sourcegraphic" />       <!-- contains element filter applied -->     </femerge>   </filter>   <filter id="dropshadow" height="150%" width='150%'>     <fegaussianblur in="sourcealpha" stddeviation="25" />     <!-- stddeviation how blur -->     <feoffset dx="0" dy="15vh" result="offsetblur" />     <!-- how offset -->     <fecomponenttransfer>       <fefunca type="linear" slope="0.4" />     </fecomponenttransfer>     <femerge>       <femergenode/>       <!-- contains offset blurred image -->       <femergenode in="sourcegraphic" />       <!-- contains element filter applied -->     </femerge>   </filter>   <a href='' id='playvideo_button'>     <g>       <path class="st0" d="m108,24c-46.4,0-84,37.6-84,84s37.6,84,84,84s84-37.6,84-84s154.4,24,108,24z" />       <polygon class="st1" points="92,140 92,76 140,108" />     </g>   </a> </svg> 

css

svg {   width: 30vw;   height: 30vh;   cursor: pointer;  }  svg .st0 {   fill: #4982cf;   transition: filter.6s ease-out;   filter: url(#dropshadow); } svg .st1 {   fill: #ffffff;  } svg:hover .st0{   filter: url(#fade); } 

here, also, link fiddle have been playing around with, please let me know if additional resources required! thank in advance assistance.

https://jsfiddle.net/sfza69ry/7/

edits

i have created second filter, transparent overlay, has failed , same not smooth effect.

i'm pretty @ loss here.

using transitions on filter not way this. here more elegant way. there bunch of things here should note:

  • you need size both svg , filter regions make sure shadow isn't cut off
  • you can't transition filters
  • support css units isn't reliably supported inside svg filter, stick either objectboundingbox (%) or userspaceonuse (viewbox) units
  • look @ how constructed filter allow drawn on top of shape (to capture hover) without obscuring it. that's "operator="out" part of filter.

  • enclose filter in defs element. browsers require this.

  • don't use illustrator exports boilerplates. they're not constructed svg.

in general, worst way learn svg trying decode or tweak illustrator export code. it's unmitigated craptastic disaster.

svg {    width: 30vw;    height: 30vh;    cursor: pointer;  }    svg .st0 {    fill: #4982cf;  }    svg .st1 {    fill: #ffffff;  }    #usedshadow {     opacity: 1;     transition: opacity 0.6s;  }    #usedshadow:hover {     opacity: 0;     transition: opacity 0.6s;  }
<svg version="1.1" x="0px" y="0px" width="300px" height="300px" viewbox="0 0 300 300">      <defs>      <filter id="dropshadow" x="-50%" y="-50%" height="200%" width='200%'>        <fegaussianblur in="sourcealpha" stddeviation="10" />        <!-- stddeviation how blur -->        <feoffset dx="0" dy="15" result="offsetblur" />        <!-- how offset -->        <fecomponenttransfer>          <fefunca type="linear" slope="0.4" />        </fecomponenttransfer>        <fecomposite operator="out" in2="sourcegraphic"/>      </filter>        <g id="myshape">        <path class="st0" d="m108,24c-46.4,0-84,37.6-84,84s37.6,84,84,84s84-37.6,84-84s154.4,24,108,24z" />        <polygon class="st1" points="92,140 92,76 140,108" />      <g>      </defs>      <use xlink:href="#myshape"/>    <use id="usedshadow" filter="url(#dropshadow)" xlink:href="#myshape"/>    </svg>


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -