GTK CSS属性 [src]

GTK支持在控件上下文中应用的CSS属性和缩写,并在需要时才添加自己的属性。所有的GTK-特定属性都有-gtk前缀。

基本类型

所有属性都支持以下关键词:inherit(继承)、initial(初始)、unset(未设置),其意义与CSS层叠和继承规范中的定义相同。

以下是支持的基本数据类型单位:

长度
px, pt, em, ex, rem, pc, in, cm, mm
百分比
%
角度
deg, rad, grad, turn
时间
s, ms

使用em或ex单位的长度值将通过字体大小值解析,除非它们用于设置字体大小本身,在这种情况下,它们将使用继承的字体大小值进行解析。

rem单位使用初始字体大小值解析,这与CSS对rem的定义并不完全相同。

使用物理单位(pt, pc, in, cm, mm)的长度值将转换为px,使用由-gtk-dpi属性指定的dpi值,这与CSS的定义不同,CSS使用96的固定dpi。

calc()语法为所有这些数据类型添加了相当大的表现力。在这样的表达式中可以组合的类型有限制(例如,将数字与时间相加没有意义)。有关完整详情,请参阅CSS值和单位规范。

缩写属性(称为“四边”)中的常见模式是,可以指定一个到四个值,以确定区域每一边的值。在这种情况下,指定的值按以下方式解释:

4个值
上 右 下 左
3个值
上 水平 下
2个值
垂直 水平
1个值
全部

自定义属性

GTK支持按照CSS层叠变量自定义属性规范定义的自定义属性。

自定义属性如下定义:

--prop: red;

并通过var关键字使用

color: var(--prop);

自定义属性可以为无效的引用属性提供后备值

color: var(--prop, green);

颜色

CSS颜色

