122 lines
2.7 KiB
HTML
122 lines
2.7 KiB
HTML
<!DOCTYPE html>
|
|
<title>Custom Functions: Local substitution of var() in attribute value</title>
|
|
<link rel="help" href="https://drafts.csswg.org/css-mixins-1/#locally-substitute-a-var">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="resources/utils.js"></script>
|
|
|
|
<div id=target data-x="var(--x)" data-f="--f()"></div>
|
|
<div id=main></div>
|
|
|
|
<!-- To pass, a test must produce matching computed values for --actual and
|
|
--expected on #target. -->
|
|
|
|
<template data-name="var() in attribute value substitutes locally">
|
|
<style>
|
|
@function --f() {
|
|
--x: PASS;
|
|
result: attr(data-x type(*));
|
|
}
|
|
#target {
|
|
--x: FAIL;
|
|
--actual: --f();
|
|
--expected: PASS;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<template data-name="var() in attribute value substitutes locally, argument">
|
|
<style>
|
|
@function --f(--x) {
|
|
result: attr(data-x type(*));
|
|
}
|
|
#target {
|
|
--x: FAIL;
|
|
--actual: --f(PASS);
|
|
--expected: PASS;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<template data-name="var() in attribute value substitutes locally, typed">
|
|
<style>
|
|
@function --f() returns <length> {
|
|
--x: calc(10px + 2px);
|
|
result: attr(data-x type(<length>));
|
|
}
|
|
#target {
|
|
--x: calc(10px + 1px);
|
|
--actual: --f();
|
|
--expected: 12px;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<template data-name="attr() fallback substitutes locally">
|
|
<style>
|
|
@function --f() {
|
|
--x: PASS;
|
|
result: attr(data-unknown, var(--x));
|
|
}
|
|
#target {
|
|
--x: FAIL;
|
|
--actual: --f();
|
|
--expected: PASS;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<template data-name="attr() cycle through local">
|
|
<style>
|
|
@function --f() {
|
|
--x: attr(data-x type(*));
|
|
--y: attr(data-x type(*), PASS);
|
|
result: var(--y, PASS);
|
|
}
|
|
#target {
|
|
--x: FAIL1;
|
|
--y: FAIL2;
|
|
--actual: --f();
|
|
--expected: PASS;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<template data-name="attr() cycle through unused fallback in local">
|
|
<style>
|
|
@function --f() {
|
|
--valid: PASS;
|
|
--x: var(--valid, attr(data-x type(*)));
|
|
--y: attr(data-x type(*), FAIL);
|
|
result: var(--y, FAIL);
|
|
}
|
|
#target {
|
|
--x: FAIL1;
|
|
--y: FAIL2;
|
|
--actual: --f();
|
|
--expected: PASS;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<template data-name="attr() cycle through function">
|
|
<style>
|
|
@function --f() {
|
|
--local: --g();
|
|
result: var(--local);
|
|
}
|
|
@function --g() {
|
|
result: attr(data-f type(*));
|
|
}
|
|
#target {
|
|
--local: FAIL;
|
|
--tmp: --f();
|
|
--actual: var(--tmp, PASS);
|
|
--expected: PASS;
|
|
}
|
|
</style>
|
|
</template>
|
|
|
|
<script>
|
|
test_all_templates();
|
|
</script>
|