- From: Oriol Brufau via GitHub <sysbot+gh@w3.org>
- Date: Sat, 25 Jul 2020 13:32:52 +0000
- To: public-css-archive@w3.org
Firefox implements what the spec says https://searchfox.org/mozilla-central/rev/828f2319c0195d7f561ed35533aef6fe183e68e3/dom/base/Document.cpp#12534-12546
```cpp
Element* Document::GetScrollingElement() {
// Keep this in sync with IsScrollingElement.
if (GetCompatibilityMode() == eCompatibility_NavQuirks) {
RefPtr<HTMLBodyElement> body = GetBodyElement();
if (body && !IsPotentiallyScrollable(body)) {
return body;
}
return nullptr;
}
return GetRootElement();
}
```
And Chromium does something similar (but doesn't check the `overflow` of the root element): https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/dom/document.cc;drc=d2d9d94b1b8a0174ff40bf5475a4bcd15d5f9484;l=1693-1710
```cpp
Element* Document::ScrollingElementNoLayout() {
if (RuntimeEnabledFeatures::ScrollTopLeftInteropEnabled()) {
if (InQuirksMode()) {
DCHECK(!IsActive() ||
lifecycle_.GetState() >= DocumentLifecycle::kStyleClean);
HTMLBodyElement* body = FirstBodyElement();
if (body && body->GetLayoutObject() &&
body->GetLayoutObject()->HasOverflowClip())
return nullptr;
return body;
}
return documentElement();
}
return body();
}
```
Note `ScrollTopLeftInterop` is enabled by default, and `HasOverflowClip()` checks if `overflow` is not `visible`.
--
GitHub Notification of comment by Loirooriol
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/5326#issuecomment-663856077 using your GitHub account
Received on Saturday, 25 July 2020 13:32:54 UTC