内联和外部 SVG 样式的优缺点

已发表: 2022-11-29

当谈到样式化矢量图形时,基本上有两种方法:内联或外部。 内联样式是直接写入 SVG 代码的样式,而外部样式是写入单独的 CSS 文件然后由 SVG 代码引用的样式。 这两种方法各有利弊,但总的来说,使用外部样式是最好的方法。 这是因为它可以让您的 SVG 代码保持干净整洁,还可以更轻松地跨多个 SVG 文件重用样式。 以下是如何使用单独的样式表设置 SVG 样式的简要说明: 1. 创建一个 CSS 文件并向其中添加您的样式。 2. 在 SVG 代码部分添加对 CSS 文件的引用。 3. 将样式应用于 SVG 代码中的所需元素。 这就是它的全部! 使用单独的样式表是保持 SVG 代码整洁有序的好方法,它还可以更轻松地跨多个文件重用样式。 试试看吧。

您可以使用 XML 制作简单的 SVG 文件。 因此,有大量的 XML 库可以实现这一点。 如果要将 SVG 保存到其他文件,则必须在其中定义 CSS。 尽管您可以做任何您想做的事情,但一个(重要的)警告是您的符号中的路径不能使用 CSS 独立设置样式。 通过混合和匹配外部 CSS 和内联 CSS,您可以轻松避免使用外部 CSS 分别定位符号中的路径的问题。 如果要使用此方法,应使用白色图标和彩色背景,但图标本身始终为白色(反之亦然)。 换句话说,HTML 代码是 img 标签的样式而不是 SVG 代码。

带有黑色或白色或灰色填充的图形将不起作用。 如果您选择 HTML 标记,则可以使用外部 CSS 文件来设置样式。 当您从不受信任的来源内联加载 svg 时,您将能够在 HTML 中包含任意脚本、css 和其他元素,从而破坏您的沙箱。 在这种情况下,您必须将 .svg 包含或内联到文档的 DOM 中,无论是在 HTML 中还是与其一起。 .js 函数在元素加载后传入,这应该与 DOM 中的 img 标签(或类似方法)一样有效。 该文档没有 Javascript,没有服务器代码,也没有 root-id。 之后,我们可以将它与 Chrome/Edge 似乎支持的 SVG2-Tag 一起使用 – Blink; Firefox——壁虎; 和 Safari – Webkit。 如果您害怕使用图标字体,没有它们没有更好的方法:请按照下列步骤操作: 如果您有兴趣稍后更改 svg 文件的颜色,您可以使用此文件作为 PHP 文件名。

由于元素“style”(*style),样式表可以直接嵌入到 SVG 内容中。 style> 是 HTML 的样式元素,包含与 SVG 的样式元素相同的属性(有关更多信息,请参阅 HTML 的 style> 元素)。

使用 [svg] /svg[/svg] 标签时,HTML 文档可以动态生成带有SVG 图像的文件。 您可以通过在 VS 代码或首选 IDE 中打开 SVG 文件、复制代码并将其插入到 HTML 文档的 body 元素中来执行此操作。 如果一切顺利,您应该能够看到与以下示例中完全一样的网页。

在 CSS 中使用时,我们可以使用 SVG 作为数据 URI,但它只能在基于 Webkit 的浏览器中访问,无需编码。 encodeURIComponent() 方法将确保 SVG 在任何地方都被编码。 具有此属性的 XMLns 必须存在于 SVG 中:XMLns ='http://www.w3.org/2000/svg'。

你可以使用 Css 来设计 Svg 的样式吗?

你可以使用 Css 来设计 Svg 的样式吗?
图片来源:https://medium.com

可缩放矢量图形 (SVG) 有多种格式,但只有某些属性可以转换为矢量图形中的 CSS。 在设置SVG 元素的样式时,也可以在 CSS 属性中使用 presentation 属性。 虽然其中一些属性仅适用于 SVG,但其他属性已在 CSS 中共享,例如字体大小或透明度。

使用 >use> 元素实例化图标或任何其他SVG 元素或图像可能很困难。 在本文中,我们将研究如何克服 >use> 选项引入的样式限制。 在 SVG 中,四个主要元素被定义、结构化和引用。 创建模板时,可以使用 >defs> 选项定义一些元素。 文档中的元素表示将在文档中的其他地方引用的模板,并用于组织定义该模板的元素。 通过使用 use 元素,您可以重用元素并在图形编辑器中执行与在复制粘贴应用程序中相同的操作。 影子 DOM 是什么意思?

