在线文档教程

SVG and CSS

SVG and CSS

本节将演示如何将CSS应用到 SVG 中。

你将创建一个简单的演示代码并在支持SVG的浏览器中运行。

示例

建立一个SVG文件doc8.svg。复制下面所有内容:

<?xml version="1.0" standalone="no"?> <?xml-stylesheet type="text/css" href="style8.css"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg width="600px" height="600px" viewBox="-300 -300 600 600" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>SVG demonstration</title> <desc>Mozilla CSS Getting Started - SVG demonstration</desc> <defs> <g id="segment" class="segment"> <path class="segment-fill" d="M0,0 v-200 a40,40 0 0,0 -62,10 z"/> <path class="segment-edge" d="M0,-200 a40,40 0 0,0 -62,10"/> </g> <g id="quadrant"> <use xlink:href="#segment"/> <use xlink:href="#segment" transform="rotate(18)"/> <use xlink:href="#segment" transform="rotate(36)"/> <use xlink:href="#segment" transform="rotate(54)"/> <use xlink:href="#segment" transform="rotate(72)"/> </g> <g id="petals"> <use xlink:href="#quadrant"/> <use xlink:href="#quadrant" transform="rotate(90)"/> <use xlink:href="#quadrant" transform="rotate(180)"/> <use xlink:href="#quadrant" transform="rotate(270)"/> </g> <radialGradient id="fade" cx="0" cy="0" r="200" gradientUnits="userSpaceOnUse"> <stop id="fade-stop-1" offset="33%"/> <stop id="fade-stop-2" offset="95%"/> </radialGradient> </defs> <text id="heading" x="-280" y="-270"> SVG demonstration</text> <text id="caption" x="-280" y="-250"> Move your mouse pointer over the flower.</text> <g id="flower"> <circle id="overlay" cx="0" cy="0" r="200" stroke="none" fill="url(#fade)"/> <use id="outer-petals" xlink:href="#petals"/> <use id="inner-petals" xlink:href="#petals" transform="rotate(9) scale(0.33)"/> </g> </svg>

创建一个CSS文件,style8.css。 复制下面所有内容:

/*** SVG demonstration ***/ /* page */ svg { background-color: beige; } #heading { font-size: 24px; font-weight: bold; } #caption { font-size: 12px; } /* flower */ #flower:hover { cursor: crosshair; } /* gradient */ #fade-stop-1 { stop-color: blue; } #fade-stop-2 { stop-color: white; } /* outer petals */ #outer-petals { opacity: .75; } #outer-petals .segment-fill { fill: azure; stroke: lightsteelblue; stroke-width: 1; } #outer-petals .segment-edge { fill: none; stroke: deepskyblue; stroke-width: 3; } #outer-petals .segment:hover > .segment-fill { fill: plum; stroke: none; } #outer-petals .segment:hover > .segment-edge { stroke: slateblue; } /* inner petals */ #inner-petals .segment-fill { fill: yellow; stroke: yellowgreen; stroke-width: 1; } #inner-petals .segment-edge { fill: none; stroke: yellowgreen; stroke-width: 9; } #inner-petals .segment:hover > .segment-fill { fill: darkseagreen; stroke: none; } #inner-petals .segment:hover > .segment-edge { stroke: green; }

在支持SVG的浏览器中打开上面的文档。将鼠标移到图上。

结果

ScreenshotLive sample

关于这个演示的注释:

  • 这个SVG文档使用常见连接方法引入样式表。

  • SVG有自己一套CSS属性和对应的值。其中一些和HTML使用的CSS属性相似。

| 改变样式表,使得当鼠标指针位于其中的任何一个时,内部花瓣全部变成粉红色,而不改变外部花瓣的工作方式。|

|:----|

看这个挑战的解决方案。

接下来是什么?

在这个演示中,您的支持SVG的浏览器已经知道如何显示SVG元素。样式表只能以某种方式修改显示。对于HTML和XUL文档也是如此。但是,您可以将CSS用于通用XML文档,其中没有预定义的方式来显示元素。下一页演示了这一点:XML数据