RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 629465
Accepted
Alex
Alex
Asked:2020-02-18 17:01:03 +0000 UTC2020-02-18 17:01:03 +0000 UTC 2020-02-18 17:01:03 +0000 UTC

SVG 精灵。chrome 定位错误

  • 772

我使用 gulp(插件 gulp-svg-sprites)创建了一个精灵。在 Mozilla 中它正常显示,在 chrome 中我打开它 - 一切都发生了变化。 在此处输入图像描述 如果我从最终的 svg(gulp-svg2png 插件)生成一个 png-sprite,并包含它而不是 svg,那么它会在所有浏览器中正常显示。那些。我从浏览器的解释中了解到这恰恰是相关的。

怎么修?

我的 post-galp 精灵示例在这里。当使用 chrome 中的滑块调整大小时,也可以看到此错误(在最大放大倍率下清晰可见,白色 - 当背景反转时)。

在 Mozilla 中一切正常。

PS 我更新了 sprite - 我将其设置为viewBox所有元素都以"0 0. 没有帮助。

一口气设置:

gulp.task('svg-sprites:build', function () {
  return gulp.src(options.theme.img_svg_src + '*.svg')
      .pipe(svgSprite())
      .pipe(gulp.dest(options.theme.img_src + 'dict'))
      .pipe(filter(options.theme.img_src + 'dict/svg/*.svg')) 
      .pipe(gulp.dest(options.theme.img_src + 'dict'));
});
svg
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. Best Answer
    cronfy
    2020-02-22T23:08:02Z2020-02-22T23:08:02Z

    简答

    viewBox="0 0 41 2023"从 SVG 中删除属性。但是,也可以删除 viewBox 的其余部分。您可以使用svgo(插件removeViewBox)自动执行此操作。

    长答案

    当水平不是SVG中宽度的倍数时,这似乎是Chrome与计算相关的错误。background-sizebackground-sizeviewBox

    看,你已经background-size设置了 em: 4.1em 202.3em(sprite.css:5)。图像的调整大小设置font-size为 2 到 14 px。初始值为font-size10px,因此当页面打开时,以像素为单位的背景大小为 41x2023 px,就像 SVG 中的 viewBox 一样。您可以注册background-size: 41px 2023px,一切都将保持不变。

    但如果您指定的像素小于:background-size: 40px 2023px,我们将看到垂直偏移。尽管看起来情况应该变得更窄一点。

    因此,当您更改字体时,一切都会进行。如果将字体大小设置为 11px,则背景宽度将为4.1em * 11px = 45.1px,这不是 41(原始 viewBox 的宽度)的倍数。下一个正常显示的字体值为 20px:background-size水平尺寸变为 82px,是 41 的倍数。

    我不会完全描述这个错误的所有功能(有时会出现,有时不会),但最重要的是解决方案很简单:viewBox="0 0 41 2023"从 SVG 中删除属性。但是,viewBox您也可以删除其余部分。

    您可以使用svgo(插件removeViewBox)自动执行此操作。例如gulp:

    gulp.task('remove-viewbox', function() {
        var svgmin = require('gulp-svgmin');
    
        return gulp.src('src/*.svg')
            .pipe(svgmin({
                plugins: [ {removeViewBox: true} ]
            }))
            .pipe(gulp.dest('dest/'));
    });
    
    • 8
  2. Alexandr_TT
    2020-02-19T14:50:05Z2020-02-19T14:50:05Z

    您可能已经猜到Chrome您看到的是上一个图标底部的主图标。这可能有很多原因,但主要有两个:

    1. 每个浏览器都有自己的样式,因此最好使用来自 Eric Mayer 的单独 reset.css 文件重新设置它们,或者应用Normalize.css,阅读此处文章的翻译。
    2. 其次,主要原因是选择了不同比例的图标。

    对于某些width="7" height="7" viewBox="0 0 7 7人,对于其他人viewBox="231 233 38 34你看,在这里我们必须使用 viewBox 移动图标。然后,如果你看一下,在本地运行 sprite 的 SVG 文件,你会看到很大的间隙,只是图标没有落入可见区域。

    为避免此类风险和误解,可能更容易找到具有相同属性的 SVG 图标。网上有很多这样的合集,直接按32x32大小排序;64x64;128x128...

    • 5
  3. Alexandr_TT
    2020-02-22T23:11:36Z2020-02-22T23:11:36Z

    为了清晰起见,我采用了您的 sprite 并对代码进行了一些格式化,但没有改变其本质。请注意,图标之间的垂直空间负责属性viewport,通常不会指明,因为默认情况下它们是 x="0" y="0" - 这是左上角。在您的版本中,第一个图标 y="0",第二个图标 - y="32",然后 y="64" 也就是说,垂直定位完全取决于这些参数。

       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="41" height="2023" viewBox="0 0 41 2023" style="background:#000"><svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-facebook" y="0">
    <path fill="#FFF" d="M19.8 6.5h5.5V.8h-5.5c-4.2 0-7.7 2.9-7.7 6.7v2.8H7.7V16h4.4v15.2h6.6V16h5.5l1.1-5.7h-6.6V7.5c0-.5.5-1 1.1-1z">
    </path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-google" y="32">
    <path fill="#FFF" d="M1.7 8.3c0 2.5.9 4.5 2.6 5.6 1.4.8 3.1 1 4 1h.5s-.3 1.7 1.1 3.5c-2.4 0-9.9.5-9.9 6.5 0 6.1 6.9 6.4 8.3 6.4h.5c.9 0 3.2-.1 5.3-1.1 2.7-1.2 4.1-3.6 4.1-6.7s-2.1-4.9-3.7-6.2c-.9-.8-1.8-1.5-1.8-2.2 0-.7.6-1.2 1.4-1.9 1.2-1 2.4-2.5 2.4-5.5 0-2.4-.3-4.2-2.4-5.4.2-.1 1-.2 1.4-.2 1.1-.2 2.7-.3 2.7-1.2V.8H10c-.1 0-8.3.2-8.3 7.5zM15 24c.2 2.4-2 4.2-5.2 4.5-3.3.2-6-1.2-6.1-3.7-.1-1.1.5-2.3 1.5-3.3S7.7 20 9.3 20h.6c2.9 0 4.9 1.7 5.1 4zM12.8 6.7c.8 2.8-.4 5.6-2.3 6.2h-.7c-1.8 0-3.5-1.7-4.2-4.2-.3-1.3-.2-2.5.1-3.7.4-1.1 1.1-1.9 2.1-2.1.2 0 .4-.1.6-.1 2.2 0 3.6.9 4.4 3.9zm13.9 5.8V7.2h-3.6v5.3h-5.3V16h5.3v5.3h3.6V16H32v-3.5h-5.3z"></path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-instagram" y="64">
    <path fill="#FFF" d="M16.5 15c0-.3-.2-.5-.5-.5-1.5 0-2.7 1.1-2.7 2.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.8.8-1.5 1.6-1.5.4 0 .6-.2.6-.5zm3.8 2c0 2.2-2 4-4.3 4s-4.3-1.8-4.3-4 1.9-4 4.3-4 4.3 1.9 4.3 4zM3 26.1h26V24H3v2.1zM22.5 17c0-3.4-2.9-6.1-6.6-6.1S9.4 13.6 9.4 17s2.9 6.1 6.6 6.1 6.5-2.8 6.5-6.1zM5.3 6.9h6.6V4.8H5.3v2.1zM3 9.9h26v-4H15L13.9 8H3v1.9zm28.2-4v20.3c0 1.1-1 2.1-2.2 2.1H3c-1.2 0-2.2-.9-2.2-2.1V5.9c0-1.1 1-2.1 2.2-2.1h26c1.2 0 2.2.9 2.2 2.1z"></path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-twitter" y="96">
    <path fill="#FFF" d="M30.8 5.2c-1.1.6-2.3.9-3.5 1.1 1.2-.8 2.3-2.4 2.6-4-1.2.8-2.4 1.4-3.9 1.8-1.1-1.4-2.6-2.4-4.4-2.4-3.3 0-6 3.2-6 7.2 0 .6.1 1 .2 1.6-5-.3-9.5-3.1-12.5-7.5-.6 1-.9 2.4-.9 3.6 0 2.5 1 4.7 2.6 6-.9 0-1.9-.4-2.7-.8v.1c0 3.5 2.1 6.4 4.9 7.1-.6.2-1 .3-1.6.3-.4 0-.8-.1-1.1-.1.8 2.8 3 4.9 5.7 5-2.1 2-4.7 3.1-7.5 3.1-.6 0-.9 0-1.5-.1 2.6 2.1 5.9 3.2 9.3 3.2 11.2 0 17.2-11 17.2-20.5v-.8c1.2-1.2 2.2-2.4 3.1-3.9z"></path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-vcontacte" y="128">
    <path fill="#FFF" d="M22.6 15.1c1.1-1.5 1.9-3.4 1.9-5.6 0-4.7-3.6-8.6-8-8.6h-10V31h12c4.4 0 8-3.9 8-8.6 0-3.1-1.5-5.8-3.9-7.3zM12.5 5.3h3.2c1.8 0 3.2 2 3.2 4.3s-1.4 4.3-3.2 4.3h-3.2V5.3zm4.9 21.4h-5v-8.6h5c1.9 0 3.3 2 3.3 4.3s-1.4 4.3-3.3 4.3z"></path>
    </svg>
    
     </svg>

    第一个解决方案 - 您需要增加图标之间的间隙,即增加Y下面的示例,因为它是,您看到图标之间几乎没有间隙。在第二个例子中,间隙增加了8px;y=0;40;80;120

    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="41" height="2023" viewBox="0 0 41 2023" style="background:#000"><svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-facebook" y="0">
    <path fill="#FFF" d="M19.8 6.5h5.5V.8h-5.5c-4.2 0-7.7 2.9-7.7 6.7v2.8H7.7V16h4.4v15.2h6.6V16h5.5l1.1-5.7h-6.6V7.5c0-.5.5-1 1.1-1z">
    </path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-google" y="40">
    <path fill="#FFF" d="M1.7 8.3c0 2.5.9 4.5 2.6 5.6 1.4.8 3.1 1 4 1h.5s-.3 1.7 1.1 3.5c-2.4 0-9.9.5-9.9 6.5 0 6.1 6.9 6.4 8.3 6.4h.5c.9 0 3.2-.1 5.3-1.1 2.7-1.2 4.1-3.6 4.1-6.7s-2.1-4.9-3.7-6.2c-.9-.8-1.8-1.5-1.8-2.2 0-.7.6-1.2 1.4-1.9 1.2-1 2.4-2.5 2.4-5.5 0-2.4-.3-4.2-2.4-5.4.2-.1 1-.2 1.4-.2 1.1-.2 2.7-.3 2.7-1.2V.8H10c-.1 0-8.3.2-8.3 7.5zM15 24c.2 2.4-2 4.2-5.2 4.5-3.3.2-6-1.2-6.1-3.7-.1-1.1.5-2.3 1.5-3.3S7.7 20 9.3 20h.6c2.9 0 4.9 1.7 5.1 4zM12.8 6.7c.8 2.8-.4 5.6-2.3 6.2h-.7c-1.8 0-3.5-1.7-4.2-4.2-.3-1.3-.2-2.5.1-3.7.4-1.1 1.1-1.9 2.1-2.1.2 0 .4-.1.6-.1 2.2 0 3.6.9 4.4 3.9zm13.9 5.8V7.2h-3.6v5.3h-5.3V16h5.3v5.3h3.6V16H32v-3.5h-5.3z"></path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-instagram" y="80">
    <path fill="#FFF" d="M16.5 15c0-.3-.2-.5-.5-.5-1.5 0-2.7 1.1-2.7 2.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.8.8-1.5 1.6-1.5.4 0 .6-.2.6-.5zm3.8 2c0 2.2-2 4-4.3 4s-4.3-1.8-4.3-4 1.9-4 4.3-4 4.3 1.9 4.3 4zM3 26.1h26V24H3v2.1zM22.5 17c0-3.4-2.9-6.1-6.6-6.1S9.4 13.6 9.4 17s2.9 6.1 6.6 6.1 6.5-2.8 6.5-6.1zM5.3 6.9h6.6V4.8H5.3v2.1zM3 9.9h26v-4H15L13.9 8H3v1.9zm28.2-4v20.3c0 1.1-1 2.1-2.2 2.1H3c-1.2 0-2.2-.9-2.2-2.1V5.9c0-1.1 1-2.1 2.2-2.1h26c1.2 0 2.2.9 2.2 2.1z"></path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-twitter" y="120">
    <path fill="#FFF" d="M30.8 5.2c-1.1.6-2.3.9-3.5 1.1 1.2-.8 2.3-2.4 2.6-4-1.2.8-2.4 1.4-3.9 1.8-1.1-1.4-2.6-2.4-4.4-2.4-3.3 0-6 3.2-6 7.2 0 .6.1 1 .2 1.6-5-.3-9.5-3.1-12.5-7.5-.6 1-.9 2.4-.9 3.6 0 2.5 1 4.7 2.6 6-.9 0-1.9-.4-2.7-.8v.1c0 3.5 2.1 6.4 4.9 7.1-.6.2-1 .3-1.6.3-.4 0-.8-.1-1.1-.1.8 2.8 3 4.9 5.7 5-2.1 2-4.7 3.1-7.5 3.1-.6 0-.9 0-1.5-.1 2.6 2.1 5.9 3.2 9.3 3.2 11.2 0 17.2-11 17.2-20.5v-.8c1.2-1.2 2.2-2.4 3.1-3.9z"></path>
    </svg>
    
    <svg viewBox="0 0 32 32" width="32" height="32" id="a-we-in-vcontacte" y="160">
    <path fill="#FFF" d="M22.6 15.1c1.1-1.5 1.9-3.4 1.9-5.6 0-4.7-3.6-8.6-8-8.6h-10V31h12c4.4 0 8-3.9 8-8.6 0-3.1-1.5-5.8-3.9-7.3zM12.5 5.3h3.2c1.8 0 3.2 2 3.2 4.3s-1.4 4.3-3.2 4.3h-3.2V5.3zm4.9 21.4h-5v-8.6h5c1.9 0 3.3 2 3.3 4.3s-1.4 4.3-3.3 4.3z"></path>
    </svg>
    
    
     </svg>
    鉴于在您的版本中您严格依赖精灵内部图标的定位,事实证明这会导致不可预测的效果,我们可以建议 -

    第二个选项

    使用标签制作经典精灵并从精灵<symbol>调用命令。<use>

    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="200" viewBox="0 0 300 200" style="background:#000; border:1px solid red;">
    
    <symbol id="a-we-in-facebook"> viewBox="0 0 32 32" width="32" height="32" >
    <path fill="#FFF" d="M19.8 6.5h5.5V.8h-5.5c-4.2 0-7.7 2.9-7.7 6.7v2.8H7.7V16h4.4v15.2h6.6V16h5.5l1.1-5.7h-6.6V7.5c0-.5.5-1 1.1-1z">
    </path>
    </symbol>
    
    <symbol id="a-we-in-google"> viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M1.7 8.3c0 2.5.9 4.5 2.6 5.6 1.4.8 3.1 1 4 1h.5s-.3 1.7 1.1 3.5c-2.4 0-9.9.5-9.9 6.5 0 6.1 6.9 6.4 8.3 6.4h.5c.9 0 3.2-.1 5.3-1.1 2.7-1.2 4.1-3.6 4.1-6.7s-2.1-4.9-3.7-6.2c-.9-.8-1.8-1.5-1.8-2.2 0-.7.6-1.2 1.4-1.9 1.2-1 2.4-2.5 2.4-5.5 0-2.4-.3-4.2-2.4-5.4.2-.1 1-.2 1.4-.2 1.1-.2 2.7-.3 2.7-1.2V.8H10c-.1 0-8.3.2-8.3 7.5zM15 24c.2 2.4-2 4.2-5.2 4.5-3.3.2-6-1.2-6.1-3.7-.1-1.1.5-2.3 1.5-3.3S7.7 20 9.3 20h.6c2.9 0 4.9 1.7 5.1 4zM12.8 6.7c.8 2.8-.4 5.6-2.3 6.2h-.7c-1.8 0-3.5-1.7-4.2-4.2-.3-1.3-.2-2.5.1-3.7.4-1.1 1.1-1.9 2.1-2.1.2 0 .4-.1.6-.1 2.2 0 3.6.9 4.4 3.9zm13.9 5.8V7.2h-3.6v5.3h-5.3V16h5.3v5.3h3.6V16H32v-3.5h-5.3z"></path>
    </symbol>
    
    <symbol id="a-we-in-instagram" viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M16.5 15c0-.3-.2-.5-.5-.5-1.5 0-2.7 1.1-2.7 2.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.8.8-1.5 1.6-1.5.4 0 .6-.2.6-.5zm3.8 2c0 2.2-2 4-4.3 4s-4.3-1.8-4.3-4 1.9-4 4.3-4 4.3 1.9 4.3 4zM3 26.1h26V24H3v2.1zM22.5 17c0-3.4-2.9-6.1-6.6-6.1S9.4 13.6 9.4 17s2.9 6.1 6.6 6.1 6.5-2.8 6.5-6.1zM5.3 6.9h6.6V4.8H5.3v2.1zM3 9.9h26v-4H15L13.9 8H3v1.9zm28.2-4v20.3c0 1.1-1 2.1-2.2 2.1H3c-1.2 0-2.2-.9-2.2-2.1V5.9c0-1.1 1-2.1 2.2-2.1h26c1.2 0 2.2.9 2.2 2.1z"></path>
    </symbol>
    
    <symbol id="a-we-in-twitter" viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M30.8 5.2c-1.1.6-2.3.9-3.5 1.1 1.2-.8 2.3-2.4 2.6-4-1.2.8-2.4 1.4-3.9 1.8-1.1-1.4-2.6-2.4-4.4-2.4-3.3 0-6 3.2-6 7.2 0 .6.1 1 .2 1.6-5-.3-9.5-3.1-12.5-7.5-.6 1-.9 2.4-.9 3.6 0 2.5 1 4.7 2.6 6-.9 0-1.9-.4-2.7-.8v.1c0 3.5 2.1 6.4 4.9 7.1-.6.2-1 .3-1.6.3-.4 0-.8-.1-1.1-.1.8 2.8 3 4.9 5.7 5-2.1 2-4.7 3.1-7.5 3.1-.6 0-.9 0-1.5-.1 2.6 2.1 5.9 3.2 9.3 3.2 11.2 0 17.2-11 17.2-20.5v-.8c1.2-1.2 2.2-2.4 3.1-3.9z"></path>
    </symbol>
    
    <symbol id="a-we-in-vcontacte" viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M22.6 15.1c1.1-1.5 1.9-3.4 1.9-5.6 0-4.7-3.6-8.6-8-8.6h-10V31h12c4.4 0 8-3.9 8-8.6 0-3.1-1.5-5.8-3.9-7.3zM12.5 5.3h3.2c1.8 0 3.2 2 3.2 4.3s-1.4 4.3-3.2 4.3h-3.2V5.3zm4.9 21.4h-5v-8.6h5c1.9 0 3.3 2 3.3 4.3s-1.4 4.3-3.3 4.3z"></path>
    </symbol>
    
    <use y="50" xlink:href="#a-we-in-facebook"></use>
    <use y="50"  x="50" xlink:href="#a-we-in-google"></use>
    <use y="50"  x="100" xlink:href="#a-we-in-instagram"></use>
    <use y="50"  x="150" xlink:href="#a-we-in-twitter"></use>
    <use y="50"  x="200" xlink:href="#a-we-in-vcontacte"></use>
    
     </svg>
    此选项允许您在命令中使用 x,y 坐标定位图标,<use>并且在所有浏览器中看起来都一样。

    一个块中带有图标的选项,缩进最少

       <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="235" height="45" viewBox="0 0 235 45" style="background:#000; border:1px solid red;">
    
    <symbol id="a-we-in-facebook"> viewBox="0 0 32 32" width="32" height="32" >
    <path fill="#FFF" d="M19.8 6.5h5.5V.8h-5.5c-4.2 0-7.7 2.9-7.7 6.7v2.8H7.7V16h4.4v15.2h6.6V16h5.5l1.1-5.7h-6.6V7.5c0-.5.5-1 1.1-1z">
    </path>
    </symbol>
    
    <symbol id="a-we-in-google"> viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M1.7 8.3c0 2.5.9 4.5 2.6 5.6 1.4.8 3.1 1 4 1h.5s-.3 1.7 1.1 3.5c-2.4 0-9.9.5-9.9 6.5 0 6.1 6.9 6.4 8.3 6.4h.5c.9 0 3.2-.1 5.3-1.1 2.7-1.2 4.1-3.6 4.1-6.7s-2.1-4.9-3.7-6.2c-.9-.8-1.8-1.5-1.8-2.2 0-.7.6-1.2 1.4-1.9 1.2-1 2.4-2.5 2.4-5.5 0-2.4-.3-4.2-2.4-5.4.2-.1 1-.2 1.4-.2 1.1-.2 2.7-.3 2.7-1.2V.8H10c-.1 0-8.3.2-8.3 7.5zM15 24c.2 2.4-2 4.2-5.2 4.5-3.3.2-6-1.2-6.1-3.7-.1-1.1.5-2.3 1.5-3.3S7.7 20 9.3 20h.6c2.9 0 4.9 1.7 5.1 4zM12.8 6.7c.8 2.8-.4 5.6-2.3 6.2h-.7c-1.8 0-3.5-1.7-4.2-4.2-.3-1.3-.2-2.5.1-3.7.4-1.1 1.1-1.9 2.1-2.1.2 0 .4-.1.6-.1 2.2 0 3.6.9 4.4 3.9zm13.9 5.8V7.2h-3.6v5.3h-5.3V16h5.3v5.3h3.6V16H32v-3.5h-5.3z"></path>
    </symbol>
    
    <symbol id="a-we-in-instagram" viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M16.5 15c0-.3-.2-.5-.5-.5-1.5 0-2.7 1.1-2.7 2.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.8.8-1.5 1.6-1.5.4 0 .6-.2.6-.5zm3.8 2c0 2.2-2 4-4.3 4s-4.3-1.8-4.3-4 1.9-4 4.3-4 4.3 1.9 4.3 4zM3 26.1h26V24H3v2.1zM22.5 17c0-3.4-2.9-6.1-6.6-6.1S9.4 13.6 9.4 17s2.9 6.1 6.6 6.1 6.5-2.8 6.5-6.1zM5.3 6.9h6.6V4.8H5.3v2.1zM3 9.9h26v-4H15L13.9 8H3v1.9zm28.2-4v20.3c0 1.1-1 2.1-2.2 2.1H3c-1.2 0-2.2-.9-2.2-2.1V5.9c0-1.1 1-2.1 2.2-2.1h26c1.2 0 2.2.9 2.2 2.1z"></path>
    </symbol>
    
    <symbol id="a-we-in-twitter" viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M30.8 5.2c-1.1.6-2.3.9-3.5 1.1 1.2-.8 2.3-2.4 2.6-4-1.2.8-2.4 1.4-3.9 1.8-1.1-1.4-2.6-2.4-4.4-2.4-3.3 0-6 3.2-6 7.2 0 .6.1 1 .2 1.6-5-.3-9.5-3.1-12.5-7.5-.6 1-.9 2.4-.9 3.6 0 2.5 1 4.7 2.6 6-.9 0-1.9-.4-2.7-.8v.1c0 3.5 2.1 6.4 4.9 7.1-.6.2-1 .3-1.6.3-.4 0-.8-.1-1.1-.1.8 2.8 3 4.9 5.7 5-2.1 2-4.7 3.1-7.5 3.1-.6 0-.9 0-1.5-.1 2.6 2.1 5.9 3.2 9.3 3.2 11.2 0 17.2-11 17.2-20.5v-.8c1.2-1.2 2.2-2.4 3.1-3.9z"></path>
    </symbol>
    
    <symbol id="a-we-in-vcontacte" viewBox="0 0 32 32" width="32" height="32"  >
    <path fill="#FFF" d="M22.6 15.1c1.1-1.5 1.9-3.4 1.9-5.6 0-4.7-3.6-8.6-8-8.6h-10V31h12c4.4 0 8-3.9 8-8.6 0-3.1-1.5-5.8-3.9-7.3zM12.5 5.3h3.2c1.8 0 3.2 2 3.2 4.3s-1.4 4.3-3.2 4.3h-3.2V5.3zm4.9 21.4h-5v-8.6h5c1.9 0 3.3 2 3.3 4.3s-1.4 4.3-3.3 4.3z"></path>
    </symbol>
    
    <use y="8" xlink:href="#a-we-in-facebook"></use>
    <use y="8"  x="50" xlink:href="#a-we-in-google"></use>
    <use y="8"  x="100" xlink:href="#a-we-in-instagram"></use>
    <use y="8"  x="150" xlink:href="#a-we-in-twitter"></use>
    <use y="8"  x="200" xlink:href="#a-we-in-vcontacte"></use>
    
     </svg>

    红色边框是 SVG 边框,仅供查看,可以将其删除 -border:1px solid red;我用它来调整填充。

    更新02/23/2017

    此外,还有一个 SVG 社交图标块,带有指向社交网络的工作链接。性能测试:chrome、FF、Opera、Yandex

    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="235" height="45" viewBox="0 0 235 45" style="background:black; ">
    <style>
    svg path{
    fill:inherit;
    }
    #a-we-in-facebook,
    #a-we-in-google,
    #a-we-in-instagram,
    #a-we-in-twitter,
    #a-we-in-vcontacte
    {
    fill:inherit;
    }
    a:link
    {
    fill:white;
    }
     a:focus,
    a:active,
    a:hover {
    	
    	fill:orange;
    		}
    
    </style>
    <symbol id="a-we-in-facebook"> viewBox="0 0 32 32" width="32" height="32" >
    <path  d="M19.8 6.5h5.5V.8h-5.5c-4.2 0-7.7 2.9-7.7 6.7v2.8H7.7V16h4.4v15.2h6.6V16h5.5l1.1-5.7h-6.6V7.5c0-.5.5-1 1.1-1z">
    </path>
    </symbol>
    
    <symbol id="a-we-in-google"> viewBox="0 0 32 32" width="32" height="32"  >
    <path  d="M1.7 8.3c0 2.5.9 4.5 2.6 5.6 1.4.8 3.1 1 4 1h.5s-.3 1.7 1.1 3.5c-2.4 0-9.9.5-9.9 6.5 0 6.1 6.9 6.4 8.3 6.4h.5c.9 0 3.2-.1 5.3-1.1 2.7-1.2 4.1-3.6 4.1-6.7s-2.1-4.9-3.7-6.2c-.9-.8-1.8-1.5-1.8-2.2 0-.7.6-1.2 1.4-1.9 1.2-1 2.4-2.5 2.4-5.5 0-2.4-.3-4.2-2.4-5.4.2-.1 1-.2 1.4-.2 1.1-.2 2.7-.3 2.7-1.2V.8H10c-.1 0-8.3.2-8.3 7.5zM15 24c.2 2.4-2 4.2-5.2 4.5-3.3.2-6-1.2-6.1-3.7-.1-1.1.5-2.3 1.5-3.3S7.7 20 9.3 20h.6c2.9 0 4.9 1.7 5.1 4zM12.8 6.7c.8 2.8-.4 5.6-2.3 6.2h-.7c-1.8 0-3.5-1.7-4.2-4.2-.3-1.3-.2-2.5.1-3.7.4-1.1 1.1-1.9 2.1-2.1.2 0 .4-.1.6-.1 2.2 0 3.6.9 4.4 3.9zm13.9 5.8V7.2h-3.6v5.3h-5.3V16h5.3v5.3h3.6V16H32v-3.5h-5.3z"></path>
    </symbol>
    
    <symbol id="a-we-in-instagram" viewBox="0 0 32 32" width="32" height="32"  >
    <path  d="M16.5 15c0-.3-.2-.5-.5-.5-1.5 0-2.7 1.1-2.7 2.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.8.8-1.5 1.6-1.5.4 0 .6-.2.6-.5zm3.8 2c0 2.2-2 4-4.3 4s-4.3-1.8-4.3-4 1.9-4 4.3-4 4.3 1.9 4.3 4zM3 26.1h26V24H3v2.1zM22.5 17c0-3.4-2.9-6.1-6.6-6.1S9.4 13.6 9.4 17s2.9 6.1 6.6 6.1 6.5-2.8 6.5-6.1zM5.3 6.9h6.6V4.8H5.3v2.1zM3 9.9h26v-4H15L13.9 8H3v1.9zm28.2-4v20.3c0 1.1-1 2.1-2.2 2.1H3c-1.2 0-2.2-.9-2.2-2.1V5.9c0-1.1 1-2.1 2.2-2.1h26c1.2 0 2.2.9 2.2 2.1z"></path>
    </symbol>
    
    <symbol id="a-we-in-twitter" viewBox="0 0 32 32" width="32" height="32"  >
    <path  d="M30.8 5.2c-1.1.6-2.3.9-3.5 1.1 1.2-.8 2.3-2.4 2.6-4-1.2.8-2.4 1.4-3.9 1.8-1.1-1.4-2.6-2.4-4.4-2.4-3.3 0-6 3.2-6 7.2 0 .6.1 1 .2 1.6-5-.3-9.5-3.1-12.5-7.5-.6 1-.9 2.4-.9 3.6 0 2.5 1 4.7 2.6 6-.9 0-1.9-.4-2.7-.8v.1c0 3.5 2.1 6.4 4.9 7.1-.6.2-1 .3-1.6.3-.4 0-.8-.1-1.1-.1.8 2.8 3 4.9 5.7 5-2.1 2-4.7 3.1-7.5 3.1-.6 0-.9 0-1.5-.1 2.6 2.1 5.9 3.2 9.3 3.2 11.2 0 17.2-11 17.2-20.5v-.8c1.2-1.2 2.2-2.4 3.1-3.9z"></path>
    </symbol>
    
    <symbol id="a-we-in-vcontacte" viewBox="0 0 32 32" width="32" height="32"  >
    <path  d="M22.6 15.1c1.1-1.5 1.9-3.4 1.9-5.6 0-4.7-3.6-8.6-8-8.6h-10V31h12c4.4 0 8-3.9 8-8.6 0-3.1-1.5-5.8-3.9-7.3zM12.5 5.3h3.2c1.8 0 3.2 2 3.2 4.3s-1.4 4.3-3.2 4.3h-3.2V5.3zm4.9 21.4h-5v-8.6h5c1.9 0 3.3 2 3.3 4.3s-1.4 4.3-3.3 4.3z"></path>
    </symbol>
    
    <a xlink:href="https://ru-ru.facebook.com/"> <use y="8" xlink:href="#a-we-in-facebook"></use> </a>
    <a xlink:href="https://plus.google.com/" > <use y="8"  x="50" xlink:href="#a-we-in-google"></use></a>
    <a xlink:href="https://www.instagram.com/" ><use y="8"  x="100" xlink:href="#a-we-in-instagram"></use></a>
    <a xlink:href="https://twitter.com/" ><use y="8"  x="150" xlink:href="#a-we-in-twitter"></use></a>
    <a xlink:href="https://vk.com/feed" ><use y="8"  x="200" xlink:href="#a-we-in-vcontacte"></use></a>
    </svg>

    • 4
  4. MobiDevices
    2020-02-23T00:40:37Z2020-02-23T00:40:37Z

    选项 1:删除 ViewBox 源文件

    使用 gulp-imagemin 和 imagemin-svgo 插件删除 ViewBox:

    var
        gulp = require('gulp'),
        svg-sprites = require('gulp-svg-sprites'),
        imagemin = require('gulp-imagemin'),
        imageminSvgo = require('imagemin-svgo');
    
    gulp.task('svg-sprites:build', function () {
      return gulp.src(options.theme.img_svg_src + '*.svg')
        .pipe(imagemin([
            imageminSvgo({
                plugins: [
                    {removeViewBox: true}
                ]
            })
        ]))
        .pipe(svgSprite())
        .pipe(gulp.dest(options.theme.img_src + 'dict'))
        .pipe(filter(options.theme.img_src + 'dict/svg/*.svg')) 
        .pipe(gulp.dest(options.theme.img_src + 'dict'));
    });
    

    选项 2:用图标字体替换 SVG 精灵

    最好使用图标字体而不是精灵。而且这种方法有很多优点:

    1. 比 sprite 更小的字重;
    2. 通过 CSS 实现样式灵活性;
    3. 更少的 CSS 重量。

    要生成图标字体,我会推荐这种组合:

    // Generate icon font
    gulp.task('iconfont', function() {
        var
            fontName = 'icon-font',
            cssClass = 'i';
        // Исходные SVG-файлы
        gulp.src(['./fonts/icon-font/*.svg'])
            .pipe(iconfontCss({
                fontName: fontName,
                cssClass: cssClass,
                path: './styl/mixins/icon-font.styl',
                targetPath: '../../styl/components/font/icon-font.styl',
                fontPath: '../fonts/'
            }))
            .pipe(iconfont({
                fontName: fontName,
                prependUnicode: true,
                normalize: true,
                formats: ['svg','ttf','woff','woff2']
            }))
            .pipe(gulp.dest('./public/fonts/'));
    });
    

    从这一行中提取的样式碗path: './styl/mixins/icon-font.styl'将如下所示:

    @font-face
        font-family "<%= fontName %>"
        src: url('<%= fontPath %><%= fontName %>.woff2') format('woff2'),
             url('<%= fontPath %><%= fontName %>.woff') format('woff'),
             url('<%= fontPath %><%= fontName %>.ttf') format('truetype'),
             url('<%= fontPath %><%= fontName %>.svg#<%= fontName %>') format('svg')
    
    [class*="i-"]
        position relative
        display inline-block
        width 1em
        height 1em
        &:before
            font 14px '<%= fontName %>'
            font-size inherit
            text-rendering auto
            speak none
            font-variant normal
            text-transform none
            color inherit
            position absolute
            top 50%
            left 50%
            transform translate(-50%, -50%)
    
    <% _.each(glyphs, function(glyph) { %>
    .<%= cssClass %>-<%= glyph.fileName %>:before
      content "\<%= glyph.codePoint %>"
    <% }); %>
    

    生成字体后,您所要做的就是将生成的 CSS 包含在您的站点中或将其嵌入主 CSS 文件中,然后像这样使用它:

    <span class="i-<<имя исходного SVG-файла>>"></span>
    
    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5