In WordPress 5.3, Twenty Twenty new bundled theme added smooth scroll animations to anchor links. These animations were handled by native JavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/. and it caused several issues, mentioned in the following Trac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets and GitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ issues:
- #48763 – Twenty Twenty: SmoothScroll is broken
- #48551 – Twenty Twenty: Replace JS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.-based smooth scroll with CSS Cascading Style Sheets.
- #48866 – TwentyTwenty: Paginated comments don’t work
- GitHub issue 476 – Consider removing JS-based smooth scroll
Additionally to the multiple issues listed in the above tickets, JavaScript-based scroll animations add a bunch of relatively complex JS code, override natural anchor behavior and may interfere with how specific user agents handle in-page scrolling.
In WordPress 5.3.1, the current smooth scroll JavaScript implementation will be replaced with “scroll-behavior” CSS property.
This change fixes the issues encountered with the current JavaScript implementation, and also includes an accessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) enhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. by using prefers-reduced-motion: reduce
media query property for users that have opted in to reduced motion in their browser settings.
For further explanation on this media query, see Mozilla Developer Network documentation.
Browsers that don’t support scroll-behavior
CSS property will fallback to default HTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. anchor behavior. For reference, see full browsers support for this CSS property on MDN.
New CSS scroll animation implementation in Twenty Twenty:
html {
scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
}
Developers are able to remove scroll-behavior
effect on specific elements by using a class CSS selector, as follows:
.disable-smooth-scrolling {
scroll-behavior: auto;
}
For reference, see the related changeset in 5.3.1 branch.
#5-3-1, #accessibility, #bundled-theme, #core-css, #dev-notes, #twentytwenty