【问题标题】:how to set svg as a background image [duplicate]如何将svg设置为背景图像[重复]
【发布时间】:2014-04-07 23:15:50
【问题描述】:

我是网络开发的新手。我试图做的是建立一个自适应网站。我决定为我的许多图像使用 .svg。我的问题是 - 有没有办法使用 css 样式表将 .svg 用作背景图像并保持其自适应和缩放。我希望能够使用媒体查询来使网站的移动部分更小,图像更少。 olny 的问题是,我希望我的 .svg 能够扩展(随着网页变得越来越大)。我找到了一种将其作为内联图像执行的方法,但这总是需要我从加载开始就加载所有图像。我不希望移动用户必须下载所有图像,因为它会减慢速度并从那里的数据帐户中花钱。我希望媒体查询根据用户的屏幕大小通过 css 将图像拉入和拉出页面。很抱歉这个冗长的问题。感谢您的宝贵时间。

如果可能的话,PS 会尝试不使用 java 脚本来做到这一点吗?在网站上使用 java 脚本有缺点吗?

【问题讨论】:

    标签: javascript html css vector svg


    【解决方案1】:

    CSS 规则

    background-image: url('file.svg');
    

    要使您的 SVG 缩放,您应该尽可能使用百分比进行测量。例如,如果你想制作一个填充整个背景的渐变:

    file.svg

    <?xml version="1.0" encoding="utf-8"?>
    <svg width="100%" height="100%">
        <defs>
            <linearGradient id="grad" x1="0%" y1="0%" x2="0%" y2="100%">
                <stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:1" />
                <stop offset="100%" style="stop-color:rgb(192,192,192);stop-opacity:1" />
            </linearGradient>
        </defs>
        <rect x="0" y="0" width="100%" height="100%" fill="url(#grad)" />
    </svg>
    

    如果这不能提供足够的控制,您可能还想查看responsive CSS with media queries。您可以使用它来将其更改为不同的 SVG。此 CSS 部分的目标屏幕宽度最多为 800 像素:

    @media screen and (max-width: 800px) {
        body {
            background-image: url('file800.svg');
        }
    }
    

    您可以使用的另一个工具是background-size 规则。这是一条 CSS 3 规则,因此您可能需要查看对不同浏览器的支持级别。

    【讨论】:

    • ahh ic 在它自己的实际 svg 代码中。我的一些 svg 非常复杂,所以我不知道这是否值得,但我会检查一下。感谢您的快速回复。
    • 是的,我刚刚检查了我的一个 .svg 文件,其中包含很多值。我什至不知道从哪里开始百分比。
    • 这篇文章包含了我所指的更多内容。这篇文章写于 2010 年。有没有办法解决这个问题。就像我说的,我对 Web 开发非常陌生。我真的很喜欢响应式设计,虽然它很糟糕,我希望它成为最适合移动和桌面用户的网站。
    • 这篇文章就是我所指的。 blog.cloudfour.com/css-media-query-for-mobile-is-fools-gold 就像我说的,我对 Web 开发非常陌生,但我喜欢响应式设计。我希望我的网站和未来的网站能够为移动和桌面用户提供最好的服务。这篇文章写于 2010 年,有没有一种合理的方法可以用直接的 css 来解决这个问题。感谢您的帮助。
    • 文章是对的。响应式设计实际上取决于您的网站对客户端的负载。对于复杂的网站,您可能希望使用服务器端代码(例如 PHP)为移动浏览器提供不同的网站设计,以检测客户端以确定客户端接收的内容。这也将有利于您的访问者的带宽,因为移动浏览器往往有严格的限制。网页设计有很多这样的细微差别,但你会及时了解它们。