[Webkit-unassigned] [Bug 196220] New: CSS animation with SVG misaligns when placed on a non-whole number

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 25 15:34:25 PDT 2019


            Bug ID: 196220
           Summary: CSS animation with SVG misaligns when placed on a
                    non-whole number
           Product: WebKit
           Version: Safari 12
          Hardware: Macintosh
                OS: macOS 10.13
            Status: NEW
          Severity: Minor
          Priority: P2
         Component: SVG
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: ryan.whitney at me.com
                CC: zimmermann at kde.org

Created attachment 365909

  --> https://bugs.webkit.org/attachment.cgi?id=365909&action=review

what it looks like when the element is placed at a non-whole number (i.e. top: 100.33px, this causes percentages to be unreliable as it can land between whole numbers);

I have a 50 PX SVG of a circle, it rotates 360deg from a CSS animation. It loads and spins correctly when placed on the page. However if it's positioned with a percentage (i.e. top: 20%;) it will at times wobble vertically. This happens unreliably, but seems to be caused by being positioned at a non-whole number. A constant top: 100px; will be fine, but 100.33 will reintroduce the wobble. This causes any percentage-based layout to render SVG animations unreliably. (Cannot repro in chrome.)

Here's some sample code:

  #loadingSpinner {
    top: 20%;
    left: 0;
    right: 0;
    position: fixed;
    display: flex;
    justify-content: center;
    cursor: wait;

  #svg-spinner-container {
    width: 65px;
    height: 65px;
    display: flex;
    justify-content: center;
    align-items: center;


  #svg-spinner {
    width: 50px;
    height: 50px;
    -webkit-animation: svg-spinner-animation 1s linear infinite;
    animation: svg-spinner-animation 1s linear infinite;

  @-webkit-keyframes svg-spinner-animation {
    100% {

  @keyframes svg-spinner-animation {
    100% {

<div id="svg-spinner-container">
    <svg id="svg-spinner" viewBox="0 0 50 50">
        <linearGradient id="fade" x2="50" y1="25" y2="25" gradientUnits="userSpaceOnUse">
            <stop offset="0" stop-opacity="0"></stop>
            <stop offset=".15" stop-opacity=".04"></stop>
            <stop offset=".3" stop-opacity=".16"></stop>
            <stop offset=".45" stop-opacity=".36"></stop>
            <stop offset=".61" stop-opacity=".64"></stop>
            <stop offset=".76"></stop>
        <path id="head" d="M0 25a25 25 0 1 0 50 0h-3.9a21.1 21.1 0 1 1-42.2 0"></path>
        <path id="tail" d="M50 25a25 25 0 0 0-50 0h3.9a21.1 21.1 0 1 1 42.2 0"></path>

You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20190325/c7f8b5b9/attachment.html>

More information about the webkit-unassigned mailing list