r

Baseline 已广泛支持

此特性已经十分成熟,可在许多设备和浏览器版本上使用。自 2020 年 7 月以来,它已在各大浏览器中可用。

r CSS 属性用于定义圆的半径。它只能用于 SVG <circle> 元素。如果该属性存在,它将覆盖圆的 r 属性。

备注: r 属性仅适用于嵌套在 <svg> 中的 <circle> 元素。它不适用于其他 SVG 元素、HTML 元素或伪元素。

语法

css
/* Length and percentage values */
r: 3px;
r: 20%;

/* Global values */
r: inherit;
r: initial;
r: revert;
r: revert-layer;
r: unset;

<length><percentage> 值定义了圆的半径。

<length>

绝对或相对长度可以使用 CSS <length> 数据类型允许的任何单位表示。负值无效。

<percentage>

百分比指的是当前 SVG 视口归一化对角线,计算方法为<width>2+<height>22.

正式定义

初始值0
应用于<svg> 中的 <circle> 元素
继承性
百分比参考当前 SVG 视口的归一化对角线
计算值指定的百分比或绝对长度
动画类型按计算值类型

正式语法

r = 
<length-percentage>

<length-percentage> =
<length> |
<percentage>

示例

定义圆的半径

在此示例中,SVG 中有两个相同的 <circle> 元素,每个元素的半径均为 10,并且其圆心的 x 轴和 y 轴坐标也相同。

html
<svg xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="10" />
  <circle cx="50" cy="50" r="10" />
</svg>

我们只使用 CSS 来设置第一个圆的样式,让第二个圆使用默认样式(fill 默认为黑色)。我们使用 r 属性来覆盖 SVG r 属性的值,并为它设置了 fillstroke。SVG 的默认尺寸为 300px 宽和 150px 高。

css
svg {
  border: 1px solid black;
}

circle:first-of-type {
  r: 30px;
  fill: lightgreen;
  stroke: black;
}

ViewBox 与视口像素

此示例包含两个 SVG,每个 SVG 中都有两个 <circle> 元素。第二个 SVG 包含一个 viewBox 属性,以演示 SVG viewBox 和 SVG 视口之间的区别。

html
<svg xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="10" />
  <circle cx="50" cy="50" r="10" />
</svg>
<svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
  <circle cx="50" cy="50" r="10" />
  <circle cx="50" cy="50" r="10" />
</svg>

CSS 与上一个示例类似,设置了 r: 30px,但我们设置了 width 以确保两个图像的宽度都是 300px

css
svg {
  border: 1px solid black;
  width: 300px;
}

circle:first-of-type {
  r: 30px;
  fill: lightgreen;
  stroke: black;
}

由于 viewBox 属性将 SVG 定义为 200 SVG 坐标系统像素宽,而图像被放大到 300px,因此 30 SVG 坐标像素被缩放后渲染为 45 CSS 像素。

使用百分比定义圆的半径

在此示例中,我们使用与上一个示例相同的标记。唯一的区别是 r 的值;在这里,我们使用一个百分比值。

css
svg {
  border: 1px solid black;
  width: 300px;
}

circle:first-of-type {
  r: 30%;
  fill: lightgreen;
  stroke: black;
}

在这两种情况下,圆的半径都是 SVG 视口归一化对角线的 30%。半径 r 等于0.3×<width>2+<height>22。虽然第一个图像使用的是 300150 CSS 像素,第二个使用的是 200100 SVG viewBox 单位,但 30% 是一个比例值。因此,r 的值是相同的:47.43 viewBox 单位,解析为 71.15 CSS 像素。

虽然 r 是相同的,但圆心点不同,因为第二个 SVG 被放大了 50%,导致其圆心向右下方移动了 50%。

规范

规范
Scalable Vector Graphics (SVG) 2
# R

浏览器兼容性

另见