The*_*tut 2 html svg external stylesheet
我是新的 svg 学习者,并尝试使用外部样式表为 svg 文件设置动画,但未能为我的对象“立方体”设置样式。
[index.html 文件]
<head>
<link rel="stylesheet" type="text/css" href="cube.css">
</head>
<body>
<img src="cube-motion.svg" height="350px" />
<div class="logo">
<h1>SVG Cube Animation</h>
</div>
Run Code Online (Sandbox Code Playgroud)
[cube-motion.svg 文件]
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="cube.css" ?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<g>
<polygon id="l1" class="st0" points="105.3,92.7 86.3,103.3 67.3,92.9 67.1,71.9 86,61.2 105.1,71.6 "/>
<polyline id="l2" class="st1" points="67.1,71.9 86.2,82.5 86.3,103.3 67.1,93.1 66.9,71.9 "/>
<animateTransform
attributeName="transform"
type="translate"
from="0 0"
to="0 75"
begin="0s"
dur="3s"
repeatCount="indefinite"
/>
</g>
</svg>
Run Code Online (Sandbox Code Playgroud)
[外部样式表文件cube.css]
.st0 {
fill:#FF00FF;
stroke:#000000;
stroke-miterlimit:10;
}
.st1 {
fill:#23D83C;
stroke:#000000;
stroke-miterlimit:10;
}
.logo {
position: absolute;
left: 400;
top: 150;
}
Run Code Online (Sandbox Code Playgroud)
通过在 SVG 中包含外部样式表,您走在正确的轨道上:
<?xml-stylesheet type="text/css" href="cube.css" ?>
Run Code Online (Sandbox Code Playgroud)
它不起作用的原因是因为 SVG 被加载到 HTML 中,<img>这 - 理所当然 - 不允许处理额外的外部资产。
如果您坚持使用外部文件中的 CSS,您有两个选择,要么将 SVG 嵌入到 html 中,要么使用<object data=file.svg type=image/xml+svg></object>.
根据您的用例,您基本上可以通过三种方式使用 CSS 进行样式设置:
<img src="my.svg">
图像不是交互式的,并且不允许在其内部加载任何其他资产。仅引用图像文件的简单表示。它确实允许使用 CSS,但只能从<style>SVG 内的 -element 使用。
<object data="my.svg" type="image/svg+xml"></object>
对象可以做的不仅仅是图像,例如加载额外的资产,甚至包括独立的(在加载的 SVG 内)交互(例如 CSS :hover-pseudoclass)加载外部 CSS 文件是在示例代码中完成的, -<?xml-stylesheet...?>指令是在<svg>-tag之前
<svg...>...</svg>
完全嵌入在 HTML 文档中,这允许在页面内完全集成(这可能在交互方面有好处,在 CSS 方面有缺点,因为您必须考虑样式隔离),但也是最少的可重复使用,因为您基本上必须重复整个 SVG,如果在页面上使用一次,这无关紧要。请注意,为了将 SVG 嵌入 HTML 文档中,您不能将任何 SVG doctype 和/或 xml 声明放在 HTML(<?xml...?>,<!DOCTYPE svg...>和<?xml-stylesheet...?>)中。使用嵌入式 SVG,您可以使用通常的 HTML<link>或<style>节点简单地导入(或内联)样式,其中<style>元素也可能仍位于<svg>-element 内。
| 归档时间: |
|
| 查看次数: |
2476 次 |
| 最近记录: |