Odd spacing between SVG elements

后端 未结 2 1160
盖世英雄少女心
盖世英雄少女心 2021-01-17 23:45

I have generated SVG elements using some basic javascript and string concatenation: http://jsfiddle.net/8d3zqLsf/3/

These SVG elements have very little spacing betwe

相关标签:
2条回答
  • 2021-01-18 00:19

    It's not your actual SVG's, its the 'automatic' spacing between inline-block elements.

    It's just the way setting elements on a line works. You want spaces between words that you type to be spaces right? The spaces between these blocks are just like spaces between words. REF

    There are numerous ways to counter-act this. 1 approach is shown in @dippas's answer, using a html comment <!-- --> to absorb the space between the elements.

    My preference is to set an encapsulating elements's font-size to 0.

    svg {
      display: inline-block;
    }
    
    .container{
      font-size: 0;
    }
    <div class="container">
    
      <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
    </svg>
      <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
    </svg>
      <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
    </svg>
    
    </div>

    0 讨论(0)
  • 2021-01-18 00:26

    The Issue:

    a series of inline-block elements formatted like you normally format HTML will have spaces in between them.

    inline-block is:

    The element generates a block element box that will be flowed with surrounding content as if it were a single inline box (behaving much like a replaced element would)

    So what to do?

    in this case since is a svg you can comment the empty spaces in HTML.

    svg {
        display:inline-block;
    }
    <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
    </svg><!-- --><svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
    </svg><!-- --><svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
    </svg>

    More info about empty spaces using inline-block


    UPDATE(2019)

    Nowadays (and for awhile), there is a better approach then every hack for inline-block elements, which is using display: flex as parent.

    div {
      display: flex
    }
    <div>
      <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
      </svg>
      <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
      </svg>
      <svg width="86.60254037844386" height="100">
        <polygon xmlns="http://www.w3.org/2000/svg" id="0" style="fill:#6C6;" points="86.60254037844388,25.000000000000004 86.60254037844388,75 43.30127018922193,100 -7.105427357601002e-15,75 -7.105427357601002e-15,25.000000000000014 43.301270189221924,0 "></polygon>
      </svg>
    </div>

    0 讨论(0)
提交回复
热议问题