有没有一种方法可以检查该子文档以真正了解其内部工作原理? 在这个元素中有一个它自己的克隆。 Chrome 的开发人员工具可用于检查影子 DOM 的内容。 为此,请单击“设置”面板的“常规”选项卡中的 Cog 图标,然后启用影子 DOM 检查。 另一方面,在处理 CSS 和 JavaScript 时,影子 DOM 的行为与主文档不同,因此您无法判断它是普通 DOM 还是影子 DOM。 无法定位该函数的路径后代。 因为常规的 CSS 选择器不可用,所以我们无法访问影子 DOM。

表示属性经常用于指定元素的 CSS 属性。 由于它们的性质,它们以某种方式对样式级联做出了贡献,但并不总是如预期的那样。 在表示属性上,使用低级作者样式表,任何其他样式定义都可以覆盖它们。 样式级联中仅存在过度继承的样式,这是唯一的强大表示属性。 样式从其祖先继承样式,就像从元素的元素继承样式一样。 presentation 属性未由任何其他样式声明定义。 我们可以通过强制 presentation 属性的值被外部样式声明覆盖来使用此方法。

因此,使用 CSS inherit 关键字非常简单。 看看下面的冰淇淋图标示例,它仅由一个路径组成,其填充颜色可以根据不同的应用程序进行更改。 CSS all Property 的内容可能非常有用,但它是一种极端的措施。 本质上,这个声明返回每个元素的属性值从它的祖先。 它适用于支持 all 属性的任何浏览器(有关更多信息,请参阅属性条目)。 当使用 CSS currentColor 变量时,我们可以在一个元素上指定两种不同的颜色,而不仅仅是一种。 使用此技术的目的是在 >use> 上组合填充和颜色属性,以便根据 currentColor 的可变性质将颜色级联到页面的内容中。

我们将使用 currentColor 变量来指定前面每个水滴的颜色值,如 color 属性中指定的那样。 简单的双色徽标可以从这种技术中受益匪浅。 一年多前,Amelia Bellamy-Royds 在 Codepen 博客文章中首次介绍了这个概念。 如果您使用 CSS 变量,则无需强制浏览器覆盖任何表示属性值即可设置元素内容的样式。 变量是根据网页的特定值定义网页的实体,由作者或用户创建。 尽管它们与 CSS 预处理器变量(如 Sass)相似,但它们的使用频率更高,并且可以做预处理器变量不能做的事情。 对于图像的多个副本,您可以选择一组颜色来使用,并根据图像的用途创建各种主题。

如果您打算以多种方式设置徽标样式,例如在特定上下文中或出于任何其他类似目的,这将特别有用。 您仍然可以将填充和颜色属性与这些变量一起包含在内,但您可能不需要或不想这样做。 当变量的值未加载时,浏览器将恢复为标记中指定的初始颜色。 每个新实例都将根据 CSS 中设置的值拥有自己的颜色主题。 通过使用 CSS 级联,您可以简化 >use> 内容的样式设置。 我们的图形可以使用我们可以插入影子 DOM 的 CSS 变量根据我们的规范进行定制。 它们目前仅在 Firefox 中可用,但您可以尽快在其他浏览器中为它们投票。 已经有关于在未来使用 CSS 变量作为SVG 参数的讨论,所以我们甚至可以以其他方式使用它们。

SVG 格式的图像显示为 .svg 文件。 要更改SVG 图像在浏览器中的显示方式,您必须使用下面列出的三种方法之一。 当您使用 *object> 时,SVG 将作为 aaobject 放置,并使用 CSS 和 Javascript 对其进行控制。 使用 *iframe/ 当使用 *svg 作为文档对象加载时,CSS 和 Javascript 可用于控制 SVG。 要更改 SVG 图像的颜色,您必须首先在 svg 标签中输入填充属性。 之后可以使用 CSS 更改颜色。 设置 fill 属性后,将应用元素的颜色属性或 svg 标签的父元素。

Svg 和 Css 的优缺点

两种格式都有优点和缺点。 它更通用,可以更详细,但更难使用。 另一方面,CSS 更简单,不需要太多的天赋,但它可能不如 CSS 通用。


Svg图形可以用css缩放吗?

Svg图形可以用css缩放吗?
图片来源:https://googleusercontent.com

如果您使用 CSS 设置 SVG 的高度或宽度,*svg 的高度和宽度属性为您提供默认的内联 SVG 高度,svg (*width: 100%; height: auto;*) 必须设置为取消代码中指定的尺寸和纵横比的规则。

以下步骤将帮助您放大矢量图形。 Amelia Bellamy-Royds 详细解释了缩放 SVG。 虽然它不像缩放光栅图形那么简单,但它可以让您创建有趣的应用程序。 初学者可能会对更改 SVG 文件的行为如此简单感到惊讶。 照片在星图图像中的纵横比是其宽度与其高度的比值。 浏览器可以绘制与其固有高度和宽度不同大小的光栅图像,但如果以不同的宽高比绘制,它也可能会扭曲图像。 内联 SVG通常以代码中指定的大小绘制,而不考虑画布大小。

