LibWeb: Implement currentcolor special value

The `currentcolor` identifier represents the current value of the
`color` property. This is the default value for `border-color` and
`text-decoration-color`, and is generally useful to have. :^)
This commit is contained in:
Sam Atkins 2021-09-16 19:40:56 +01:00 committed by Andreas Kling
parent 86f78bff2a
commit 17bb913625
Notes: sideshowbarker 2024-07-18 03:46:08 +09:00
3 changed files with 9 additions and 0 deletions

View File

@ -12,6 +12,7 @@
#g { background-color: rgba(0%, 100%, 0%, 1); }
#h { background-color: hsl(120, 100%, 50%); }
#i { background-color: hsla(120, 100%, 50%, 1); }
#j { color: lime; background-color: currentColor; }
</style>
</head>
<body>
@ -25,5 +26,6 @@
<div id="g">This is green, using rgba(0%, 100%, 0%, 1).</div>
<div id="h">This is green, using hsl(120, 100%, 50%).</div>
<div id="i">This is green, using hsla(120, 100%, 50%, 1).</div>
<div id="j"><span style="color: black;">This is green, using currentcolor.</span></div>
</body>
</html>

View File

@ -82,6 +82,7 @@
"context-menu",
"copy",
"crosshair",
"currentcolor",
"cursive",
"dashed",
"decimal",

View File

@ -33,6 +33,12 @@ String IdentifierStyleValue::to_string() const
Color IdentifierStyleValue::to_color(Layout::NodeWithStyle const& node) const
{
if (id() == CSS::ValueID::Currentcolor) {
if (!node.has_style())
return Color::Black;
return node.computed_values().color();
}
auto& document = node.document();
if (id() == CSS::ValueID::LibwebLink)
return document.link_color();