html - 内联 SVG 以填充 CSS 网格单元,忽略纵横比

标签 html css svg

我正在使用内联 SVG 来呈现内容(对于游戏,如果它有任何不同的话)。我将通过 javascript 调整 viewBox,所以我不关心保持外部 svg 元素的纵横比。

我在下面包含了一个精简到最低限度的演示 - 一个带有嵌套 SVG 元素的 CSS 网格。

问题是,当我加载演示并使浏览器变宽时,SVG 元素也会变高。如何让 SVG 填充主要元素,而不会将页脚推离屏幕?

    <head>
        <title>SVG scale demo</title>
        <style>
            html,
            body {
                padding: 0;
                margin: 0;
                width: 100vw;
                height: 100vh;
                overflow: hidden;
            }

            body {
                display: grid;
                grid-template-rows: 3em 1fr 3em;
                grid-template-columns: 1fr 10em;
                grid-template-areas: "Header Header""Main Aside""Footer Footer"
            }

            svg {
                display: block;
                width: 100%;
                height: 100%;
            }

            header {
                grid-area: Header;
            }

            main {
                grid-area: Main
            }

            aside {
                grid-area: Aside
            }

            footer {
                grid-area: Footer
            }

        </style>
    </head>

    <body>
        <header> Header content </header>
        <main>
            <svg preserveAspectRatio="none" viewBox="-10 -10 20 20" xmlns="http://www.w3.org/2000/svg">
                <circle cx="0" cy="0" r="8" />
            </svg>
        </main>
        <aside> Side bar content </aside>
        <footer> Footer content </footer>
    </body>

</html>

我已经尝试了在 CSS 和 svg 元素中设置宽度/高度的各种组合,并且我已经将 preserveAspectRatio 属性添加到 svg 元素,现在我向你们寻求帮助。

最佳答案

嗯。看来我需要添加

overflow: hidden;

到 main 的 CSS。

关于html - 内联 SVG 以填充 CSS 网格单元,忽略纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919509/

相关文章:

javascript - 如何更改plottable js条形图中的字体大小?

javascript - 加载网页背景图片的流程

javascript - 在 FireFox 中发送到服务器的请求数

css - 如何做 css 来选择选项?

html - CSS3 中的上划线太长

css - SVG 动画不适用于 IE11

javascript - 一起使用 onchange() 和 onkeypress() 的问题

html - 设置两个 div 之间的倾斜分离

asp.net - 像 WinForm 应用程序一样在网页中锚定控件

css - SVG 动画 keySplines 和 keyTimes 不起作用