cross-fade()
语法
**警告:**规范和当前实现的语法不同。首先解释规范语法。
规范语法
cross-fade()
函数接受一个图像列表,以及一个百分比,用于定义在将每个图像与其他图像混合时保留的图像不透明度。百分比值必须在没有引号的情况下编码,必须包含“%”符号,并且其值必须介于 0% 和 100% 之间。
该函数可以在 CSS 中任何普通图像引用可以使用的地方使用。
交叉渐变百分比
将百分比视为每个图像的不透明度值。这意味着 0% 的值表示图像完全透明,而 100% 的值表示图像完全不透明。
cross-fade(url(white.png) 0%, url(black.png) 100%); /* fully black */
cross-fade(url(white.png) 25%, url(black.png) 75%); /* 25% white, 75% black */
cross-fade(url(white.png) 50%, url(black.png) 50%); /* 50% white, 50% black */
cross-fade(url(white.png) 75%, url(black.png) 25%); /* 75% white, 25% black */
cross-fade(url(white.png) 100%, url(black.png) 0%); /* fully white */
cross-fade(url(green.png) 75%, url(red.png) 75%); /* both green and red at 75% */
如果省略任何百分比,则将所有指定的百分比加起来并从 100% 中减去。如果结果大于 0%,则将结果平均分配给所有省略百分比的图像。
在最简单的情况下,两个图像之间会相互淡入淡出。为此,只需要其中一个图像具有百分比,另一个图像将相应地淡入淡出。例如,为第一个图像定义的 0% 值仅产生第二个图像,而 100% 值仅产生第一个图像。25% 的值将第一个图像呈现为 25%,第二个图像呈现为 75%。75% 的值是反向的,显示第一个图像为 75%,第二个图像为 25%。
上面也可以写成
cross-fade(url(white.png) 0%, url(black.png)); /* fully black */
cross-fade(url(white.png) 25%, url(black.png)); /* 25% white, 75% black */
cross-fade(url(white.png), url(black.png)); /* 50% white, 50% black */
cross-fade(url(white.png) 75%, url(black.png)); /* 75% white, 25% black */
cross-fade(url(white.png) 100%, url(black.png)); /* fully white */
cross-fade(url(green.png) 75%, url(red.png) 75%); /* both green and red at 75% */
如果没有声明百分比,则两个图像将具有 50% 的不透明度,交叉渐变呈现为两个图像的均匀合并。上面看到的 50%/50% 示例不需要列出百分比,因为当省略百分比值时,包含的百分比加起来并从 100% 中减去。如果结果大于 0,则将结果平均分配给所有省略百分比的图像。
在最后一个示例中,两个百分比的总和不为 100%,因此两个图像都包含各自的不透明度。
如果没有声明百分比并且包含三个图像,则每个图像将具有 33.33% 的不透明度。以下两行(几乎)相同
cross-fade(url(red.png), url(yellow.png), url(blue.png)); /* all three will be 33.3333% opaque */
cross-fade(url(red.png) 33.33%, url(yellow.png) 33.33%, url(blue.png) 33.33%);
旧的,已实现的语法
cross-fade( <image>, <image>, <percentage> )
cross-fade()
函数的规范允许使用多个图像,并允许每个图像具有独立于其他值的不透明度值。情况并非总是如此。最初的语法(已在某些浏览器中实现)仅允许两个图像,这两个图像的不透明度之和正好为 100%。原始语法在 Safari 中受支持,并在 Chrome、Opera 和其他基于 Blink 的浏览器中使用 -webkit-
前缀受支持。
cross-fade(url(white.png), url(black.png), 0%); /* fully black */
cross-fade(url(white.png), url(black.png), 25%); /* 25% white, 75% black */
cross-fade(url(white.png), url(black.png), 50%); /* 50% white, 50% black */
cross-fade(url(white.png), url(black.png), 75%); /* 75% white, 25% black */
cross-fade(url(white.png), url(black.png), 100%); /* fully white */
在已实现的语法中,首先声明两个用逗号分隔的图像,然后是逗号和所需的百分比值。省略逗号或百分比会使值无效。百分比是第一个声明的图像的不透明度。包含的百分比从 100% 中减去,差值为第二个图像的不透明度。
规范语法部分中的绿色/红色示例(百分比总计 150%)和黄色/红色/蓝色示例(三个图像)在此实现中是不可能的。
无障碍访问
浏览器不会向辅助技术提供任何关于背景图像的特殊信息。这主要对屏幕阅读器很重要,因为屏幕阅读器不会宣布其存在,因此不会向其用户传达任何信息。如果图像包含对理解页面整体目的至关重要的信息,最好在文档中以语义方式对其进行描述。使用背景图像时,请确保颜色对比度足够大,以便任何文本在图像上以及图像丢失时都清晰可见。
正式语法
<cross-fade()> =
cross-fade( <cf-image># )
<cf-image> =
[ <image> | <color> ] &&
<percentage [0,100]>?
<image> =
<url> |
<gradient>
<url> =
<url()> |
<src()>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
示例
旧的交叉淡入淡出语法
HTML
<div class="crossfade"></div>
CSS
.crossfade {
width: 300px;
height: 300px;
background-image: -webkit-cross-fade(url("br.png"), url("tr.png"), 75%);
background-image: cross-fade(url("br.png"), url("tr.png"), 75%);
}
结果
规范
规范 |
---|
CSS 图像模块级别 4 # cross-fade-function |
浏览器兼容性
BCD 表格仅在浏览器中加载