CSS中可以以多种方式表达颜色(参见颜色模块。GTK支持其中许多(但不是全部)。

您可以使用rgb()、rgba()、hsl()的遗留或现代CSS语法,以及将calc()用于颜色表达式中。还支持hwb()、oklab()、oklch()、color()、color-mix()和相对颜色。

非CSS颜色

GTK通过几种额外的方式扩展了CSS语法来指定颜色。

这些扩展已经弃用,应使用等效的标准CSS概念。

第一种是通过在CSS中使用define-color规则定义的颜色引用。定义define-color规则的语法如下:

@define-color name color

要引用由define-color规则定义的颜色,请在名称前加上@。

应该使用自定义属性、:root 和 var() 来代替 define-color 的标准 CSS 机制。

GTK 还支持颜色表达式,这允许颜色转换成新颜色。颜色表达式可以进行嵌套,提供定义颜色的丰富语言。颜色表达式类似于函数,接受 1 个或多个颜色以及在某些情况下一个数字作为参数。

lighter(color)
生成 color 的一个更亮的变体。
darker(color)
生成 color 的一个更暗的变体。
shade(color, number)
改变 color 的亮度。这个 number 的范围是从 0(黑色)到 2(白色)。
alpha(color, number)
color 的alpha值乘以 number(在 0 到 1 之间)。
mix(color1, color2, number)
在这两个颜色之间进行插值。

图像

GTK 扩展了 CSS 用于图像的语法,并也用它来指定图标。要加载一个主题图标,使用

-gtk-icontheme(name)

指定的图标名称用于查找主题图标,同时考虑到 -gtk-icon-palette 属性的值。这种类型的图像主要用作 -gtk-icon-source 属性的值。

从图标主题中获取的符号图标会根据 -gtk-icon-palette 属性重新着色,该属性定义了一个命名颜色列表。符号图标中颜色识别的名称有 error、warning 和 success。默认调色板将这些三个名称映射到分别具有 error_colorwarning_colorsuccess_color 名称的符号颜色。定义自定义调色板的语法是一个以逗号分隔的名称-颜色对列表,例如

success blue, warning #fc3, error magenta

有时需要为不是图标主题一部分的图像进行重新着色,并且

-gtk-recolor(uri, palette)

这个语法使得这成为可能。-gtk-recolor 以 URL 作为第一个参数。其余参数指定要使用的调色板。如果没有明确指定调色板,将使用 -gtk-icon-palette 属性的当前值。

GTK 支持高分辨率显示上的缩放渲染。如果图像可以指定普通和高分辨率变体,这会工作得最好。从 CSS 来做,可以用

-gtk-scaled(image1, image2)

GTK CSS 属性

属性 参考 注意事项
color CSS 颜色级 3
opacity CSS 颜色级 3
filter CSS 过滤效果级 1
font-family CSS 字体级 3 默认为 gtk-font-name 设置
font-size CSS 字体级 3 默认为 gtk-font-name 设置
font-style CSS 字体级 3
font-variant CSS 字体级 3 仅支持 CSS2
font-weight CSS 字体级 3
font-stretch CSS 字体级 3
font-kerning CSS 字体级 3
font-variant-ligatures CSS 字体级 3
font-variant-position CSS 字体级 3
font-variant-caps CSS 字体级 3
font-variant-numeric CSS 字体级 3
font-variant-alternates CSS 字体级 3
font-variant-east-asian CSS 字体级 3
font-feature-settings CSS 字体级 3
font-variation-settings CSS 字体级 4
-gtk-dpi 数字 默认为屏幕分辨率
font CSS 字体级 3 CSS 允许 line-height 等
font-variant CSS 字体级 3
caret-color CSS 基础用户界面级 3 CSS 允许 auto 值
-gtk-secondary-caret-color 颜色 用于双向文本的次要光标
字间距 CSS 文本级别 3
文本转换 CSS 文本级别 3 CSS 允许全角和全角片假名。从4.6版本开始
行高 CSS 内联布局级别 3 从4.6版本开始
文本装饰线 CSS 文本装饰级别 3
文本装饰颜色 CSS 文本装饰级别 3
文本装饰样式 CSS 文本装饰级别 3 CSS 允许虚线和点线
文本阴影 CSS 文本装饰级别 3
文本装饰 CSS 文本装饰级别 3
-gtk-icon-source 图像builtinnone 用于按钮和展开器的内建图标
-gtk-icon-size 长度 按钮和展开器内建图标使用的大小
-gtk-icon-style requestedregularsymbolic 应用程序加载图标的首选样式
-gtk-icon-transform 变换列表none 应用于内建和应用程序加载的图标
-gtk-icon-palette 颜色调色板,如上所述 用于重新着色符号图标的调色板
-gtk-icon-shadow 阴影none 应用于内建和应用程序加载的图标
-gtk-icon-filter 过滤器值列表none 应用于内建和应用程序加载的图标
变换 CSS 变换级别 1
变换原点 CSS 变换级别 1 CSS 允许指定 z 轴分量
最小宽度 CSS 盒子模型级别 3 CSS 允许百分比
最小高度 CSS 盒子模型级别 3 CSS 允许百分比
上边距 CSS 盒子模型级别 3 CSS 允许百分比或自动
右边距 CSS 盒子模型级别 3 CSS 允许百分比或自动
下边距 CSS 盒子模型级别 3 CSS 允许百分比或自动
左边距 CSS 盒子模型级别 3 CSS 允许百分比或自动
上内边距 CSS 盒子模型级别 3 CSS 允许百分比
右内边距 CSS 盒子模型级别 3 CSS 允许百分比
下内边距 CSS 盒子模型级别 3 CSS 允许百分比
左内边距 CSS 盒子模型级别 3 CSS 允许百分比
边距 CSS 盒子模型级别 3 ‘四周边距’属性
内边距 CSS 盒子模型级别 3 ‘四周边距’属性
上边框宽度 CSS 背景和边框级别 3 CSS 允许其他值
右边框宽度 CSS 背景和边框级别 3 CSS 允许其他值
下边框宽度 CSS 背景和边框级别 3 CSS 允许其他值
左边框宽度 CSS 背景和边框级别 3 CSS 允许其他值
上边框样式 CSS 背景和边框级别 3
右边框样式 CSS 背景和边框级别 3
下边框样式 CSS 背景和边框级别 3
左边框样式 CSS 背景和边框级别 3
上右边框弧度 CSS 背景和边框级别 3
下右边框弧度 CSS 背景和边框级别 3
下左边框弧度 CSS 背景和边框级别 3
上左边框弧度 CSS 背景和边框级别 3
上边框颜色 CSS 背景和边框级别 3
右边框颜色 CSS 背景和边框级别 3
下边框颜色 CSS 背景和边框级别 3
左边框颜色 CSS 背景和边框级别 3
边框图像源 CSS 背景和边框级别 3
边框图像重复 CSS 背景和边框级别 3
边框图像切割 CSS 背景和边框级别 3 ‘四周边距’属性
边框图像宽度 CSS 背景和边框级别 3 ‘四周边距’属性
边框宽度 CSS 背景和边框级别 3 ‘四周边距’属性
边框样式 CSS 背景和边框级别 3 ‘四周边距’属性
边框颜色 CSS 背景和边框级别 3 ‘四周边距’属性
上边框 CSS 背景和边框级别 3
右边框 CSS 背景和边框级别 3
下边框 CSS 背景和边框级别 3
左边框 CSS 背景和边框级别 3
边框 CSS 背景和边框级别 3
边框半径 CSS 背景和边框级别 3
边框图像 CSS 背景和边框级别 3
轮廓样式 CSS 基础用户界面级 3 初始值是 none,不支持 auto
轮廓宽度 CSS 基础用户界面级 3
轮廓颜色 CSS 基础用户界面级 3 初始值是 currentColor,不支持 invert
轮廓偏移量 CSS 基础用户界面级 3
轮廓 CSS 基础用户界面级 3
背景颜色 CSS 背景和边框级别 3
背景剪辑 CSS 背景和边框级别 3
背景原点 CSS 背景和边框级别 3
背景大小 CSS 背景和边框级别 3
背景位置 CSS 背景和边框级别 3
背景重复 CSS 背景和边框级别 3
背景图像 CSS 背景和边框级别 3 不支持:不带引号的 urls
盒子阴影 CSS 背景和边框级别 3
背景混合模式 CSS 组合和混合级别 1 仅影响多个背景
背景 CSS 背景和边框级别 3
过渡属性 CSS 过渡
过渡持续时间 CSS 过渡
过渡时间函数 CSS 过渡
过渡延迟 CSS 过渡
过渡 CSS 过渡
动画名称 CSS 动画级别 1
动画持续时间 CSS 动画级别 1
动画计时函数 CSS 动画级别 1
动画迭代次数 CSS 动画级别 1
动画方向 CSS 动画级别 1
动画播放状态 CSS 动画级别 1
动画延迟 CSS 动画级别 1
动画填充模式 CSS 动画级别 1
动画 CSS 动画级别 1
边框间距 CSS 三级表格级别 由 GtkBoxLayout、GtkGridLayout、GtkCenterLayout 所尊重