CSS

基本形状 | <basic-shape>

<basic-shape>

<basic-shape> CSS数据类型表示在所使用的形状clip-path或shape-outside特性。

语法

基本形状由基本形状函数定义。使用此语法创建形状时,参考框由每个使用<basic-shape>值的属性定义。形状的坐标系统的原点位于参考框的左上角,其中 x 轴向右运行,y 轴向下运行。从百分比表示的所有长度都从参考框的已用尺寸中解析出来。

形状功能

支持以下形状。所有<basic-shape>值都使用功能符号,并在此处使用值定义语法进行定义。

inset()

inset( <shape-arg>{1,4} [round <border-radius>]? )

定义一个插入矩形。

当提供所有前四个参数时,它们代表从内向参考框的顶部,右侧,底部和左侧偏移量,它们定义了插入矩形边缘的位置。这些参数遵循边缘速记的语法,让您用一个,两个或四个值设置所有四个插入点。

可选<border-radius>参数(s)使用边界半径简化语法为插入矩形定义圆角。

任何一个维度中的一对插入加起来超过使用尺寸(例如每个75%的左右插图)定义了一个不包含任何区域的形状。对于这个规范,这会导致一个空的浮动区域。

polygon()

polygon( [<fill-rule>,]? [<shape-arg> <shape-arg>]# )

<fill-rule>表示用于确定多边形内部的填充规则。可能的值是nonzero和evenodd。省略时的默认值是nonzero。

列表中的每对参数表示 xi yi - 多边形第 i 个顶点的 x 和 y 轴坐标。

circle()

circle( [<shape-radius>]? [at <position>]? )

<shape-radius>参数表示 r ,圆的半径。负值无效。此处的百分比值将从参考框的已用宽度和高度中解析为sqrt(width^2+height^2)/sqrt(2)。

该<position>参数定义了圆的中心。如果省略,这个默认为中心。

ellipse()

ellipse( [<shape-radius>{2}]? [at <position>]? )

该<shape-radius>参数表示 rx 和 ry,椭圆的 x 轴和 y 轴的半径,在该顺序。两个半径的负值都是无效的。此处的百分比值将根据参考框的已用宽度(对于 rx 值)和已用高度(对于 ry 值)进行解析。

位置参数定义了椭圆的中心。如果省略,这个默认为中心。

上面未定义的参数定义如下:

<shape-arg> = <length> | <percentage> <shape-radius> = <length> | <percentage> | closest-side | farthest-side

定义圆或椭圆的半径。如果省略,则默认为closest-side

closest-side使用从形状中心到参考框最近边的长度。对于圆形来说,这是任何维度中最接近的一面。对于椭圆,这是半径尺寸中最接近的一侧。

farthest-side使用从形状的中心到参考框的最远侧的长度。对于圆形来说,这是任何维度中最远的一面。对于椭圆,这是半径方向上最远的一侧。

基本形状的计算值

<basic-shape>函数中的值按指定计算,但有以下例外:

  • 省略值包含在内并计算为其默认值。

基本形状的插值

从一个形状插入到另一个时,应用下面的规则。形状函数中的值插入为简单列表。列表值在可能的情况下以长度,百分比或计算方式进行插值。如果列表值不是这些类型中的一个,而是相同的(例如,在两个列表中的相同列表位置找到非零值),则这些值将进行内插。

  • 这两种形状必须使用相同的参考框。

例子

动画多边形

HTML

<div></div>

CSS

div { width: 300px; height: 300px; background: linear-gradient(red, blue -webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25% clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25% animation: 5s poly infinite alternate ease-in-out; margin: 1em auto; display: block; } @keyframes poly { from { -webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25% clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25% } to { -webkit-clip-path: polygon(44% 26%, 58% 38%, 58% 38%, 44% 81%, 44% 81%, 25% 49% clip-path: polygon(44% 26%, 58% 38%, 58% 38%, 44% 81%, 44% 81%, 25% 49% } }

结果

规范

SpecificationStatusComment
CSS Shapes Module Level 1The definition of '<basic-shape>' in that specification.Candidate RecommendationInitial definition.

浏览器兼容性

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support(Yes)47 (47)No support(Yes)(Yes)-webkit
inset()?No supportNo supportNo support?
Animations(Yes)49 (49)No support(Yes)(Yes)-webkit

FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support(Yes)(Yes)47.0 (47) (behind a pref)No supportNo support(Yes)
inset()?(Yes)No supportNo supportNo support?
Animations??49.0 (49)No supportNo support?