非常教程

CSS参考手册

形状 | Shapes

基本形状 |

<basic-shape> CSS数据类型表示在所使用的形状clip-pathshape-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>表示用于确定多边形内部的填充规则。可能的值是nonzeroevenodd。省略时的默认值是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>函数中的值按指定计算,但有以下例外:

  • 省略值包含在内并计算为其默认值。
  • 一个<position>circle()或者ellipse()被计算为一对距离左上角原点的偏移量(水平方向,然后是垂直方向),每个偏移量都是绝对长度和百分比的组合。
  • 计算的<border-radius>inset()是所有八个<length>或百分比值的扩展列表。

基本形状的插值

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

  • 这两种形状必须使用相同的参考框。
  • 如果两种形状都是相同类型,那种类型是ellipse()circle(),并且没有半径使用closest-sidefarthest-side关键字,则在形状函数中的每个值之间进行插值。
  • 如果两种形状都是类型的inset(),则在形状函数中的每个值之间进行插值。
  • 如果两种形状都是类型的polygon(),则两个多边形都具有相同的顶点数量,并使用相同的<fill-rule>数值,在形状函数中的每个值之间进行插值。
  • 在所有其他情况下,不指定插值。

例子

动画多边形

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%);
  }
}

结果

规范

Specification

Status

Comment

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

Candidate Recommendation

Initial definition.

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

(Yes)

47 (47)

No support

(Yes)

(Yes)-webkit

inset()

?

No support

No support

No support

?

Animations

(Yes)

49 (49)

No support

(Yes)

(Yes)-webkit

Feature

Android

Chrome for Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

(Yes)

(Yes)

47.0 (47) (behind a pref)

No support

No support

(Yes)

inset()

?

(Yes)

No support

No support

No support

?

Animations

?

?

49.0 (49)

No support

No support

?

CSS

层叠样式表( Cascading Style Sheets )是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

CSS目录

1.动画和转换 | Animations & Transitions
2.背景和边框 | Backgrounds & Borders
3.基本框模型 | Basic Box Model
4.基本用户界面 | Basic User Interface
5.框对齐 | Box Alignment
6. 级联和继承 | Cascading & Inheritance
7.颜色 | Color
8. 合成与混合 | Compositing & Blending
9.条件和规则 | Conditional Rules
10.计数器样式 | Counter Styles
11.设备适配 | Device Adaptation
12.扩展 | Extensions
13.滤镜效果 | Filter Effects
14.灵活的框布局 | Flexible Box Layout
15.字体 | Fonts
16.片段模块 | Fragmentation
17.全屏 API | Fullscreen API
18. 生成内容 | Generated Content
19.网格布局 | Grid Layout
20.图像值 | Image Values
21.初始线格局 | Inline Layout
22.列表和计数器 | Lists & Counters
23.逻辑属性 | Logical Properties
24.面具 | Masking
25.媒体查询 | Media Queries
26.杂项 | Miscellaneous
27.Miscellaneous Level 1
28.Miscellaneous Level 2
29.运动路径 | Motion Path
30. 多列布局 | Multi-column Layout
31.命名空间 | Namespaces
32.项目模型 | Object Model View
33.网页媒体 | Paged Media
34.定位布局 | Positioned Layout
35.伪元素 | Pseudo-
36.节奏大小 | Rhythmic Sizing
37. Ruby布局 | Ruby Layout
38.可缩放矢量图形 | Scalable Vector Graphics
39.滚动快照 | Scroll Snap
40.选择 | Selectors
41.形状 | Shapes
42.文本 | Text
43.文字装饰 | Text Decoration
44.变换 | Transforms
45.值和单位 | Values & Units
46.变量 | Variables
47.写入模型 | Writing Modes
48.CSS 教程
49.CSS 创建
50.CSS Id 和 Class选择器
51.CSS 简介
52.CSS 盒子模型
53.CSS Table(表格)
54.CSS 列表样式(ul)
55.CSS 链接(link)
56.CSS Fonts(字体)
57.CSS Text(文本)
58.CSS Backgrounds(背景)
59.CSS Display(显示) 与 Visibility(可见性)
60.CSS 尺寸 (Dimension)
61.CSS 分组和嵌套
62.CSS 轮廓(outline)属性
63.CSS Border(边框)
64.CSS 图像透明/不透明
65.CSS 导航栏
66.CSS 伪元素
67.CSS 伪类
68.CSS Float(浮动)
69.CSS Position(定位)
70.CSS 总结
71.CSS 属性选择器
72.CSS 媒体类型
73.CSS 图像拼合技术
74.CSS 实例
75.CSS 组合选择符
76.响应式 Web 设计 – 框架
77.响应式 Web 设计 – 视频(Video)
78.CSS 提示工具(Tooltip)
79.CSS 布局 Overflow
80.CSS 计数器
81.CSS 表单