mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-12-18 02:15:56 +01:00
Fix jittery scroll bouncing
This commit is contained in:
parent
fc7fb28edb
commit
02915210f4
File diff suppressed because one or more lines are too long
@ -24,7 +24,7 @@
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Mono:400">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
<link rel="stylesheet" href="{{ base_url }}/assets/stylesheets/application-a65065dc36.css">
|
||||
<link rel="stylesheet" href="{{ base_url }}/assets/stylesheets/application-d7ccfc4ec2.css">
|
||||
{% for path in extra_css %}
|
||||
<link rel="stylesheet" href="{{ path }}">
|
||||
{% endfor %}
|
||||
|
@ -37,6 +37,10 @@ class Sidebar {
|
||||
constructor(el) {
|
||||
this.el_ = (typeof el === 'string') ? document.querySelector(el) : el;
|
||||
|
||||
/* Grab inner and outer container */
|
||||
this.inner_ = this.el_.parentNode;
|
||||
this.outer_ = this.el_.parentNode.parentNode;
|
||||
|
||||
/* Initialize parameters */
|
||||
this.height_ = 0;
|
||||
this.locked_ = false;
|
||||
@ -53,8 +57,8 @@ class Sidebar {
|
||||
* @param {Event} ev - Event
|
||||
*/
|
||||
update(ev) {
|
||||
let container = this.el_.parentNode;
|
||||
let bounds = container.getBoundingClientRect();
|
||||
let bounds = this.inner_.getBoundingClientRect();
|
||||
let parent = this.outer_.offsetTop;
|
||||
|
||||
/* Determine top and bottom offsets */
|
||||
let top = bounds.top + window.pageYOffset,
|
||||
@ -67,14 +71,14 @@ class Sidebar {
|
||||
/* Calculate new bounds */
|
||||
let offset = top - upper;
|
||||
let height = window.innerHeight - Math.max(lower - bottom, 0)
|
||||
- Math.max(offset, container.parentNode.offsetTop);
|
||||
- Math.max(offset, parent);
|
||||
|
||||
/* If height changed, update element */
|
||||
if (height != this.height_)
|
||||
this.el_.style.height = (this.height_ = height) + 'px';
|
||||
|
||||
/* Sidebar should be locked, as we're below parent offset */
|
||||
if (offset < container.parentNode.offsetTop) {
|
||||
if (offset < parent) {
|
||||
if (!this.locked_) {
|
||||
this.el_.classList.add('md-js__sidebar--locked');
|
||||
this.locked_ = true;
|
||||
|
Loading…
Reference in New Issue
Block a user