| <!DOCTYPE html> | |
| <title>CSS Syntax: {}-blocks in declaration values</title> | |
| <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/9317"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <!-- Standard properties --> | |
| <style id=plain_var> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color:var(--x); /* Valid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = plain_var.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, 'var(--x)'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'Plain var()'); | |
| </script> | |
| <style id=whole_value_block> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color:{var(--x)}; /* Valid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = whole_value_block.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, '{var(--x)}'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'Whole-value block with var()'); | |
| </script> | |
| <style id=whole_value_block_with_space> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color: { var(--x) }; /* Valid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = whole_value_block_with_space.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, '{ var(--x) }'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'Whole-value block with var() (spaces)'); | |
| </script> | |
| <style id=trailing_block> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color:var(--x) { }; /* Invalid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = trailing_block.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, 'rgb(2, 2, 2)'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'Trailing block, leading var()'); | |
| </script> | |
| <style id=leading_block> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color:{ } var(--x); /* Invalid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = leading_block.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, 'rgb(2, 2, 2)'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'Leading block, trailing var()'); | |
| </script> | |
| <style id=in_block_var_with_trailing_token> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color:{ var(--x) } A; /* Invalid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = in_block_var_with_trailing_token.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, 'rgb(2, 2, 2)'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'In-block var() with trailing token'); | |
| </script> | |
| <style id=in_block_var_with_leading_token> | |
| .a { | |
| color: rgb(2, 2, 2); | |
| color:A { var(--x) }; /* Invalid */ | |
| background-color:rgb(1, 1, 1); | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = in_block_var_with_leading_token.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| let declarations = rules[0].style; | |
| assert_equals(declarations.color, 'rgb(2, 2, 2)'); | |
| assert_equals(declarations.backgroundColor, 'rgb(1, 1, 1)'); | |
| }, 'In-block var() with leading token'); | |
| </script> | |
| <!-- Custom Properties --> | |
| <style id=plain_var_custom> | |
| .a { | |
| --y:var(--x); /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = plain_var_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), 'var(--x)'); | |
| }, 'Plain var() (custom property)'); | |
| </script> | |
| <style id=whole_value_block_custom> | |
| .a { | |
| --y:{var(--x)}; /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = whole_value_block_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), '{var(--x)}'); | |
| }, 'Whole-value block with var() (custom property)'); | |
| </script> | |
| <style id=whole_value_block_with_space_custom> | |
| .a { | |
| --y: { var(--x) }; /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = whole_value_block_with_space_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), '{ var(--x) }'); | |
| }, 'Whole-value block with var() (spaces, custom property)'); | |
| </script> | |
| <style id=trailing_block_custom> | |
| .a { | |
| --y:var(--x) { }; /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = trailing_block_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), 'var(--x) { }'); | |
| }, 'Trailing block, leading var() (custom property)'); | |
| </script> | |
| <style id=leading_block_custom> | |
| .a { | |
| --y:{ } var(--x); /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = leading_block_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), '{ } var(--x)'); | |
| }, 'Leading block, trailing var() (custom property)'); | |
| </script> | |
| <style id=in_block_var_with_trailing_token_custom> | |
| .a { | |
| --y:{ var(--x) } A; /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = in_block_var_with_trailing_token_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), '{ var(--x) } A'); | |
| }, 'In-block var() with trailing token (custom property)'); | |
| </script> | |
| <style id=in_block_var_with_leading_token_custom> | |
| .a { | |
| --y:A { var(--x) }; /* Valid */ | |
| } | |
| </style> | |
| <script> | |
| test(() => { | |
| let rules = in_block_var_with_leading_token_custom.sheet.rules; | |
| assert_equals(rules.length, 1); | |
| assert_equals(rules[0].style.getPropertyValue('--y'), 'A { var(--x) }'); | |
| }, 'In-block var() with leading token (custom property)'); | |
| </script> |