属性或属性的初始值是未指定该属性或属性时使用的值,或当其具有 无效值时使用的值。 该值用于渲染、计算 动画值时,以及通过 DOM 接口访问该属性或属性时。
在本规范中,属性通过属性定义表进行定义,格式如下:
名称 | 值 | 初始值 | 可动画 |
---|---|---|---|
exampleattr | <length> | none | none | yes |
值列中是属性语法的描述。描述属性语法的方法有六种:
SVG 2 要求: | 考虑放宽展示属性值的大小写敏感性。 |
---|---|
解决方案: | 我们将使属性值不区分大小写。 |
目的: | 使展示属性语法解析与相应 CSS 属性的解析保持一致。 |
负责人: | Cameron (ACTION-3276) |
状态: | 完成 |
当使用 CSS 值定义语法解析 展示属性 时,步骤如下:
插入 <number> 符号允许在展示属性中使用 无单位长度和角度,而在相应的属性值中不允许使用。
请注意,所有 展示属性, 由于它们是通过引用相应的 CSS 属性定义的,因此使用 CSS 值定义语法进行定义。
当任何其他使用 CSS 值定义语法定义的属性被解析时,通过 根据属性定义表中给出的语法解析 属性值。
请注意,这允许在此类属性中使用 CSS 注释和转义。例如,值 '10\px/**/' 将在 ‘x’ 的展示属性中成功解析为 '10px'。
当解析定义为 URL 的属性时,通过调用 URL 解析器,将属性的值作为 input 并将文档的 URL 作为 base [URL]。
初始值列提供了属性的 初始值。 当属性未能根据指定的 CSS 值定义语法、ABNF 或 EBNF 语法解析,或者根据 URL 标准解析 或通过描述如何解析属性的文字指示失败时,假定该属性已指定为给定的 初始值。
除非另有说明,SVG 属性中的数值和对 SVG 元素有影响的属性必须支持主机架构支持的所有有限单精度值。
建议在坐标系统转换等操作中执行更高精度的浮点存储和计算,以提供最佳可能的精度并防止舍入错误。
符合规范的 SVG 观看者需根据其符合性类别进行数值计算,如符合性标准中所述。
某些数值属性和属性值具有限制范围。其他值将受到设备能力的限制。如果没有其他说明,用户代理应尽可能晚地推迟任何超出范围的错误检查。这对于设备限制特别重要,因为复合操作可能产生超出范围的中间值,但最终值在范围内。
符合SVG 观看者或SVG 解释器,支持脚本执行的,必须实现本规范中定义的 SVG DOM 接口,并在本节中列出具体要求和依赖关系。
SVG 2 要求: | 改进 DOM。 |
---|---|
解决方案: | 我们将一般性地改进 SVG 2 的 SVG DOM。 |
目的: | 通过使 SVG DOM 不那么面向 Java,帮助作者使用 SVG DOM。 |
负责人: | Cameron (ACTION-3273) |
备注: | 请参见SVG 2 DOM Wiki 页面。 |
SVG 2 要求: | 改进 SVG 路径 DOM API。 |
---|---|
解决方案: | 我们将在 SVG 2 中改进 SVG 路径 DOM API。 |
目的: | 清理 SVGPathSegList 接口,并可能与 Canvas 共享 API。 |
负责人: | Cameron(无行动) |
SVG DOM 是根据Web IDL接口定义的。本规范中的所有 IDL 片段必须解释为符合规范的 IDL 片段,如 Web IDL 规范所述。[WebIDL]
SVG DOM 基于多个 DOM 规范构建。特别是:
SVG DOM 遵循与 HTML 和 DOM 标准类似的命名约定 ([HTML], [DOM]).
所有名称定义为一个或多个英文单词连接在一起形成一个字符串。属性或方法名称以小写字母开头,随后的每个单词以大写字母开头。例如,返回文档元信息(如文件创建日期)的属性可能命名为 "fileDateCreated"。
本规范中定义的接口名称几乎都以 "SVG" 开头。表示 SVG 命名空间元素的 DOM Element
对象的接口遵循格式SVGElementNameElement
,其中ElementName
是元素的标签名,其首字母大写。因此,SVGRadialGradientElement
是一个‘radialGradient’元素的接口。
此命名约定的一个例外是SVGSVGElement,其中整个标签名均为大写。
任何被要求支持 SVG DOM 的 SVG 软件必须增强为SVG 文档片段创建的 DOM 元素,如下所示:
每个与受支持的 SVG 元素对应的Element对象(即,具有命名空间 URI "http://www.w3.org/2000/svg" 和本规范或软件实现的其他规范中定义的元素的本地名称)也必须实现元素定义中标识的 DOM 接口。
在 SVG 命名空间中,本地名称与软件支持的任何规范中定义的元素不匹配的元素,应实现SVGUnknownElement接口,但仍必须实现SVGElement接口。
接口SVGUnknownElement处于“风险”状态。
在‘rect’元素中,识别到SVGRectElement接口。这意味着每个命名空间 URI 为 "http://www.w3.org/2000/svg" 并且本地名称为 "rect" 的Element对象必须也实现SVGRectElement。
许多 SVG DOM 属性(IDL 属性)反映对应元素上的内容属性或属性,意味着内容和 IDL 属性表示相同的底层数据。例如,SVGAnimatedLength中的ry在SVGRectElement中反映了与相关联的‘rect’元素上的ry呈现属性。
这种反映方式取决于 IDL 属性的类型:
在高层次上,对象的baseVal
用于反映内容属性的值。对于反映 CSS 属性的对象,baseVal
用于反映呈现属性。
这种关系是实时的,当属性或其反映的属性被修改时,必须同步值(遵循同步反映值的规则)。
如果属性未在文档标记中显式指定,则反映的对象在访问时仍会初始化为属性的初始值。如果属性的初始值为(none),则对象按照反射空初始值中定义的方式初始化。此新构造的对象在第一次修改之前不会在元素上生成属性。对相应属性的修改会立即反映在对象中。
如果访问lineElement.x1.baseVal
(其中lineElement
是SVGLineElement的实例)且‘x1’属性未在文档中指定,则返回的SVGLength对象将表示值0
用户单位,因为该属性的初始值为0。
每当一个反射的内容属性的基本值变化时, 反射对象必须在值改变后立即被同步,具体步骤如下:
当一个 反射 内容属性需要被 重新序列化时,可能使用特定值,必须执行以下步骤:
这意味着如果枚举值被设置为“未知”值,则内容属性将被 设置为空字符串。
这些值将是 SVGNumber、SVGLength、 DOMPoint 或 SVGTransform 对象,或 DOMString 值, 具体取决于 value 的类型。
当初始化一个反射
空或 null 初始值的 SVG DOM 属性时,
该属性必须根据其数据类型进行初始化,
具体定义如下。
只有在没有显式值的情况下才会发生这种情况,
并且在属性定义表中的初始值为(none)。
如果接口未列出,则表示 对象的初始化应使用接口包含的对象的值,例如, 一个 SVGAnimatedString 由两个 DOMString 成员组成, 而一个 DOMRect 由多个 double 组成。
如果访问 textElement.dx.baseVal
(其中 textElement
是 SVGTextElement 的实例)
并且 ‘dx’
属性在文档中未指定,则返回的 SVGLengthList 对象将为空。
如果脚本将 反射 DOM 属性 设置为内容属性的 无效值(例如, 对于需要非负数的属性设置负数,或为枚举设置超出范围的值),除非 本规范另有说明,设置时不应引发异常,但给定的文档片段应被视为 技术上 出错,如在 错误处理中所述。
许多浏览器目前会对超出范围的枚举值抛出错误, 或明确将枚举设置为 UNKNOWN 值。 有关讨论,请参见 设置枚举 IDL 为无效值是否应抛出错误?。
所有与 SVG 语言中的元素直接对应的 SVG DOM 接口(例如,SVGPathElement 接口对应于 ‘path’ 元素)都源自 SVGElement 接口。
CSSOM 规范 增强了 SVGElement 的样式 IDL 属性,因此 ‘style’ 属性可以像 HTML 元素一样访问。
[Exposed=Window] interface SVGElement : Element { [SameObject] readonly attribute SVGAnimatedString className; readonly attribute SVGSVGElement? ownerSVGElement; readonly attribute SVGElement? viewportElement; }; SVGElement 包含 GlobalEventHandlers; SVGElement 包含 DocumentAndElementEventHandlers; SVGElement 包含 SVGElementInstance; SVGElement 包含 HTMLOrSVGElement;
className IDL 属性 反射 ‘class’ 属性。
该属性已被弃用,可能在将来的版本中移除。建议作者使用 Element.classList 替代。
className 属性在 SVGElement 上覆盖了 Element 上的相应属性,遵循 WebIDL 关于 继承 的规则。
ownerSVGElement IDL 属性 表示最近的祖先 ‘svg’ 元素。获取 ownerSVGElement 时, 返回最近的祖先 ‘svg’ 元素;如果当前 元素是 最外层 svg 元素,则返回 null。
viewportElement IDL 属性 表示为当前元素提供 SVG 视口的元素。获取 viewport 时, 返回建立 SVG 视口的最近祖先元素;如果当前 元素是 最外层 svg 元素,则返回 null。
SVG 2 要求: | 检测鼠标事件是否发生在形状的填充或描边上。 |
---|---|
解决方案: | SVG 2 将更容易检测鼠标事件是否发生在元素的描边或填充上。 |
目的: | 允许作者在不必复制元素的情况下区分指针事件发生在元素的填充和描边上。 |
负责人: | Cameron (ACTION-3279) |
状态: | 完成。 |
SVGGraphicsElement 接口 代表主要用于直接将图形渲染到组中的 SVG 元素。
dictionary SVGBoundingBoxOptions { boolean fill = true; boolean stroke = false; boolean markers = false; boolean clipped = false; }; interface SVGGraphicsElement : SVGElement { [SameObject] readonly attribute SVGAnimatedTransformList transform; DOMRect getBBox(optional SVGBoundingBoxOptions options); DOMMatrix? getCTM(); DOMMatrix? getScreenCTM(); }; SVGGraphicsElement 包含 SVGTests;
transform IDL 属性 反映 transform 属性的计算值及其 对应的 ‘transform’ 展示属性。
getBBox 方法用于 计算当前元素的边界框。当调用 getBBox(options) 方法时,将为当前元素调用 边界框算法, fill、stroke、markers 和 clipped 字典参数的成员 用于控制哪些部分包含在边界框中, 使用元素的用户坐标系统作为返回边界框的坐标系统。返回一个新创建的 DOMRect 对象,定义 计算出的边界框。
getCTM 方法用于 获取将当前元素的坐标系统转换到 其 SVG 视口的坐标系统的矩阵。当调用 getCTM() 时,将执行以下步骤:
getScreenCTM 方法 用于获取将当前元素的坐标系统转换到 SVG 文档片段的 SVG 视口的坐标系统的矩阵。 当调用 getScreenCTM() 时,将执行以下步骤:
这将包括:
该方法本可以更恰当地命名为 getClientCTM
,但出于历史原因,名称 getScreenCTM
被保留。
接口 SVGGeometryElement 代表渲染由几何定义的 SVG 元素,具有 等效路径, 并且可以填充和描边。 这包括路径和基本形状。
[Exposed=Window] interface SVGGeometryElement : SVGGraphicsElement { [SameObject] readonly attribute SVGAnimatedNumber pathLength; boolean isPointInFill(optional DOMPointInit point); boolean isPointInStroke(optional DOMPointInit point); float getTotalLength(); DOMPoint getPointAtLength(float distance); };
isPointInFill 方法, 被调用时,如果传递给该方法的 point 在元素的坐标空间内位于预期路径内部, 则必须返回 true,路径的内部由 fill-rule 属性指示的环绕规则决定; 否则,必须返回 false。 在计算路径内部区域时,打开的子路径必须隐式关闭,而不影响实际的子路径。路径上的点必须视为在路径内部。 返回的值独立于任何视觉 CSS 属性,但 fill-rule 如果 point 上的 x 或 y 属性为无限或 NaN, 则该方法必须返回 false。
isPointInFill 考虑元素的 fill-rule 属性指示的环绕规则, 即使该元素是 ‘clipPath’ 元素的子元素。
isPointInFill 与 isPointInPath 方法在 CanvasDrawPath 混合中尽可能对齐, 只要 SVG 上下文允许。
isPointInStroke 方法, 被调用时,如果传递给该方法的 point 在元素的坐标空间内位于应用的描边的轮廓路径内或上, 则必须返回 true;否则,必须返回 false。 轮廓路径必须考虑元素的描边属性 stroke-width, stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-dasharray 和 stroke-dashoffset。 返回的值独立于任何视觉 CSS 属性,但考虑了列出的描边属性。 如果 point 上的 x 或 y 属性为无限或 NaN, 则该方法必须返回 false。
isPointInStroke 与 isPointInPath 方法在 CanvasDrawPath 混合中尽可能对齐, 只要 SVG 上下文允许。
pathLength IDL 属性 反映 ‘pathLength’ 内容属性。
getTotalLength 方法 用于计算路径的长度。当调用 getTotalLength() 时,返回用户代理计算的路径总长度的值, 以用户单位为单位。
用户代理计算的路径长度不考虑 ‘pathLength’ 属性。
getPointAtLength 方法 用于返回路径上给定距离处的点。当 getPointAtLength(distance) 被调用时,将执行以下步骤:
与 getTotalLength 一样, 这不考虑 ‘pathLength’ 属性。
SVGNumber 接口主要用于表示 <number> 值,该值是SVGNumberList的一部分。 单个SVGNumber 对象也可以通过脚本创建。
一个SVGNumber 对象可以被指定为只读, 这意味着尝试修改该对象将导致异常被抛出,如下所述。 通过 animVal IDL 属性反映的SVGNumber 对象始终是只读。
一个SVGNumber 对象 可以与特定元素关联。 关联元素用于确定如果对象反映 一个属性,则更新哪个元素的内容属性。除非另有描述,SVGNumber 对象不与任何元素关联。
每个SVGNumber 对象 以两种模式之一操作。它可以:
SVGNumber 对象维护一个内部数字值, 被称为其值。
[Exposed=Window] interface SVGNumber { attribute float value; };
value IDL 属性表示该数字。在获取value时, 返回SVGNumber的值。
在设置value时,执行以下步骤:
SVGLength 接口用于表示可以是 <length>、<percentage> 或 <number> 的值。
一个 SVGLength 对象可以被指定为 只读, 这意味着尝试修改该对象将导致抛出异常,如下所述。 SVGLength 对象通过 animVal IDL 属性反映的始终是 只读。
一个 SVGLength 对象 可以与特定元素 关联,并被指定为 方向性: 水平、垂直或未指定。关联的元素和长度的方向性用于将百分比值解析为用户单位,并且也用于 确定如果对象 反射 属性时,更新哪个元素的内容属性。除非另有描述,一个 SVGLength 对象不与任何元素关联,并且 具有未指定的方向性。
每个 SVGLength 对象 在四种模式之一中操作。它可以:
一个 SVGLength 对象维护一个内部 <length> 或 <percentage> 或 <number> 值,称为其 值。
[Exposed=Window] interface SVGLength { // Length Unit Types const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0; const unsigned short SVG_LENGTHTYPE_NUMBER = 1; const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2; const unsigned short SVG_LENGTHTYPE_EMS = 3; const unsigned short SVG_LENGTHTYPE_EXS = 4; const unsigned short SVG_LENGTHTYPE_PX = 5; const unsigned short SVG_LENGTHTYPE_CM = 6; const unsigned short SVG_LENGTHTYPE_MM = 7; const unsigned short SVG_LENGTHTYPE_IN = 8; const unsigned short SVG_LENGTHTYPE_PT = 9; const unsigned short SVG_LENGTHTYPE_PC = 10; readonly attribute unsigned short unitType; attribute float value; attribute float valueInSpecifiedUnits; attribute DOMString valueAsString; void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); void convertToSpecifiedUnits(unsigned short unitType); };
在 SVGLength 上定义的数字长度单位类型常量用于表示 一个 SVGLength 的 值 的类型。 其含义如下:
常量 | 含义 |
---|---|
SVG_LENGTHTYPE_NUMBER | 一个无单位的 <number> 被解释为 px 的值。 |
SVG_LENGTHTYPE_PERCENTAGE | 一个 <percentage>。 |
SVG_LENGTHTYPE_EMS | 一个具有 em 单位的 <length>。 |
SVG_LENGTHTYPE_EXS | 一个具有 ex 单位的 <length>。 |
SVG_LENGTHTYPE_PX | 一个具有 px 单位的 <length>。 |
SVG_LENGTHTYPE_CM | 一个具有 cm 单位的 <length>。 |
SVG_LENGTHTYPE_MM | 一个具有 mm 单位的 <length>。 |
SVG_LENGTHTYPE_IN | 一个具有 in 单位的 <length>。 |
SVG_LENGTHTYPE_PT | 一个具有 pt 单位的 <length>。 |
SVG_LENGTHTYPE_PC | 一个具有 pc 单位的 <length>。 |
SVG_LENGTHTYPE_UNKNOWN | 其他类型的值。 |
使用数字长度单位类型常量是一种反模式,不会为 SVGLength 支持的其他单位或长度类型引入新的常量值。 如果支持和使用其他类型的长度,SVGLength 使用 SVG_LENGTHTYPE_UNKNOWN 单位类型。 有关这些长度类型的其他属性如何操作的详细信息,请参见下文。
unitType IDL 属性表示 SVGLength 的 值 的类型。 在获取 unitType 时,将执行以下步骤:
例如,对于一个具有 ch 单位的 <length> 或者具有非标量值(如 calc())的值,将返回 SVG_LENGTHTYPE_UNKNOWN。
value IDL 属性表示 SVGLength 的 值,以用户单位表示。 在获取 value 时,将执行以下步骤:
设置 value 时,将执行以下步骤:
valueInSpecifiedUnits IDL 属性表示 SVGLength 的 value 的数值因子。 获取 valueInSpecifiedUnits 时,将执行以下步骤:
因此 valueInSpecifiedUnits 将对 '12%' 和 12em 返回 12,但 对于非标量值,如 calc(12px + 5%),则返回 0。
设置 valueInSpecifiedUnits 时,将执行以下步骤:
valueAsString IDL 属性表示 SVGLength 的 value 作为字符串。 获取 valueAsString 时,将执行以下步骤:
在设置 valueAsString 时,执行以下步骤:
newValueSpecifiedUnits 方法用于以类型化的方式设置 SVGLength 的值。当调用 newValueSpecifiedUnits(unitType, valueInSpecifiedUnits) 时,执行以下步骤:
convertToSpecifiedUnits 方法用于将 SVGLength 的值转换为特定类型。当调用 convertToSpecifiedUnits(unitType) 时,执行以下步骤:
SVGAngle 接口用于表示可以是 <angle> 或 <number> 值的一个值。
一个 SVGAngle 对象可以被指定为 只读, 这意味着尝试修改该对象将导致抛出异常,如下所述。通过 animVal 属性反射的 SVGAngle 始终是 只读。
一个 SVGAngle 对象 可以与特定元素 关联。关联元素用于 确定如果对象 反射 一个属性,应该更新哪个元素的内容属性。除非另有说明,一个 SVGAngle 对象不 与任何元素关联。
每个 SVGAngle 对象 以两种模式之一操作。它可以:
一个 SVGAngle 对象维护一个内部 <angle> 或 <number> 值,称为其 值。
[Exposed=Window] interface SVGAngle { // 角度单位类型 const unsigned short SVG_ANGLETYPE_UNKNOWN = 0; const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1; const unsigned short SVG_ANGLETYPE_DEG = 2; const unsigned short SVG_ANGLETYPE_RAD = 3; const unsigned short SVG_ANGLETYPE_GRAD = 4; readonly attribute unsigned short unitType; attribute float value; attribute float valueInSpecifiedUnits; attribute DOMString valueAsString; void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits); void convertToSpecifiedUnits(unsigned short unitType); };
在SVGAngle上定义的数值角度单位类型常量用于表示SVGAngle的值的类型。它们的含义如下:
常量 | 含义 |
---|---|
SVG_ANGLETYPE_UNSPECIFIED | 无单位的<number>,解释为以度为单位的值。 |
SVG_ANGLETYPE_DEG | 带有deg单位的<angle>。 |
SVG_ANGLETYPE_RAD | 带有rad单位的<angle>。 |
SVG_ANGLETYPE_GRAD | 带有grad单位的<angle>。 |
SVG_ANGLETYPE_UNKNOWN | 其他类型的值。 |
使用数值角度单位类型常量是一种反模式,并且不会引入任何其他单位或角度类型的新常量。如果支持并使用其他类型的角度,SVGAngle将使用SVG_ANGLETYPE_UNKNOWN单位类型。有关其他SVGAngle属性如何与这些类型的角度一起操作的详细信息,请参见下文。
unitType IDL属性表示SVGAngle的值的类型。获取unitType时,将执行以下步骤:
例如,对于带有turn单位的<angle>,将返回SVG_ANGLETYPE_UNKNOWN。
value IDL属性表示SVGAngle的值,单位为度。获取value时,将执行以下步骤:
设置value时,将执行以下步骤:
valueInSpecifiedUnits IDL 属性表示 SVGAngle 的 值 的数值因子。 在获取 valueInSpecifiedUnits 时,执行以下步骤:
在设置 valueInSpecifiedUnits 时,执行以下步骤:
valueAsString IDL 属性表示 SVGAngle 的 值 作为字符串。 在获取 valueAsString 时,执行以下步骤:
在设置 valueAsString 时,执行以下步骤:
newValueSpecifiedUnits 方法用于以类型化的方式设置 SVGAngle 的值。当调用 newValueSpecifiedUnits(unitType, valueInSpecifiedUnits) 时,执行以下步骤:
convertToSpecifiedUnits 方法用于将 SVGAngle 的值转换为特定类型。当调用 convertToSpecifiedUnits(unitType) 时,执行以下步骤:
SVG 2 要求: | 使 SVGList* 接口更像其他列表/数组。 |
---|---|
解决方案: | 向 svg 列表类型添加数组样式索引、.length 和 .item。 |
目的: | 与其他数组类型对齐(例如 NodeList)。已在 Opera 和 Firefox 中实现。 |
负责人: | Erik (ACTION-2975) |
状态: | 完成 |
一些 SVG 属性包含值列表,为表示这些值,有多个 SVG DOM 列表接口,每种必需的元素类型对应一个——SVGNumberList、SVGLengthList、SVGPointList、SVGTransformList 和 SVGStringList。前四个用于表示 SVGAnimatedNumberList、SVGAnimatedLengthList、SVGAnimatedPoints 和 SVGTransformList 对象的基础和动画组件,而第五个 SVGStringList 用于 反映 一些接受字符串列表的未动画属性。
大多数 列表接口 的形式如下:
interface SVGNameList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); Type initialize(Type newItem); getter Type getItem(unsigned long index); Type insertItemBefore(Type newItem, unsigned long index); Type replaceItem(Type newItem, unsigned long index); Type removeItem(unsigned long index); Type appendItem(Type newItem); setter void (unsigned long index, Type newItem); };
其中 Name 是列表元素的描述性名称(“Number”、“Length”、“Point”、“Transform”或“String”),Type 是列表元素的 IDL 类型(SVGNumber、SVGLength、DOMPoint、SVGTransform 或 DOMString)。
SVGTransformList 接口采用上述形式,但具有两个额外的方法。
除 SVGTransformList 外,所有 列表接口 对象都反映了被反射内容属性的基础值。SVGTransformList 对象反映了一个展示属性(‘transform’、‘gradientTransform’ 或 ‘patternTransform’)。所有 列表接口 对象都与特定元素相关联。与 SVGLength 和类似对象不同,"独立"的 列表接口 对象不存在。
一个 列表接口 对象维护一个内部元素列表,以下文中简单称为“列表”。IDR 属性和方法用于检查和操作列表中的元素。列表也可以在反映内容属性发生变化以及内容属性动画变化时进行更改(对于 SVGTransformList 对象,响应于 transform 属性的计算值变化)。
一个 列表接口 对象可以被指定为 只读,这意味着尝试修改该对象将导致抛出异常,如下所述。通过 animVal IDL 属性反映的 列表接口 对象始终为 只读。
一个 列表接口 对象通过运行以下步骤 进行同步:
每当一个列表元素对象被分离时,将根据列表元素类型执行以下步骤:
每当一个列表元素对象被附加时,将根据列表元素类型执行以下步骤:
一个 支持的属性索引 的 列表接口 对象是所有非负整数的集合, 小于列表的长度。
length 和 numberOfItems IDL 属性 表示列表的长度,并在获取时简单地返回 列表的长度。
clear 方法用于 移除列表中的所有项。当调用 clear() 时,执行以下步骤:
initialize 方法 用于清除列表并添加一个单一的指定值。 当调用 initialize(newItem) 时,执行以下步骤:
getItem 方法用于 从指定位置获取列表中的项。当调用 getItem(index) 时,执行以下步骤:
注意,如果列表的元素类型是对象类型, 比如 SVGLength,则返回的是 对该对象的引用,而不是 该对象的副本。
insertItemBefore 方法用于在特定位置插入元素到列表中。 当调用 insertItemBefore(newItem, index) 时, 执行以下步骤:
replaceItem 方法 用于用新项替换列表中的现有项。 当调用 replaceItem(newItem, index) 时,执行以下步骤:
removeItem 方法用于从列表中移除一项。 当调用 removeItem(index) 时,执行以下步骤:
appendItem 方法用于将一项附加到列表的末尾。 当调用 appendItem(newItem) 时,执行以下步骤:
索引属性设置器 的行为与 replaceItem 方法相同。
SVGNumberList 接口是一个 列表接口,其元素为 SVGNumber 对象。一个 SVGNumberList 对象表示一个数字列表。
[Exposed=Window] interface SVGNumberList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); SVGNumber initialize(SVGNumber newItem); getter SVGNumber getItem(unsigned long index); SVGNumber insertItemBefore(SVGNumber newItem, unsigned long index); SVGNumber replaceItem(SVGNumber newItem, unsigned long index); SVGNumber removeItem(unsigned long index); SVGNumber appendItem(SVGNumber newItem); setter void (unsigned long index, SVGNumber newItem); };
所有 SVGNumberList 接口成员的行为在上述 列表接口 部分中定义。
SVGLengthList 接口是一个 列表接口,其元素为 SVGLength 对象。一个 SVGLengthList 对象表示一个长度列表。
[Exposed=Window] interface SVGLengthList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); SVGLength initialize(SVGLength newItem); getter SVGLength getItem(unsigned long index); SVGLength insertItemBefore(SVGLength newItem, unsigned long index); SVGLength replaceItem(SVGLength newItem, unsigned long index); SVGLength removeItem(unsigned long index); SVGLength appendItem(SVGLength newItem); setter void (unsigned long index, SVGLength newItem); };
所有 SVGLengthList 接口成员的行为在上述 列表接口 部分中定义。
SVGStringList 接口是一个 列表接口,其元素为 DOMString 值。一个 SVGStringList 对象表示一个字符串列表。
[Exposed=Window] interface SVGStringList { readonly attribute unsigned long length; readonly attribute unsigned long numberOfItems; void clear(); DOMString initialize(DOMString newItem); getter DOMString getItem(unsigned long index); DOMString insertItemBefore(DOMString newItem, unsigned long index); DOMString replaceItem(DOMString newItem, unsigned long index); DOMString removeItem(unsigned long index); DOMString appendItem(DOMString newItem); setter void (unsigned long index, DOMString newItem); };
所有 SVGStringList 接口成员的行为在上述 列表接口 部分中定义。
以下接口用于表示可动画内容属性的反映值。
它们各自由两个组件对象组成,表示相同的数据:
baseVal
和 animVal
。
baseVal
(基值)对象是可修改的,
用于更新相应的属性值。
在 SVG 1.1 中,SVG DOM 接口的 animVal
属性表示反映属性的当前动画值。
在这个版本的 SVG 中,animVal
不再表示当前动画值,而是 baseVal
的别名。
一个 SVGAnimatedBoolean 对象用于 反映 一个取布尔值的可动画属性。
[Exposed=Window] interface SVGAnimatedBoolean { attribute boolean baseVal; readonly attribute boolean animVal; };
baseVal 和 animVal IDL 属性 都表示反映属性的当前非动画值。 在获取 baseVal 或 animVal 时, 执行以下步骤:
在设置 baseVal 时, 如果值为 true,则反映属性设置为 "true",否则设置为 "false"。
一个 SVGAnimatedEnumeration 对象用于 反映 一个取关键字值的可动画属性(例如 ‘method’ 属性在 ‘textPath’) 或反映可动画属性的值类型(仅通过 orientType IDL 属性反映 ‘marker’ 元素的 ‘orient’ 属性)。
[Exposed=Window] interface SVGAnimatedEnumeration { attribute unsigned short baseVal; readonly attribute unsigned short animVal; };
对于反映仅取关键字值的可动画属性的 SVGAnimatedEnumeration 对象,baseVal 和 animVal IDL 属性表示反映属性的当前非动画值。 对于 orientType, 它们表示反映的 ‘orient’ 属性的当前非动画值的类型。在获取 baseVal 或 animVal 时,执行以下步骤:
在设置 baseVal 时,执行以下步骤:
一个 SVGAnimatedInteger 对象用于 反映 一个取整数值的可动画属性(例如 ‘numOctaves’ 在 ‘feTurbulence’)。 它还用于反映一个取整数后跟一个可选第二个整数的可动画属性的一部分(例如 ‘order’ 在 ‘feConvolveMatrix’)。
此 SVGAnimatedInteger 接口在本规范中未使用,但 滤镜效果 规范中有多个用例。
[Exposed=Window] interface SVGAnimatedInteger { attribute long baseVal; readonly attribute long animVal; };
对于反映单个整数值的可动画属性的 SVGAnimatedInteger 对象,baseVal 和 animVal IDL 属性表示反映属性的当前非动画值。 对于那些反映一个整数的属性,该属性取整数后跟一个可选的第二个整数,它们表示两个整数之一的当前非动画值。在获取 baseVal 或 animVal 时,执行以下步骤:
例如,‘order’ 的定义表明隐式第二个整数与显式第一个整数相同。
在设置 baseVal 时,执行以下步骤:
一个 SVGAnimatedNumber 对象用于 反映 一个 可动画的属性,该属性的值为数字(例如 ‘pathLength’ 在 ‘path’上)。它还用于反映一个 可动画属性的一部分,该属性的值为数字,后面跟着一个可选的第二个数字(例如 ‘kernelUnitLength’ 在 ‘feDiffuseLighting’上)。
[Exposed=Window] interface SVGAnimatedNumber { attribute float baseVal; readonly attribute float animVal; };
对于 SVGAnimatedNumber 对象,它们 反映 一个可动画属性,该属性的值为单个数字,baseVal 和 animVal IDL 属性表示被反映属性的当前非动画值。 对于那些反映一个数字的属性,该属性的值为数字后面跟一个可选的第二个数字,它们表示两个数字中的一个的当前非动画值。在获取 baseVal 或 animVal 时,将执行以下步骤:
例如,‘kernelUnitLength’ 的定义表明隐含的第二个数字与显式的第一个数字相同。
在设置 baseVal 时, 将执行以下步骤:
一个 SVGAnimatedLength 对象用于 反映 (a)一个可动画属性,该属性取一个 <length>、 <percentage> 或 <number> 值,或(b)一个 CSS 属性,该属性取这些值之一及其相应的 表现属性。
[Exposed=Window] interface SVGAnimatedLength { [SameObject] readonly attribute SVGLength baseVal; [SameObject] readonly attribute SVGLength animVal; };
属性 baseVal 和 animVal 的 IDL 属性 代表反映内容属性的当前值。 获取 baseVal 或 animVal 时,将返回一个 SVGLength 对象,该对象:
一个 SVGAnimatedAngle 对象用于 反映 动画的 <angle> 值 的 ‘orient’ 属性在 ‘marker’ 上, 通过 orientAngle IDL 属性。
[Exposed=Window] interface SVGAnimatedAngle { [SameObject] readonly attribute SVGAngle baseVal; [SameObject] readonly attribute SVGAngle animVal; };
属性 baseVal 和 animVal 的 IDL 属性表示 反映的 <angle> 当前非动画值 的 ‘orient’ 属性。获取 baseVal 或 animVal 时,将返回一个 SVGAngle 对象,该对象:
一个 SVGAnimatedString 对象用于 反映 一个 取字符串值的可动画属性。它可以选择性地定义为额外反映一个第二个已弃用的属性。
[Exposed=Window] interface SVGAnimatedString { attribute DOMString baseVal; readonly attribute DOMString animVal; };
属性 baseVal 和 animVal 的 IDL 属性 代表反映属性的当前非动画值。 获取 baseVal 或 animVal 时,将执行以下步骤:
对于 href 成员在 SVGURIReference 接口上, 如果存在且 ‘href’ 属性不存在, 则这将导致返回已弃用的 ‘xlink:href’ 属性, 在所有其他情况下返回 ‘href’ 属性。
设置 baseVal 时, 将执行以下步骤:
对于 href 成员在 SVGURIReference 接口上, 如果存在且 ‘href’ 属性不存在, 则这将导致设置已弃用的 ‘xlink:href’ 属性, 在所有其他情况下设置 ‘href’ 属性。
一个 SVGAnimatedRect 对象用于 反映 一个 取矩形值的可动画属性,如 x、y、width 和 height 所指定。
在本规范中,唯一反映为 SVGAnimatedRect 的属性是 ‘viewBox’。
[Exposed=Window] interface SVGAnimatedRect { [SameObject] readonly attribute DOMRect baseVal; [SameObject] readonly attribute DOMRectReadOnly animVal; };
属性 baseVal 和 animVal 的 IDL 属性代表反映属性的当前非动画矩形值。 获取 baseVal 或 animVal 时,将返回一个 DOMRect 对象。
在创建 baseVal 或 animVal DOMRect 对象后,任何时候反映内容属性被添加、移除或更改时,将执行以下步骤:
每当 x 坐标、 y 坐标、 宽度 或 高度 属性 的 baseVal 或 animVal DOMRect 对象 发生变化时,除了前面算法的一部分,该算法将内容属性的值反映到 DOMRect 中,反映的 内容属性必须被 重新序列化。
一个 SVGAnimatedNumberList 对象 用于 反映 一个可动画属性,该属性接受一系列 <number> 值。
[Exposed=Window] interface SVGAnimatedNumberList { [SameObject] readonly attribute SVGNumberList baseVal; [SameObject] readonly attribute SVGNumberList animVal; };
属性 baseVal 和 animVal 的 IDL 属性 代表反映属性的当前非动画值。 获取 baseVal 或 animVal 时,将返回一个 SVGNumberList 对象, 该对象反映反映属性的基础值。
一个 SVGAnimatedLengthList 对象 用于 反映 一个可动画属性,该属性接受一系列 <length>、<percentage> 或 <number> 值。
[Exposed=Window] interface SVGAnimatedLengthList { [SameObject] readonly attribute SVGLengthList baseVal; [SameObject] readonly attribute SVGLengthList animVal; };
属性 baseVal 或 animVal 的 IDL 属性 代表反映属性的当前非动画值。 获取 baseVal 或 animVal 时,将返回一个 SVGLengthList 对象, 该对象反映反映属性的基础值。
SVGUnitTypes 接口定义了一组常用的常量, 用于反映 ‘gradientUnits’、 ‘patternContentUnits’ 和其他类似属性。
[Exposed=Window] interface SVGUnitTypes { // 单位类型 const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0; const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1; const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2; };
在 SVGUnitTypes 上定义的单位类型常量具有以下含义:
常量 | 含义 |
---|---|
SVG_UNIT_TYPE_USERSPACEONUSE | 对应于 'userSpaceOnUse' 属性值。 |
SVG_UNIT_TYPE_OBJECTBOUNDINGBOX | 对应于 'objectBoundingBox' 属性值。 |
SVG_UNIT_TYPE_UNKNOWN | 某种其他类型的值。 |
SVGTests 接口用于反映 条件处理属性,并混合到支持这些属性的其他接口中。
interface mixin SVGTests { [SameObject] readonly attribute SVGStringList requiredExtensions; [SameObject] readonly attribute SVGStringList systemLanguage; };
requiredExtensions IDL 属性 反映 ‘requiredExtensions’ 内容 属性。
systemLanguage IDL 属性 反映 ‘systemLanguage’ 内容 属性。
SVGFitToViewBox 接口用于 反映 ‘viewBox’ 和 ‘preserveAspectRatio’ 属性,并混合到支持这两个属性的其他接口中。
interface mixin SVGFitToViewBox { [SameObject] readonly attribute SVGAnimatedRect viewBox; [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; };
viewBox IDL 属性 反映 ‘viewBox’ 内容属性。
preserveAspectRatio IDL 属性 反映 ‘preserveAspectRatio’ 内容 属性。
SVGZoomAndPan 接口用于 反映 ‘zoomAndPan’ 属性,并混合到支持该属性的其他接口中。
interface mixin SVGZoomAndPan { // 缩放和泛型类型 const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0; const unsigned short SVG_ZOOMANDPAN_DISABLE = 1; const unsigned short SVG_ZOOMANDPAN_MAGNIFY = 2; attribute unsigned short zoomAndPan; };
在 SVGZoomAndPan 上定义的缩放和泛型类型常量具有以下含义:
常量 | 含义 |
---|---|
SVG_ZOOMANDPAN_DISABLE | 对应于 'disable' 属性值。 |
SVG_ZOOMANDPAN_MAGNIFY | 对应于 'magnify' 属性值。 |
SVG_ZOOMANDPAN_UNKNOWN | 某种其他类型的值。 |
zoomAndPan IDL 属性表示 ‘zoomAndPan’ 属性的值。 获取 zoomAndPan 时,将执行以下步骤:
设置 zoomAndPan 时,将执行以下步骤:
SVGURIReference 接口用于 反映 ‘href’ 属性和已弃用的 ‘xlink:href’ 属性。
interface mixin SVGURIReference { [SameObject] readonly attribute SVGAnimatedString href; };
href IDL 属性 表示 ‘href’ 属性的值,并且在支持该属性的元素上, 已弃用的 ‘xlink:href’ 属性。在获取 href 时,返回一个 SVGAnimatedString 对象,该对象:
SVGAnimatedString 接口被定义为通过其 baseVal 和 animVal 成员反映已弃用的 ‘xlink:href’ 属性,如果该属性存在而‘href’ 不存在,则反映该属性,在所有 其他情况下反映 ‘href’ 属性。动画元素 将 attributeName='xlink:href' 视为目标 ‘href’ 属性的别名。