【问题标题】:SVG rotate image fill on hoverSVG在悬停时旋转图像填充
【发布时间】:2015-11-24 08:19:24
【问题描述】:

我有一个 svg 蒙版,它在悬停时顺时针旋转,里面有一个图片填充。 我希望图片逆时针旋转以补偿悬停时形状的旋转。

我的问题是,当鼠标悬停时,图片会变形。 我试图有一个溢出:隐藏,但它不起作用。

这是我的 jsfiddle : http://jsfiddle.net/nyb5wffv/1/

#hex {
overflow:hidden;
}

svg {
padding: 50px;
width: 200px;
height: 200px;
transition: all 0.25s;
}

svg a {
-ms-transform: rotate(0deg); /* IE 9 */
-webkit-transform: rotate(0deg); /* Chrome, Safari, Opera */
transform: rotate(0deg);
}

svg:hover{
-ms-transform: rotate(7deg); /* IE 9 */
-webkit-transform: rotate(7deg); /* Chrome, Safari, Opera */
transform: rotate(7deg);
}

svg:hover a {
-ms-transform: rotate(-7deg); /* IE 9 */
-webkit-transform: rotate(-7deg); /* Chrome, Safari, Opera */
transform: rotate(-7deg);
}

【问题讨论】:

    标签: css svg hover svg-animate


    【解决方案1】:

    不要旋转整个 SVG,然后尝试对图像进行反向旋转,只需旋转六边形。多边形(以及 clipPath)将被旋转,但图像不会受到影响。

    svg #hex {
        -ms-transform: rotate(0deg); /* IE 9 */
        -webkit-transform: rotate(0deg); /* Chrome, Safari, Opera */
        transform: rotate(0deg);
    
        -ms-transform-origin: 50% 50%;
        -webkit-transform-origin: 50% 50%;
        transform: 50% 50%;
    }
    
    svg:hover #hex {
        -ms-transform: rotate(7deg); /* IE 9 */
        -webkit-transform: rotate(7deg); /* Chrome, Safari, Opera */
        transform: rotate(7deg);
    }
    

    Demo fiddle here

    【讨论】:

    • 谢谢保罗。它完美地工作。你能解释一下 console.log(document.getElementById("hex").getBBox());请问到底在做什么?
    • 对不起。你可以忽略它。我只是在检查六边形的尺寸并忘记将其移除。
    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2017-09-20
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多