ViewBox 是生成可缩放矢量图形 (SVG) 的最后一款软件。 viewBox 元素是 elements.svg() 元素中的属性元素。 在其最基本的形式中,它是由四个由空格或逗号分隔的数字组成的列表:x、y、宽度和高度。 对于视口的左角,x 和 y 定义了坐标系。 高度可以通过将填充可用高度所需的字符/坐标数乘以给定高度来计算。 如果您提供的图像尺寸与纵横比不匹配,则不会拉伸或扭曲。 object-fit CSS 属性也可以与其他图像类型一起使用,允许您执行相同的操作。

此外,您可以选择 preservingAspectRatioLastBeforeScale=”none”,这将允许您的图像缩放到与光栅图像相同的大小。 可以使用光栅图像比例调整图像的宽度或高度。 有可能通过sva获得吗? 随着时间的流逝,它变得更加困难。 使用带有 >img> 文件的图像自动调整大小是一个很好的起点,但破解它有点困难。 通过使用各种不同的 CSS 属性,您可以通过调整元素的高度和边距来调整元素的纵横比。 其他浏览器如果有viewBox,会自动设置图片大小为300*150; 此行为未在任何规范中定义。

如果您使用的是最新的 Blink/Firefox 浏览器,您可以更改图像的大小以适应 viewBox。 如果您不指定高度或宽度,将设置这些浏览器的默认尺寸。 容器元素是替换 SVG 和 >object> 等 SVG 内联元素的最简单方法。 根据内嵌图形,官方身高(最多)为零。 使用默认的 preserveRatioAspect 值,图形将被缩放为零。 您更愿意拉伸图形,使其覆盖您提供的整个宽度,并将其溢出到您为正确的纵横比精心设置的填充区域。 ViewBox 和 PreserveRatioAspect 允许您创建适应性极强的视图。 嵌套元素可用于分隔图形比例的各个部分,并使用每个元素的缩放属性以各自不同的顺序呈现它们。 这种方法的目标是创建一个标题图形,该图形可以扩展以覆盖宽屏显示器,同时不会阻碍其高度。

Greensock 和 Fuse 是我们可以用来创建动画的两个动画工具。
Greensock 的补间功能使您能够快速轻松地创建动画。
Fuse 库包含一组动画,可以通过提供一组动画对象轻松创建这些动画。

使用 Svg 缩放图像

默认情况下,viewBox 设置可用于缩放 SVG 图像而不更改其布局。 viewBox 用于指定 SVG 图像及其尺寸的坐标系。 viewBox 可以配置为使用任何坐标系,包括用户当前的坐标系。 因此,您可以在不更改其布局的情况下缩放 SVG 图像。 ViewBox = viewBox 是viewBox的名称。 这是零 100 的表示。

如何设置 Svg Css 样式

如何设置 Svg Css 样式
图片来源:https://pinimg.com

在使用 CSS 设计 SVG 样式时,有一些特殊的注意事项。 首先,因为 SVG 是矢量图像,它们可以无限缩放而不会降低质量。 这意味着 CSS 必须以利用这一点的方式编写。 其次,可以使用内联 CSS 和外部 CSS 来设置 SVG 的样式。 内联 CSS 直接写在 HTML 代码中,而外部 CSS 写在单独的文件中并链接到 HTML 代码。

当使用 SVG(可缩放矢量图形)绘制要素时,可以使用地图图层的 CSS 样式。 另一方面,渲染器和符号对习惯使用 CSS 的开发人员来说吸引力较小。 CSS 不能用于支持旧版浏览器中使用的其他矢量绘图方法,例如 Canvas、VML 等。 使用 CSS 的要素样式可以通过多种方式完成。 D3 的内置缩放方法可用于将我们的数据分类到桶中,然后使用 D3 工具包将样式应用于每个桶。 因为样式在 Graphic 类中设置为 false,所以可以立即添加许多新的数据属性。 使用 JS API 将样式应用于渲染器的方式与将样式应用于 Path 元素的方式相同。 属性值用于为具有数据属性的节点设置样式,数据属性用于定义分类间隔,标签用于定义标签。 在使用 CSS 时,我们可以使用伪选择器 like:hover 为页面添加悬停效果。

SVG 编辑器的效果部分包括许多可以使用的滤镜。 过滤器可用于更改 svega 的颜色、形状和不透明度。 此外,一些高级过滤器可用于创建更复杂的效果。

使用外部 CSS 设置 Svg 样式

使用外部 CSS 设置 Svg 样式
图片来源:https://leemunroe.com

使用外部 CSS 设置 SVG 样式的一种方法是使用