ladybird/Userland/Libraries/LibWeb/CSS
Andreas Kling d965a9552f LibWeb: Start implementing the CSS cascade
The 'C' in "CSS" is for Cascade, so let's actually implement the cascade
in LibWeb. :^)

StyleResolver::resolve_style() now begins by collecting all the matching
CSS rules for the given DOM::Element. Rules are then processed in the
spec's cascade order (instead of in the order we encounter them.)

With this, "!important" is now honored on CSS properties.

After performing the cascade, we do another pass of what the spec calls
"defaulting" where we resolve "inherit" and "initial" values.
I've left a FIXME about supporting correct "initial" values for every
property, since we're currently lacking some coverage there.

Note that this mechanism now resolves every known CSS property. This is
*not* space-efficient and we'll eventually need to come up with some
strategies to reduce memory usage around this. However, this will do
fine until we have more of the engine working correctly. :^)
2021-09-21 12:49:28 +02:00
..
Parser LibWeb: Add transform property to the system 2021-09-18 21:53:37 +02:00
.gitignore Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ComputedCSSStyleDeclaration.cpp LibWeb: Simplify ComputedCSSStyleDeclaration property lookup 2021-09-18 13:14:40 +02:00
ComputedCSSStyleDeclaration.h LibWeb: Simplify ComputedCSSStyleDeclaration property lookup 2021-09-18 13:14:40 +02:00
ComputedValues.h LibWeb: Add transform property to the system 2021-09-18 21:53:37 +02:00
CSSImportRule.cpp LibWeb: Add the Web::URL namespace and move URLEncoder to it 2021-09-13 01:43:10 +02:00
CSSImportRule.h LibWeb: Add the Web::URL namespace and move URLEncoder to it 2021-09-13 01:43:10 +02:00
CSSRule.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CSSRule.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CSSStyleDeclaration.cpp LibWeb: Implement CSSStyleDeclaration.getPropertyValue(property) 2021-09-12 20:44:50 +02:00
CSSStyleDeclaration.h LibWeb: Implement CSSStyleDeclaration.getPropertyValue(property) 2021-09-12 20:44:50 +02:00
CSSStyleDeclaration.idl LibWeb: Implement CSSStyleDeclaration.getPropertyValue(property) 2021-09-12 20:44:50 +02:00
CSSStyleRule.cpp LibWeb: Make CSS::Selector reference counted 2021-07-14 13:31:00 +02:00
CSSStyleRule.h LibWeb: Make CSS::Selector reference counted 2021-07-14 13:31:00 +02:00
CSSStyleSheet.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CSSStyleSheet.h AK: Rename downcast<T> => verify_cast<T> 2021-06-24 19:57:01 +02:00
CSSStyleSheet.idl LibWeb: Start exposing CSS style sheets to JavaScript :^) 2021-03-08 11:50:36 +01:00
Default.css LibWeb: Use -libweb-palette-base-text for text color in default CSS 2021-05-19 23:23:48 +01:00
Identifiers.json LibWeb: Add some more CSS identifiers 2021-09-17 23:06:45 +02:00
Length.cpp LibWeb: Handle CSS "ch" length unit (mostly) 2021-08-25 17:55:53 +02:00
Length.h LibWeb: Make CSS::Length::m_calculated_style a RefPtr 2021-09-21 12:33:15 +02:00
LengthBox.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
MediaQueryList.cpp LibWeb: Implement MediaQueryList.{addListener,removeListener} 2021-09-13 01:43:03 +02:00
MediaQueryList.h LibWeb: Implement MediaQueryList.{addListener,removeListener} 2021-09-13 01:43:03 +02:00
MediaQueryList.idl LibWeb: Implement MediaQueryList.{addListener,removeListener} 2021-09-13 01:43:03 +02:00
Properties.json LibWeb: Add transform property to the system 2021-09-18 21:53:37 +02:00
QuirksMode.css Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
Screen.cpp LibWeb: Add DOM::Window::page() 2021-09-09 21:25:10 +02:00
Screen.h AK: Rename adopt() to adopt_ref() 2021-04-23 16:46:57 +02:00
Screen.idl LibWeb: Implement the Screen interface 2021-04-04 00:37:54 +02:00
Selector.cpp AK: Move FormatParser definition from header to implementation file 2021-08-19 23:49:25 +02:00
Selector.h Everywhere: Use my shiny new serenityos.org email :^) 2021-09-03 12:22:36 +02:00
SelectorEngine.cpp Everywhere: Use my shiny new serenityos.org email :^) 2021-09-03 12:22:36 +02:00
SelectorEngine.h LibWeb: Convert CSS Dump, Selector, & SelectorEngine to east const 2021-07-14 13:31:00 +02:00
StyleInvalidator.cpp Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
StyleInvalidator.h Everywhere: Use linusg@serenityos.org for my copyright headers 2021-04-22 22:51:19 +02:00
StyleProperties.cpp LibWeb: Start implementing the CSS cascade 2021-09-21 12:49:28 +02:00
StyleProperties.h LibWeb: Start implementing the CSS cascade 2021-09-21 12:49:28 +02:00
StyleResolver.cpp LibWeb: Start implementing the CSS cascade 2021-09-21 12:49:28 +02:00
StyleResolver.h LibWeb: Start implementing the CSS cascade 2021-09-21 12:49:28 +02:00
StyleSheet.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
StyleSheet.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
StyleSheet.idl LibWeb: Implement StyleSheet.type 2021-03-08 16:16:28 +01:00
StyleSheetList.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
StyleSheetList.h AK: Rename adopt() to adopt_ref() 2021-04-23 16:46:57 +02:00
StyleSheetList.idl LibWeb: Start exposing CSS style sheets to JavaScript :^) 2021-03-08 11:50:36 +01:00
StyleValue.cpp LibWeb: Implement currentcolor special value 2021-09-17 23:06:45 +02:00
StyleValue.h LibWeb: Add a specialized BorderRadiusStyleValue::equals() 2021-09-21 12:33:15 +02:00