Skip to content

Instantly share code, notes, and snippets.

@peterhry
Created September 7, 2014 17:14
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save peterhry/afac4906f2b330509fc7 to your computer and use it in GitHub Desktop.
Save peterhry/afac4906f2b330509fc7 to your computer and use it in GitHub Desktop.
<svg preserveAspectRatio="xMinYMin" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 560 1388">
<defs>
<mask id="canTopMask">
<image width="560" height="1388" xlink:href="img/can-top-alpha.png"></image>
</mask>
</defs>
<image mask="url(#canTopMask)" id="canTop" width="560" height="1388" xlink:href="can-top.jpg"></image>
</svg>
@Haprog
Copy link

Haprog commented Sep 11, 2014

You can simplify file management by inlining the PNG and JPG as data URIs within the SVG. Then the SVG will also work as an external file like <img src="image.svg"/>.

@shshaw
Copy link

shshaw commented Sep 11, 2014

@Haprog Smart idea. Would be great to have a grunt or equivalent process to automate this:

  • Convert JPEG & PNG to Data URI
  • Generate SVG with proper viewbox and width/height attributes on image
  • Create a PNG fallback for browsers without SVG support?

@shshaw
Copy link

shshaw commented Sep 11, 2014

I wrote a basic tool to do this: http://codepen.io/shshaw/full/tKpdl

Works in the latest versions of Chrome, Firefox and Safari. Feel free to improve or adapt.

@mihnutzen
Copy link

you can use a Path instead of a png mask . just the inner path is required (outline of the image) . and this way you can save the extra request http://codepen.io/Mihnutzen/pen/AqDFf

@ctf0
Copy link

ctf0 commented Sep 14, 2014

am kinda new into this ,but cant we use the (css clip-path) instead ?

@peterhry
Copy link
Author

At this time IE doesn’t support CSS clip-path. The other benefit of using an alpha mask is that you can have translucent areas.

@ctf0
Copy link

ctf0 commented Sep 16, 2014

i just noticed that as mentioned in this article ,thanx for the headsup

@julia-r
Copy link

julia-r commented Nov 5, 2014

This works very well for me. But when I uses the jquery show() and hide() functions on it, the masking does not work sometimes. Does anyone have an idea why this might be? The same happens when I add and remove a class with "display: none".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment