Commit:    6c8c2aa18c4a691b54f58b389c349a6d089c82e0
Author:    Markus Staab <[email protected]>         Tue, 25 Aug 2020 
15:01:53 +0200
Committer: Peter Cowburn <[email protected]>      Tue, 25 Aug 2020 16:38:31 +0100
Parents:   69e43607aa49a54c685db6891d8537e67502e1c2
Branches:  master

Link:       
http://git.php.net/?p=web/php.git;a=commitdiff;h=6c8c2aa18c4a691b54f58b389c349a6d089c82e0

Log:
enable css-native smooth scrolling

remove javascript scroll magic

add a top-margin to all elements which get referenced by anchor-urls, so they 
are not covered by the fixed header

Changed paths:
  M  js/common.js
  M  styles/theme-base.css


Diff:
diff --git a/js/common.js b/js/common.js
index 90b52f315..8813243a7 100644
--- a/js/common.js
+++ b/js/common.js
@@ -23,79 +23,6 @@ var PHP_NET = {};
 
 PHP_NET.HEADER_HEIGHT = 52;
 
-/**
- * Scrolls the page so that the given element will be shown into view.
- *
- * @param HTMLElement element The element to show.
- * @param Number animationDuration Animation duration in milliseconds. 
Defaults to 400ms.
- * @param Function callback Function to execute after the animation is 
complete.
- * @return void
- */
-PHP_NET.scrollElementIntoView = function (element, animationDuration, 
callback) {
-    animationDuration = animationDuration || 400;
-    var destTop = $(element).offset().top - PHP_NET.HEADER_HEIGHT;
-    var callbackCalled = false;
-    // Online sources claim that some browsers scroll body, others scroll html
-    // so we scroll both for compatibility. However, the callback function is
-    // called for each element so the callback function will trigger twice,
-    // once for html and once for body. This is why we track whether the
-    // callback has been called to prevent multiple executions.
-    $("html, body").animate(
-        {scrollTop: destTop},
-        animationDuration,
-        function () {
-            if (!callbackCalled) {
-                callbackCalled = true;
-                callback();
-            }
-        }
-    );
-};
-
-/**
- * Enables "smooth scrolling to page anchor" for page <a> links.
- */
-document.body.addEventListener("click", function (e) {
-    if (e.target && e.target.nodeName === "A") {
-        var href = e.target.getAttribute("href");
-        if (href && href[0] === "#") {
-            var id = href.slice(1);
-            var target = document.getElementById(id);
-            // temporarily remove the id="" attribute so that the UA's
-            // default scrolling is prevented
-            target.id = "";
-            if (target) {
-                PHP_NET.scrollElementIntoView(target, null, function () {
-                    // restore the id="" attribute
-                    target.id = id;
-                });
-            }
-        }
-    }
-});
-
-/**
- * Enables "smooth scrolling to page anchor" when page was just loaded.
- */
-document.addEventListener("DOMContentLoaded", function () {
-    var target = (location.hash
-        ? document.getElementById(location.hash.slice(1))
-        : null
-    );
-    if (target) {
-        // temporarily remove the id="" attribute so that the UA's default
-        // scrolling is prevented
-        var id = target.id;
-        target.id = "";
-        window.addEventListener("load", function () {
-            PHP_NET.scrollElementIntoView(target, null, function() {
-                // restore the id="" attribute to the element
-                target.id = id;
-            });
-        });
-    }
-});
-
 Mousetrap.bind('up up down down left right left right b a enter', function() {
         $(".brand img").attr("src", "/images/php_konami.gif");
 });
diff --git a/styles/theme-base.css b/styles/theme-base.css
index 79423cbee..5a55a0815 100644
--- a/styles/theme-base.css
+++ b/styles/theme-base.css
@@ -54,6 +54,7 @@ html {
   font-size: 100%;
   -webkit-text-size-adjust: 100%;
   -ms-text-size-adjust: 100%;
+  scroll-behavior: smooth;
 }
 a {
   border-bottom:1px solid;
@@ -1528,6 +1529,11 @@ div.soft-deprecation-notice blockquote.sidebar {
   body {
     margin:3.25rem 0 0;
   }
+  /* add a top-margin to all elements which get referenced by anchor-urls, so 
they are not covered by the fixed header */
+  [id] {
+    scroll-margin-top: 3.25rem;
+  }
+
   #breadcrumbs {
     display:block;
   }


--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to