html – SVG元素渲染质量

前端之家收集整理的这篇文章主要介绍了html – SVG元素渲染质量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个SVG画布,用户可以选择并调整一些< image>里面的元素.我使用preserveAspectRatio =“xMidYMid meet”属性值来保持原始宽高比.原始图像源大多为256x256px大小.在Firefox和IE-11上,当我调整大小< image>元素尺寸小于原始尺寸,看起来非常像素化.在Chrome上,它们看起来非常流畅.我想知道是否有任何css或svg功能可以帮助我让它们在Firefox和IE上看起来更流畅.

谢谢.

编辑:添加样品..

https://jsfiddle.net/p8km6nhc/7/

  1. <svg viewBox="-170 -87 1678 869" style="width: 100%; height: 100%; overflow: hidden; left: 0px; top: -0.800003px;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
  2. <defs>
  3. <filter id="varlikItemShadow1">
  4. <feGaussianBlur stdDeviation="3" in="SourceGraphic"></feGaussianBlur>
  5. <feOffset dy="1" dx="1"></feOffset>
  6. <feMerge>
  7. <feMergeNode></feMergeNode>
  8. <feMergeNode in="SourceGraphic"></feMergeNode>
  9. </feMerge>
  10. </filter>
  11. </defs>
  12. <g>
  13. <g transform="matrix(1,1,0)">
  14. <g transform="matrix(1,158,256)">
  15. <g title="" data-original-title="" data-rounded="yes">
  16. <text style="font:0px arial;" x="0" y="1" stroke="none" transform="matrix(1,0)" fill="#ffffff" fill-opacity="0.111111">[[VarlikId=3999]]</text>
  17. <rect filter="url(#varlikItemShadow1" stroke="#2b5987" stroke-width="2" fill-opacity="0.9" fill="#ffe8f6" ry="10" rx="10" y="0" x="0" height="140" width="1270"></rect>
  18. <path d="M0 0 L 1268 0 1268 138 0 138Z" stroke="none" stroke-width="0" fill="none" fill-opacity="0" transform="matrix(1,0)"></path>
  19. <image image-rendering="optimizeQuality" preserveAspectRatio="xMidYMid meet" x="14" y="14" width="1242px" height="66px" xlink:href="https://deviantshare.azurewebsites.net/img/test.png"></image>
  20. <text style="font:32px arial;" x="0" y="30" stroke="none" transform="matrix(1,591,94)" fill="#2b5987">3. Kat</text>
  21. </g>
  22. </g>
  23. </g>
  24. </g>
  25. </svg>

结果:

解决方法

因为它显然看起来像Firefox和IE渲染的问题,想到尝试解决方法解决这个问题.

而不是使用< image> SVG的元素,尝试使用< img> HTML的标记并使用< foreignObject>嵌入它SVG的元素.

代替 :

  1. <image image-rendering="optimizeQuality" preserveAspectRatio="xMidYMid meet"
  2. x="14" y="14" width="1242px" height="66px"
  3. xlink:href="https://deviantshare.azurewebsites.net/img/test.png"></image>

用过的:

  1. <foreignObject x="600" y="14" width="100" height="100">
  2. <body>
  3. <img src="https://deviantshare.azurewebsites.net/img/test.png"
  4. type="image/svg+xml" width="66px" height="66px">
  5. </body>
  6. </foreignObject>

但是一个悬而未决的问题是IE doesn’t support foreignObject呢!

Codepen.io正在运作example

猜你在找的HTML相关文章