SVG resizes on hover in safari only

css, javascript, jquery, svg

Solution

This is definitely a weird Safari bug. I think it is related to how Safari restores the original image from the cache. At any rate, I've found a workaround that works in our hover code. If you make the URL of the restored image unique via an extra query string parameter, it seems to avoid the SVG resize bug. Here's the code from our site (note the "&SafariFix" query string parameter on restore):

// activate any img hovers based on the hover-src attribute
$("img[data-hover-src]").closest("a").hover(
    function () {
        var image = $(this).find("img[data-hover-src]");
        if (image.data("originalSrc") === undefined) {
            image.data("originalSrc", image.attr("src"));
        }
        image.attr("src", image.data("hoverSrc"));
    }, function () {
        var image = $(this).find("img[data-hover-src]");
        image.attr("src", image.data("originalSrc") + "&SafariFix");
    }
);

Problem

I have this weird issue where an svg is resizing on hover in safari. I'm using jquery's hover to replace an svg on a page with a slightly different svg. This work's properly in all browsers except safari which for some reason completely resizes the svg on mouseover and mouseout. My svg's height is set in the css ``` img.svg-graphic { height: 180px; } ``` And displayed on the page as an image ``` <div class="container"> <img class="svg-graphic" src="svg-icons/version1.svg"> </div> ``` When I hover over the container, I swap out the svg with another, and then return to the default when I hover off. ``` $('.container').hover(function() { $('.svg-graphic').attr('src', 'svg-icons/version2.svg'); }, function() { $('.svg-graphic').attr('src', 'svg-icons/version1.svg'); }); ``` Any ideas on what could be causing safari to completely ignore the sizing?

Original source