SVGLength

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

SVGLength 接口对应于 <length> 基本数据类型。

SVGLength 对象可以被指定为只读,这意味着尝试修改该对象将导致抛出异常。

实例属性

unitType

由该接口上定义的 SVG_LENGTHTYPE_* 常量之一指定的此值的类型。

value

此值为浮点数值,以用户单位表示。

valueAsString

此值为字符串值,以 unitType 表示的单位表示。

valueInSpecifiedUnits

此值为浮点数值,以 unitType 表示的单位表示。

实例方法

convertToSpecifiedUnits()

保留相同的底层存储值,但将存储的单位标识符重置为给定的 unitType

newValueSpecifiedUnits()

将值重置为带有关联 unitType 的数字,从而替换对象上所有属性的值。

静态属性

SVG_LENGTHTYPE_UNKNOWN (0)

单位类型不是预定义的单位类型之一。尝试定义此类型的新值或尝试将现有值切换到此类型是无效的。

SVG_LENGTHTYPE_NUMBER (1)

未提供单位类型(即,指定了一个无单位的值),这表示一个用户单位值。

SVG_LENGTHTYPE_PERCENTAGE (2)

指定了一个百分比值。

SVG_LENGTHTYPE_EMS (3)

使用 em 单位指定了一个值。

SVG_LENGTHTYPE_EXS (4)

使用 ex 单位指定了一个值。

SVG_LENGTHTYPE_PX (5)

使用 px 单位指定了一个值。

SVG_LENGTHTYPE_CM (6)

使用 cm 单位指定了一个值。

SVG_LENGTHTYPE_MM (7)

使用 mm 单位指定了一个值。

SVG_LENGTHTYPE_IN (8)

使用 in 单位指定了一个值。

SVG_LENGTHTYPE_PT (9)

使用 pt 单位指定了一个值。

SVG_LENGTHTYPE_PC (10)

使用 pc 单位指定了一个值。

示例

xml
<svg height="200" onload="start();" version="1.1" width="200" xmlns="http://www.w3.org/2000/svg">
  <script><![CDATA[
function start() {
  const rect = document.getElementById("myRect");
  const val = rect.x.baseVal;

  // read x in pixel and cm units
  console.log(
    `value: ${val.value}, valueInSpecifiedUnits: ${val.valueInSpecifiedUnits} (${val.unitType}), valueAsString: ${val.valueAsString}`,
  );

  // set x = 20pt and read it out in pixel and pt units
  val.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PT, 20);
  console.log(
    `value: ${val.value}, valueInSpecifiedUnits: ${val.valueInSpecifiedUnits} (${val.unitType}), valueAsString: ${val.valueAsString}`,
  );

  // convert x = 20pt to inches and read out in pixel and inch units
  val.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_IN);
  console.log(
    `value: ${val.value}, valueInSpecifiedUnits: ${val.valueInSpecifiedUnits} (${val.unitType}), valueAsString: ${val.valueAsString}`,
  );
}
]]></script>
  <rect id="myRect"
        x="1cm" y="1cm"
        fill="green" stroke="black" stroke-width="1"
        width="1cm" height="1cm"
  />
</svg>

台式机显示器上的结果(像素单位将取决于 dpi)

value: 37.7952766418457, valueInSpecifiedUnits: 6: 1, valueAsString: 1cm
value: 26.66666603088379, valueInSpecifiedUnits 9: 20, valueAsString: 20pt
value: 26.66666603088379, valueInSpecifiedUnits 8: 0.277777761220932, valueAsString: 0.277778in

规范

规范
Scalable Vector Graphics (SVG) 2
# 接口 SVGLength

浏览器兼容性