Den overflow-anchor
egenskapen gör att vi kan välja bort Scroll Förankring, vilket är en webbläsare funktion avsedd att tillåta innehåll belastning över användarens aktuella DOM läge utan att ändra användarens plats en gång att innehållet har fullastad.
Varför vi behöver det
Scroll Anchoring är en webbläsarfunktion som försöker förhindra en vanlig situation där du kan rulla ner på en webbsida innan DOM har laddats helt och, när den gör det, skjuter alla element som laddas över din nuvarande plats längre ner på sidan.
Det är vettigt varför detta skulle hända. Det finns CSS-egenskaper som vi tillämpar på element som ger dem storlek (t.ex. width
), form (t.ex. transform
) och position (t.ex. margin
). Om dessa element inte har laddats när vi har rullat ner på sidan fortsätter DOM att ladda dem trots att de befinner sig utanför vårt nuvarande visningsområde och kommer att expandera fysiskt för att ge plats för de nyligen laddade elementen. När DOM växer ändras vår position på sidan för att tillgodose dessa element.
Scroll Anchoring förhindrar "hopp" -upplevelsen genom att låsa användarens position på sidan medan förändringar sker i DOM ovanför den aktuella platsen. Detta gör att användaren kan förbli förankrad där de är på sidan även när nya element laddas till DOM.
Den overflow-anchor
egenskapen ger oss möjlighet att opt-out av Scroll Förankring funktionen i händelse av att det är att föredra att låta innehåll att återflödet som element laddas.
Syntax
article ( overflow-anchor: (auto | none ); )
Värden
Den overflow-anchor
fastighet accepterar två värden som i huvudsak toggle huruvida funktionen är aktiverad.
auto
(standard): Aktiverar rullningsförankring på den del av sidan eller elementet som den används på.none
: Inaktiverar rullningsförankring delvis eller hela webbsidan, eller utesluter delar av DOM från att förankras, så att innehållet kan återflödas.
Du skulle antagligen tillämpa detta på body
, men du kan omfatta det till valfri väljare, och det kommer att träda i kraft om det elementet rullar.
Demo
Så snart du bläddrar i en av rutorna i den här demo, kommer den att lägga till en massa gröna rutor överst i div. Normalt skulle det trycka ner innehållet omedelbart, potentiellt vara en stor distraktion och förlora din plats i texten. Med overflow-anchor: auto;
bevaras rullningsplatsen. overflow-anchor: none;
låter de nyligen infogade diverna påverka rullningspositionen
Se Chris Coyiers (@chriscoyier) Pen-överflödsankare på CodePen.
En annan sak som kan göras som kan vara superduper användbar är att fästa ett elements rullningsposition i botten. Så till exempel en chattapp där nya meddelanden läggs till i DOM längst ner och du vill att rullningspositionen ska ligga längst ner och visa alla nya meddelanden:
Se pennan
"Stanna längst ner" rulla med rullankare av Chris Coyier (@chriscoyier)
på CodePen.
Webbläsarstöd
I skrivande stund overflow-anchor
är det ingen aktuell W3C-standard, även om utkastet till rapporten för den föreslagna specifikationen är tillgänglig för läsning och har antagits av Chrome sedan version 56. Mozilla överväger en liknande funktion i Firefox. När fler webbläsare använder funktionen Scroll Anchoring kan vi förvänta oss att se mer webbläsarstöd för overflow-anchor
eftersom det ger uttrycklig kontroll att välja bort funktionen.
Denna webbläsares supportdata kommer från Caniuse, som har mer detaljer. Ett nummer indikerar att webbläsaren stöder funktionen i den versionen och uppåt.
Skrivbord
Krom | Firefox | IE | Kant | Safari |
---|---|---|---|---|
56 | 66 | Nej | 79 | Nej |
Mobil / surfplatta
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 | Nej |
Mer information
- Scroll Anchoring: Föreslaget utkast till Scroll Anchoring-specifikationen
- Chromium Blog: Blogginlägget som meddelar Chromes införande av Scroll Anchoring och CSS-egenskapen i version 56
- Bugzilla Ticket # 43114: Öppna biljetten för att inkludera fastigheten i Firefox