mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 15:28:11 +00:00
LibWeb: Implement :nth-last-child pseudo-class
This commit is contained in:
parent
e87eaa3991
commit
c4bd4cbd76
4 changed files with 15 additions and 3 deletions
|
@ -83,6 +83,7 @@ static bool matches(const CSS::Selector::SimpleSelector& component, const DOM::E
|
|||
}
|
||||
break;
|
||||
case CSS::Selector::SimpleSelector::PseudoClass::NthChild:
|
||||
case CSS::Selector::SimpleSelector::PseudoClass::NthLastChild:
|
||||
const auto step_size = component.nth_child_pattern.step_size;
|
||||
const auto offset = component.nth_child_pattern.offset;
|
||||
if (step_size == 0 && offset == 0)
|
||||
|
@ -93,8 +94,12 @@ static bool matches(const CSS::Selector::SimpleSelector& component, const DOM::E
|
|||
return false;
|
||||
|
||||
int index = 1;
|
||||
for (auto* child = parent->first_child_of_type<DOM::Element>(); child && child != &element; child = child->next_element_sibling()) {
|
||||
++index;
|
||||
if (component.pseudo_class == CSS::Selector::SimpleSelector::PseudoClass::NthChild) {
|
||||
for (auto* child = parent->first_child_of_type<DOM::Element>(); child && child != &element; child = child->next_element_sibling())
|
||||
++index;
|
||||
} else {
|
||||
for (auto* child = parent->last_child_of_type<DOM::Element>(); child && child != &element; child = child->previous_element_sibling())
|
||||
++index;
|
||||
}
|
||||
|
||||
if (step_size < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue