【问题标题】:Scaling up SVG is blurry only in Chrome放大 SVG 仅在 Chrome 中是模糊的
【发布时间】:2015-08-16 00:23:43
【问题描述】:

当我放大 SVG 时,它仅在 Chrome 中是模糊的,在 Firefox 中是完美的,在 IE 中几乎是完美的。我试过用 SMIL 达到同样的效果,但还是很模糊。

Codepen 是here

我一直在寻找修复方法,但一直找不到。

谢谢

CSS:

.svg-container{
  -webkit-backface-visibility: hidden;
  -webkit-animation: scaling 4s linear  infinite alternate forwards;
  animation: scaling 4s linear infinite alternate forwards;
   transform: scale(16, 16) translateZ(0);
    -webkit-transform: scale(16, 16) translateZ(0);

}
@-webkit-keyframes scaling {
    from {
        -webkit-transform: scale(16, 16) translateZ(0);
        -ms-transform: scale(16, 16) translateZ(0);
            transform: scale(16, 16) translateZ(0);
    }
    to {
        -webkit-transform: scale(0.75,0.75) translateZ(0);
        -ms-transform: scale(0.75,0.75) translateZ(0);
            transform: scale(0.75,0.75) translateZ(0);
    }
}

@keyframes scaling {
    from {
        -webkit-transform: scale(16, 16) translateZ(0);
        -ms-transform: scale(16, 16) translateZ(0);
            transform: scale(16, 16) translateZ(0);
    }
    to {
        -webkit-transform: scale(0.75,0.75) translateZ(0);
        -ms-transform: scale(0.75,0.75) translateZ(0);
            transform: scale(0.75,0.75) translateZ(0);
    }
}

HTML:

<div class="svg-container">
    <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" width="644px" height="474px" viewBox="0 0 644 474" style="enable-background:new 0 0 644 474;" xml:space="preserve">
        <style type="text/css">
        .st0 {fill: #22B573;stroke: #000000;stroke-width: 23;stroke-miterlimit: 10;}            
        .st1 {fill: #39B54A;stroke: #000000;stroke-width: 6;stroke-miterlimit: 10;}            
        .st2 {fill: #00723D;stroke: #000000;stroke-width: 6;stroke-miterlimit: 10;}
        </style>
        <circle class="st2" cx="381.307" cy="280.325" r="135.276" />
        <circle class="st1" cx="381.307" cy="280.325" r="112.99" />
        <circle class="st0" cx="381.307" cy="280.325" r="67.177" />
    </svg>
</div>

【问题讨论】:

标签: html css svg


【解决方案1】:

这是现在的样子:

.svg-container{
  -webkit-backface-visibility: hidden;
  -webkit-animation: scaling 4s linear  infinite alternate forwards;
  animation: scaling 4s linear infinite alternate forwards;
   transform: scale(16, 16) translateZ(0);
    -webkit-transform: scale(16, 16) translateZ(0);

}
@-webkit-keyframes scaling {
    from {
        -webkit-transform: scale(16, 16) translateZ(0);
        -ms-transform: scale(16, 16) translateZ(0);
            transform: scale(16, 16) translateZ(0);
    }
    to {
        -webkit-transform: scale(0.75,0.75) translateZ(0);
        -ms-transform: scale(0.75,0.75) translateZ(0);
            transform: scale(0.75,0.75) translateZ(0);
    }
}

@keyframes scaling {
    from {
        -webkit-transform: scale(16, 16) translateZ(0);
        -ms-transform: scale(16, 16) translateZ(0);
            transform: scale(16, 16) translateZ(0);
    }
    to {
        -webkit-transform: scale(0.75,0.75) translateZ(0);
        -ms-transform: scale(0.75,0.75) translateZ(0);
            transform: scale(0.75,0.75) translateZ(0);
    }
}
<div class="svg-container">
    <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" width="644px" height="474px" viewBox="0 0 644 474" style="enable-background:new 0 0 644 474;" xml:space="preserve">
        <style type="text/css">
        .st0 {fill: #22B573;stroke: #000000;stroke-width: 23;stroke-miterlimit: 10;}            
        .st1 {fill: #39B54A;stroke: #000000;stroke-width: 6;stroke-miterlimit: 10;}            
        .st2 {fill: #00723D;stroke: #000000;stroke-width: 6;stroke-miterlimit: 10;}
        </style>
        <circle class="st2" cx="381.307" cy="280.325" r="135.276" />
        <circle class="st1" cx="381.307" cy="280.325" r="112.99" />
        <circle class="st0" cx="381.307" cy="280.325" r="67.177" />
    </svg>
</div>

【讨论】:

  • 如果你在 chrome 上进行测试,它仍然是像素化的
【解决方案2】:

尝试将明确的宽度和高度像素值设置为@Erik Dahlstöm suggested。我已经有了宽度,但我只需要设置一个明确的高度。

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 2019-01-17
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多