Why do scrollbars appear when using an SVG element inside a DIV?

My goal is to have <div>a fixed size (dynamically set via JavaScript) that contains only the element <svg>. When this is <svg>larger than the parent <div>, scrollbars should appear. When it is smaller, the size should be set to the size of the parent <div>, but no scrollbars should appear.

This does not work as expected, as some code may seem:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <script type="text/javascript" src="lib/jquery-1.4.4.js"></script>
    <script type="text/javascript" src="lib/jquery-ui-1.8.7.custom.min.js"></script>
    <script type="text/javascript" src="lib/jquery.svg.js"></script>
    <script type="text/javascript">
      $(document).ready(function() {
        $('#editor').svg();
      });
    </script>
  </head>
  <body>
    <div id="editor" style="width:500px;height:500px;overflow:auto"></div>
  </body>
</html>

This will create an almost blank page containing <div>a fixed size of 500x500px and <svg width="500" height="500">inside. This SVG has scrollbars - although they are not needed, as the size will be perfect.

, <svg>, ,

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <script type="text/javascript" src="lib/jquery-1.4.4.js"></script>
    <script type="text/javascript" src="lib/jquery-ui-1.8.7.custom.min.js"></script>
    <script type="text/javascript" src="lib/jquery.svg.js"></script>
  </head>
  <body>    
    <div style="width:500px;height:500px;overflow:auto"><div style="width:500px;height:500px"></div></div>
  </body>
</html>

, <div> <div> - .

- , <div> <svg> -?

SVG <div> , ( ?)

. Firefox Chromium.

+3
1

, div display: block;, svg - display: inline;, , div. , CSS:

svg { display:block; }

svg { vertical-align: top; }
+7

Source: https://habr.com/ru/post/1784391/


All Articles