html - 为什么我的 svg 上有一个 100% 的垂直滚动条?

标签 html google-chrome svg fullscreen internet-explorer-9

谁能解释为什么我在 Chrome 和 IE9 中看到带有以下标记的垂直滚动条:

<!DOCTYPE html>
<html>
  <head>
    <title>Fullscreen SVG</title>

    <style>
      html,body {
        margin: 0px; padding: 0px;
        width: 100%; height: 100%;    
      }

      .fullscreen {
        width: 100%; height: 100%;
      }
    </style>
  </head>
  <body>
    <svg class="fullscreen"></svg>
  </body>
</html>

如果我将 svg 替换为 div,它会完美运行。但是如果我把 svg 放在那个 div 里面,布局又被破坏了:

<div class="fullscreen">
  <svg></svg>
</div>  

将文档类型更改为 XHTML 似乎可以解决问题:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

但是内联 SVG 是 HTML5 的一部分,所以...

与此同时,我还提交了 bug report .

最佳答案

我来晚了一点,但是当我试图解决一个不同的问题时偶然发现了这个。

我认为您遇到的不是错误。 SVG 标签默认是内联元素(郑重声明,IMG 标签也是),DIV 被视为 block 元素。我在这里有点迷茫,因为您不应该将高度/宽度设置为内联对象(如果您尝试在 SPAN 上执行此操作,则高度/宽度将被忽略)。

您可能会认为这是另一种解决方法,但将显示属性显式设置为 block 会删除滚动条。 float SVG 元素也可以解决这个问题。

.fullscreen { display: block }

HTML5 DOCTYPE 似乎是基于 W3C 的严格 DOCTYPES(不是过渡性的)。两个严格声明也显示滚动条。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

所以此时,如果您关心严格和过渡 DOCTYPES,最好引用不同的讨论:Browser Rendering Difference Between strict/transitional DOCTYPEs

希望这能为讨论增加一点值(value)。

关于html - 为什么我的 svg 上有一个 100% 的垂直滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758638/

相关文章:

css - Chrome 3D CSS 转换交叉点无法正确呈现

css - 如何以百分比填充svg图像的背景颜色

javascript - d3.js 热图未正确显示数据

php - 使用 div 创建动态框

javascript - 使盒子在环绕 Angular 时以连续顺序出现(从左到右,向下,然后从右到左)

javascript - 如何在 Angular 中正确设置表单验证

javascript - 是否可以将文本附加到 SVG 中的文本元素?

php echo 来自mysql的工作html代码?

node.js - 使用 HTTP/2 从 chrome 到 node-http2 服务器时看到多个 TCP 连接

javascript 表单提交在 chrome 中不起作用