当前位置: 首页 > 知识库问答 >
问题:

正在缓存svg文件。使用img标记还是svg标记?

晁砚
2023-03-14

我有许多大的SVG文件(用在线工具减小大小后大约有200kb)。我真的不希望访问者每次访问时都从我的服务器上下载所有的文本。我想利用CDN和varnish缓存。

如果我使用SVG标签,浏览器、CDN或Varish都会将svg代码缓存在html文档中。SVG没有src属性。

如果我使用图像标记,它将被缓存,但我无法利用SVG标记的preserveAspectRatio和viewBox。在调整浏览器窗口的大小时,我必须处理图像的div和css以保持纵横比。您认为使用SVG会更容易

我目前的分辨率是这个 css 在一个 img 标签上,在 src 属性中有一个 svg。

.myImage{ max-width: 100%; height: auto; max-height: 55vh;}

我真正想做的是这个,但显然我不能:

 <svg data='images/mydoc.svg' viewBox="0 0 250 75" preserveAspectRatio="xMinYMin meet">
 </svg>

我正在寻找如何处理SVG的想法。我真的需要用css将我所有的img标签svg图像包装在div标签中以保持浏览器大小的长宽比吗?我只是觉得有一个更简单的方法,我缺少什么?

共有1个答案

杨骏
2023-03-14

您的CSS大小调整做得太多,同时又不够。您说您想要一个max-wide,但您没有给出宽度。除了一个max-Hei之外,您只给出了一个auto高度。任何尺寸为0px x 0px的图像都可以满足这些条件。

如果SVG非常宽,但不是很高,你会怎么做?在我看来,你希望它有100%的宽度,但高度要缩小。如果SVG非常高,如果它拉伸了整个宽度,它将超过55vh限制,你会怎么做?在我看来,你希望它保持更小,向左移动。

为此,您的最大宽度规则是多余的,并且缺少宽度规则。

您可以很容易地实现这一点(可能会出现旧的IE版本)。-对于这个例子,我将SVG设置为超文本标记语言的数据uri。

css prettyprint-override">.myImage{
    width: 100%; 
    max-height: 55vh;
}
<img class="myImage" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 250 75' preserveAspectRatio='xMinYMin meet'><rect width='250' height='75' fill='green'/></svg>">

 类似资料:
  • 问题内容: 我已经看到了很多用于svg on react的库,但是没有一个给我如何在react组件中导入.svg的代码,我已经看到了谈论将svg代码带入反应而不是使用.svg图标作为图像进行显示的代码。在用户界面中。 请告诉我是否有嵌入图标的方法。 问题答案: 如果图像是远程托管的,则可以直接将扩展名与标记一起使用。 这是小提琴:http : //codepen.io/srinivasdamam-

  • 我试图在pixioverlay.js(使用pixi.js的绘图覆盖)上绘制svg标记。全新的Pixi我自己,我想我已经把一些东西一起绘制菱形,见第一个代码片段(如果它是不正确的,或需要改进,让我知道) 请问我该怎么做? 在现实生活中,我有很多这样的标记,都是一些几何形状,比如三角形、星形、正方形、圆形等等,总共会有几千个(比如100K甚至更多,这取决于课程的缩放级别。在zoom=0时,可能接近10

  • 问题内容: 因此,通常包括我需要简单样式的大多数SVG图标,我这样做: 现在,我一直在玩ReactJS作为它的后期评估在我的新的前端开发堆栈可能的成分,但是我注意到,在其支持的标记/属性列表,无论是或支持。 是否可以使用svg精灵并以这种方式在ReactJS中加载它们? 问题答案: 2018年9月更新 :不建议使用此解决方案,请阅读乔恩的答案。 - 反应并不支持所有的SVG标签就像你说的,有支持的

  • 问题内容: 尝试在基于SVG的可视化中使用SVG标记元素时遇到问题。我正在将更改添加到Web应用程序中,该更改恰好在每个页面上都包含一个基本标记,以便对CSS文件,javascript文件等的任何引用都可以是相对的。 我下面有一些示例代码可以重现该问题。有一个线元素和一个标记元素定义。该标记元素由其’marker- end’属性中的行通过uri和标记id引用。没有基本标签,箭头显示正常。使用基本标

  • 全局 Svg Icon 图标组件。 默认在 @/icons 中注册到全局中,可以在项目中任意地方使用。所以图标均可在 @/icons/svg。可自行添加或者删除图标,所以图标都会被自动导入,无需手动操作。 使用方式 <!-- icon-class 为 icon 的名字; class-name 为 icon 自定义 class--> <svg-icon icon-class="password"

  • 我有来自网站的代码,我想在那里找到并获得图像的路径,我的意思是来自