In letzter Zeit habe ich einige Websites gesehen, die eine Art von Anzeiger haben, um die aktuelle Leseposition anzuzeigen (wie viel Sie "gelesen" haben, je nachdem, wie weit Sie nach unten auf einen Artikel gescrollt sind). Im Allgemeinen werden solche Anzeiger auf Blog-Posts oder langen Artikeln verwendet und helfen den Lesern zu verstehen, wie weit sie davon entfernt sind, den Artikel zu beenden.
Hier sind einige Beispiele

1) Stammys Blog verwendet eine rote Fortschrittsleiste
2) Ben Frains Website zeigt die verbleibenden Wörter an
3) Information Architects zeigt "Minuten übrig" an, um die aktuelle Leseposition anzuzeigen.
Interessanterweise stellen alle drei Techniken dieselbe Information dar, jedoch mit einem anderen Ansatz. Ich weiß nicht, ob diese Funktion einen Namen hat – daher nenne ich sie im gesamten Artikel **Leseposition-Anzeiger**.
In diesem Artikel konzentrieren wir uns auf die erste Technik, die eine horizontale Fortschrittsleiste als Anzeiger verwendet. Anstatt jedoch traditionelle div/span(s) und nichtlineare Mathematik zu verwenden, um den Anzeiger zu erstellen, verwenden wir das HTML5-Fortschrittselement. Meiner Meinung nach ist dies semantisch genauer und besser geeignet, diese Information darzustellen, und das ganz ohne komplexe Berechnungen.
Wenn Sie das HTML5-Fortschrittselement noch nie zuvor verwendet haben, empfehle ich Ihnen dringend, meinen Artikel auf CSS-Tricks zu lesen, der Ihnen eine Einführung gibt, wie Sie dieses Element in Ihrem Markup verwenden und es per CSS so browserübergreifend wie möglich mit ordentlichen Fallback-Techniken gestalten.
Das Problem
Um einen Leseposition-Anzeiger zu erstellen, müssen wir zwei wichtige Fragen beantworten
- Wie lang ist die Webseite? Die Länge der Webseite ist gleich der Länge des Dokuments, die per JavaScript berechnet werden kann.
- Was ist die aktuelle Leseposition des Benutzers? Die aktuelle Leseposition des Benutzers zu ermitteln, würde erfordern, in den Verstand des Benutzers einzudringen, um den Teil des Dokuments zu extrahieren, den der Benutzer gerade liest. Das erscheint eher als ein Kandidat für künstliche Intelligenz und scheint angesichts des Umfangs der von uns behandelten Technologien unmöglich.
Dies lässt uns keine andere Wahl, als dieses Problem mit einem völlig anderen Ansatz anzugehen.
Prinzip
Das Prinzip hinter dieser Technik basiert auf der einfachen Tatsache, dass der Benutzer scrollen muss, um das Ende der Webseite zu erreichen. Sobald der Benutzer das Ende der Webseite erreicht hat, können wir schlussfolgern, dass er/sie den Artikel beendet hat. Unsere Technik dreht sich um das Scroll-Ereignis, das wahrscheinlich der Schlüssel zur Bestimmung einer ungefähren Position des Benutzers beim Lesen ist.
Unter der Annahme, dass der Benutzer von oben beginnt und erst scrollt, wenn er/sie das Ende des Viewports erreicht hat, werden wir versuchen, die folgenden Fragen zu beantworten
- Wie viel muss der Benutzer scrollen, um das Ende der Webseite zu erreichen? Der Teil der Seite, der vom Viewport verborgen ist, ist genau der Scroll-Betrag, den der Benutzer ausführen muss, um das Ende der Seite zu erreichen. Dies wird unser
max-Attribut. - Wie viel vom Seiteninhalt hat der Benutzer bereits gescrollt? Dies kann ermittelt werden, indem der vertikale Offset der Oberseite des Dokuments von der Oberseite des Fensters berechnet wird, was unser
value-Attribut wird.

Im Kontext des Browsers sind document und window zwei verschiedene Objekte. window ist der sichtbare Bereich des Browsers (dicker blauer Kasten im obigen Beispiel) und das Dokument ist tatsächlich die Seite, die im Fenster geladen wird (dünner grauer Kasten, der gerade gescrollt wird).
Markup
Beginnen wir mit einem einfachen Markup
<progress value="0"></progress>
Es ist wichtig, das value-Attribut explizit anzugeben. Andernfalls befindet sich unsere Fortschrittsleiste im unbestimmten Zustand. Wir möchten keine unnötigen Stile in CSS für den unbestimmten Zustand hinzufügen. Daher entscheiden wir uns, diesen Zustand durch Angabe des value-Attributs zu ignorieren. Anfangs beginnt der Benutzer mit dem Lesen von oben, daher ist der Anfangswert im Markup auf 0 gesetzt. Der Standardwert des max-Attributs (falls nicht angegeben) ist 1.
Um den korrekten Wert für das max-Attribut zu ermitteln, müssen wir die Höhe des Fensters von der Höhe des Dokuments subtrahieren. Dies kann nur per JavaScript erfolgen, daher kümmern wir uns später darum.
Die Platzierung des Markups im HTML-Dokument hängt stark davon ab, wie die übrigen Elemente platziert sind. Wenn Sie in Ihrem Dokument keine Elemente mit fester Position haben, können Sie das Fortschrittselement direkt über allen anderen Elementen innerhalb des -Tags platzieren.
<body>
<progress value="0"></progress>
<!--------------------------------
Place the rest of your markup here
--------------------------------->
</body>
Gestaltung des Anzeigers
Da wir möchten, dass unser Anzeiger immer auf der Webseite verbleibt, auch wenn der Benutzer scrollt, werden wir das Fortschrittselement als fixed positionieren. Zusätzlich möchten wir, dass der Hintergrund unseres Anzeigers transparent ist, damit eine leere Fortschrittsleiste beim Scrollen durch die Webseite keine visuelle Beeinträchtigung darstellt. Gleichzeitig hilft uns dies auch bei Browsern mit deaktiviertem JavaScript, was wir später behandeln werden.
progress {
/* Positioning */
position: fixed;
left: 0;
top: 0;
/* Dimensions */
width: 100%;
height: 5px;
/* Reset the appearance */
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
/* Get rid of the default border in Firefox/Opera. */
border: none;
/* Progress bar container for Firefox/IE10+ */
background-color: transparent;
/* Progress bar value for IE10+ */
color: red;
}
Für Blink/Webkit/Firefox müssen wir browserspezifische Pseudo-Elemente verwenden, um den Wert innerhalb der Fortschrittsleiste zu gestalten. Dies wird verwendet, um unserem Anzeiger Farbe zu verleihen.
progress::-webkit-progress-bar {
background-color: transparent;
}
progress::-webkit-progress-value {
background-color: red;
}
progress::-moz-progress-bar {
background-color: red;
}
Interaktion
Die Berechnung der Breite/Höhe von Fenster und Dokument in JavaScript ist umständlich und variiert stark zwischen verschiedenen Browsern. Glücklicherweise abstrahiert jQuery all die Komplexität, die diese Browser bieten, und bietet einen wesentlich saubereren Mechanismus zur Berechnung der Fenster- und Dokumentdimensionen. Daher werden wir uns für den Rest des Artikels auf jQuery verlassen, um alle unsere Interaktionen mit dem Benutzer zu verwalten.
Vergessen Sie nicht, die jQuery-Bibliothek zu Ihrem Dokument hinzuzufügen, bevor wir beginnen.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
Wir benötigen jQuery, um das max- und das value-Attribut unseres Fortschrittselements zu ermitteln.
- max – Der
max-Wert ist der Teil des Dokuments, der sich außerhalb des Viewports befindet und durch Subtraktion der Fensterhöhe von der Dokumenthöhe berechnet werden kann.var winHeight = $(window).height(), docHeight = $(document).height(); max = docHeight - winHeight; $("progress").attr('max', max); - value – Anfangs ist
valueNull (bereits im Markup definiert). Sobald der Benutzer jedoch zu scrollen beginnt, erhöht sich der vertikale Offset der Oberseite des Dokuments von der Oberseite des Fensters. Wenn sich die Scrollleiste ganz oben befindet oder das Element nicht scrollbar ist, beträgt der Offset0.var value = $(window).scrollTop(); $("progress").attr('value', value);
document in $(document).height() zu verwenden, können wir andere Elemente wie section, article oder div verwenden, die den Inhalt des Artikels enthalten, um die Höhe zu berechnen und dem Benutzer eine genauere Darstellung des Leseposition-Anzeigers zu bieten. Dies ist sehr nützlich, wenn Sie einen Blogbeitrag haben, der mit Kommentaren gefüllt ist und mehr als 50 % des eigentlichen Artikels ausmacht.Jedes Mal, wenn der Benutzer scrollt, müssen wir den y-Offset vom oberen Fensterrand neu berechnen und ihn dann dem value-Attribut des Fortschrittselements zuweisen. Beachten Sie, dass das max-Attribut gleich bleibt und sich beim Scrollen des Benutzers nicht ändert.
$(document).on('scroll', function() {
value = $(window).scrollTop();
progressBar.attr('value', value);
});
Die Richtung, in der der Benutzer scrollt, ist nicht wichtig, da wir den y-Offset immer vom oberen Fensterrand berechnen.
Es ist wichtig, dass unser Code nur ausgeführt wird, wenn das DOM geladen ist, da eine vorzeitige Berechnung der Fenster-/Dokumenthöhe zu seltsamen und unvorhersehbaren Ergebnissen führen kann.
$(document).on('ready', function() {
var winHeight = $(window).height(),
docHeight = $(document).height(),
progressBar = $('progress'),
max, value;
/* Set the max scrollable area */
max = docHeight - winHeight;
progressBar.attr('max', max);
$(document).on('scroll', function(){
value = $(window).scrollTop();
progressBar.attr('value', value);
});
});
(Oder stellen Sie sicher, dass dieser Code am Ende der Seite geladen wird und überspringen Sie den Document-Ready-Aufruf.)
Browserkompatibilität
Das ist alles, was wir brauchen, um einen funktionierenden Leseposition-Anzeiger zu erstellen, der in allen Browsern, die das HTML5-Fortschrittselement unterstützen, gut funktioniert. Die Unterstützung ist jedoch auf **Firefox 16+, Opera 11+, Chrome, Safari 6+** beschränkt. **IE10+** unterstützt sie teilweise. **Opera 11** und **12** erlauben keine Farbänderung der Fortschrittsleiste. Daher spiegelt unser Anzeiger die standardmäßige grüne Farbe wider.
Varianten
Es gibt einige Variationen, wie wir den Anzeiger gestalten können. Insbesondere das semantische Farbschema (vierte Variante) ist ein nützliches Experiment, bei dem sich der Anzeiger basierend auf der Nähe der Leseposition zum Ende des Artikels ändert.
- Flaches Farbschema (Standard)
- Einfarbiger Verlauf
- Mehrfarbiger Verlauf
- Semantisches Farbschema
Randfälle
Es gibt einige Szenarien, in denen unser Code potenziell brechen oder dem Benutzer einen falschen Anzeiger präsentieren kann. Betrachten wir diese Randfälle
Dokumenthöhe <= Fensterhöhe
Bisher geht unser Code davon aus, dass die Höhe des Dokuments größer ist als die Höhe des Fensters, was nicht immer der Fall sein mag. Glücklicherweise verhalten sich Browser in dieser Situation sehr gut, indem sie die Höhe des Fensters zurückgeben, wenn das Dokument sichtbar kürzer als das Fenster ist. Daher sind docHeight und winHeight identisch.
max = docHeight - winHeight; // equal to zero.
Dies ist so gut wie eine Fortschrittsleiste mit max- und value-Attributen von Null.
<progress value="0" max="0"></progress>
Daher bleibt unsere Fortschrittsleiste leer und da unser Hintergrund transparent ist, gibt es keinen Anzeiger auf der Seite. Das ist sinnvoll, denn wenn die gesamte Seite in den Viewport passt, gibt es wirklich keinen Bedarf für einen Anzeiger.
Außerdem wird das Scroll-Ereignis überhaupt nicht ausgelöst, da die Dokumenthöhe die Fensterhöhe nicht überschreitet. Daher ist unser Code ohne Änderungen robust genug, um diesen Randfall zu behandeln.
Benutzer ändert die Fenstergröße
Wenn der Benutzer das Fenster vergrößert, ändern sich die Höhe des Fensters und des Dokuments. Das bedeutet, dass wir die Attribute max und value neu berechnen müssen, um die richtige Position des Anzeigers widerzuspiegeln. Wir binden den Code, der die richtige Position berechnet, an den Resize-Event-Handler.
$(window).on('resize', function() {
winHeight = $(window).height(),
docHeight = $(document).height();
max = docHeight - winHeight;
progressBar.attr('max', max);
value = $(window).scrollTop();
progressBar.attr('value', value);
});
Javascript ist deaktiviert
Wenn JavaScript deaktiviert ist, hat unsere Fortschrittsleiste den Standardwert value als 0 und max als 1.
<progress value="0" max="1"></progress>
Das bedeutet, dass die Fortschrittsleiste leer bleibt und keinen Teil der Seite beeinträchtigt. Das ist in Ordnung, denn eine Seite ohne Anzeiger ist für den Leser kein großer Verlust.
Fallback für ältere Browser
Ältere Browser, die das HTML5-Fortschrittselement nicht unterstützen, ignorieren das progress-Tag einfach. Für einige Entwickler ist jedoch eine konsistente Benutzererfahrung wichtig. Daher werden wir im folgenden Abschnitt die gleiche Fallback-Technik anwenden, die in meinem vorherigen Artikel verwendet wurde, um den Leseposition-Anzeiger für ältere Browser zu implementieren.
Markup – Die Idee ist, das Aussehen und Gefühl des Fortschrittselements mit div/span(s) zu simulieren. Moderne Browser rendern das progress-Element und ignorieren den Inhalt darin, während ältere Browser, die das progress-Element nicht verstehen, es ignorieren und stattdessen den Inhalt darin rendern.
<progress value="0">
<div class="progress-container">
<span class="progress-bar"></span>
</div>
</progress>
Styling – Der Container erstreckt sich immer über die gesamte Breite der Webseite und der Hintergrund bleibt transparent, um andere Randfälle zu behandeln.
.progress-container {
width: 100%;
background-color: transparent;
position: fixed;
top: 0;
left: 0;
height: 5px;
display: block;
}
.progress-bar {
background-color: red;
width: 0%;
display: block;
height: inherit;
}
Interaktion – Zuerst müssen wir Browser trennen, die das progress-Element nicht unterstützen, von Browsern, die es unterstützen. Dies kann entweder mit nativem JavaScript erreicht werden oder Sie können Modernizr verwenden, um das Feature zu testen.
if ('max' in document.createElement('progress')) {
// Progress element is supported
} else {
// Doesn't support the progress element. Put your fallback code here.
}
Die Eingaben bleiben gleich. Aber zusätzlich zur Ermittlung des Werts müssen wir die Breite der .progress-bar in Prozent berechnen.
winHeight = $(window).height();
docHeight = $(document).height();
max = docHeight - winHeight;
value = $(window).scrollTop();
width = (value/max) * 100;
width = width + '%';
$('.progress-bar').css({'width': width});
Nachdem wir alle Randfälle untersucht haben, können wir den Code refaktorieren, um doppelte Anweisungen zu entfernen und ihn DRY-er zu machen.
$(document).ready(function() {
var getMax = function(){
return $(document).height() - $(window).height();
}
var getValue = function(){
return $(window).scrollTop();
}
if ('max' in document.createElement('progress')) {
// Browser supports progress element
var progressBar = $('progress');
// Set the Max attr for the first time
progressBar.attr({ max: getMax() });
$(document).on('scroll', function(){
// On scroll only Value attr needs to be calculated
progressBar.attr({ value: getValue() });
});
$(window).resize(function(){
// On resize, both Max/Value attr needs to be calculated
progressBar.attr({ max: getMax(), value: getValue() });
});
} else {
var progressBar = $('.progress-bar'),
max = getMax(),
value, width;
var getWidth = function() {
// Calculate width in percentage
value = getValue();
width = (value/max) * 100;
width = width + '%';
return width;
}
var setWidth = function(){
progressBar.css({ width: getWidth() });
}
$(document).on('scroll', setWidth);
$(window).on('resize', function(){
// Need to reset the Max attr
max = getMax();
setWidth();
});
}
});
Performance
Im Allgemeinen gilt es als schlechte Praxis, Handler an das Scroll-Ereignis zu binden, da der Browser versucht, den erscheinenden Inhalt jedes Mal neu zu rendern, wenn Sie scrollen. In unserem Fall sind die DOM-Struktur und die darauf angewendeten Stile einfach, daher würden wir beim Scrollen keinen Lag oder spürbare Verzögerung beobachten. Wenn wir jedoch die Skala, auf der dieses Feature implementiert werden kann, auf Websites mit komplexen DOM-Strukturen und ausgefallenen Stilen erhöhen, kann das Scroll-Erlebnis ruckelig werden und die Leistung leiden.
Wenn die Scroll-Leistung wirklich zu einem großen Problem für Sie wird, können Sie entweder dieses Feature komplett entfernen oder versuchen, Ihren Code zu optimieren, um unnötige Neuzeichnungen zu vermeiden. Ein paar nützliche Artikel, um Ihnen den Einstieg zu erleichtern
- John Resig über Lernen von Twitter.
- Scroll-Leistung von Paul Lewis.
Mehrdeutigkeit
Ich bin kein UX-Experte, aber in einigen Fällen können die Position und das Aussehen unseres Anzeigers mehrdeutig sein und den Benutzer potenziell verwirren. Ajax-gesteuerte Websites wie Medium, Youtube usw. verwenden eine ähnliche Fortschrittsleiste, um den Ladezustand der nächsten Seite anzuzeigen. Chrome für Mobilgeräte verwendet nativ eine blaue Fortschrittsleiste für den Webseiten-Loader. Wenn Sie nun den Leseposition-Anzeiger in diesen Rahmen einfügen, bin ich sicher, dass ein durchschnittlicher Benutzer Schwierigkeiten haben wird zu verstehen, was die Fortschrittsleiste am oberen Rand der Seite wirklich bedeutet.

Sie müssen selbst entscheiden, ob die Verwendung dieser Funktion für Ihre Benutzer von Vorteil ist oder nicht.
Vorteile
- Semantisch korrekt.
- Keine Mathematik oder komplexe Berechnungen erforderlich.
- Minimaler Markup-Aufwand.
- Nahtloser Fallback für Browser ohne Unterstützung für das HTML5-Fortschrittselement.
- Nahtloser Fallback für Browser mit deaktiviertem JavaScript.
Nachteile
- Browserübergreifendes Styling ist komplex.
- Der Fallback für ältere Browser basiert auf der traditionellen
div/span(s)-Technik, was den gesamten Code aufbläht. - Scroll-Hijacking kann die FPS auf Webseiten mit komplexer DOM-Struktur und ausgefallenen Stilen potenziell reduzieren.
- Es kollidiert mit der Fortschrittsleiste, die zur Anzeige des Seitenladens verwendet wird, und kann Benutzer verwirren.
Das ist sehr cool und ich bin froh, einige neue Dinge aus diesem detaillierten und gut geschriebenen Artikel gelernt zu haben.
Aber erfüllen die nativen Browser-Scrollleisten nicht denselben Zweck als ihre sekundäre Funktion? ))
Ja, das tun sie :-) Allerdings handelt dieser Artikel nicht davon, ob der Anzeiger die Scrollleisten ersetzen kann oder nicht, sondern eher davon, ob es einen besseren Weg gibt, diese Funktion in modernen Browsern zu implementieren, wenn sie benötigt wird.
Wie in Mikes Kommentar unten erwähnt, ist dies aufgrund von Blog-Kommentaren, die einen großen Teil der Bildschirmhöhe einnehmen, nützlich, sodass die Scrollleiste den Artikel länger erscheinen lässt, als er tatsächlich ist.
Scrollleisten geben Ihnen einen Hinweis darauf, wo Sie sich auf der *Seite* befinden, aber dies gibt Ihnen eine Möglichkeit anzuzeigen, wo Sie sich im *Inhalt* befinden. Was nützlich ist, da ich manchmal einen Artikel sehe und die 300+ Kommentare am Ende des Artikels mir den ersten Eindruck vermitteln, dass ich mich auf etwas Gigantisches einlasse. Niemand hat Zeit dafür. Aber dies gibt dem Leser ein genaueres Gefühl dafür, worauf er sich einlässt.
Zu guter Letzt, um sicherzugehen, versuchen Sie, ein Skript hinzuzufügen, das auf eine lokale Kopie von jQuery zurückgreift, falls Google ausfällt
<script>window.jQuery || document.write(‘<script src=”js/jquery-1.11.0.min.js”><\/script>’);</script>
—
PS: Markdown mochte diesen Code weder inline noch als Block, daher musste ich ihn als Klartext hinzufügen.
Toller Artikel – danke!
Discourse hat eine ähnliche Funktion. Wenn ich ein Thema ansehe (zumindest in einem Desktop-Browser), kann ich eine Fortschrittsanzeige am unteren Rand des Viewports sehen.
https://meta.discourse.org/t/welcome-to-meta-discourse-org/1
Hier ist ein weiteres Beispiel: mein Blog (italienische Artikel). http://akow.co/tic-tac-panda
Eine kleine Fortschrittsleiste erscheint am unteren Rand des Fensters, wenn Sie sich im Haupttextteil des Artikels befinden, und repräsentiert die verbleibende Scrollmenge bis zum Ende des Textes. Als Bonus merkt sich die Seite auch, wo Sie beim Zurückkehren zum Artikel aufgehört haben zu lesen.
Es ist sehr einfaches und schnelles Vanilla JS (http://s.akow.co/script.js) und es ist nicht optimiert oder für ältere Browser getestet, da ich kein Interesse daran hatte, meinen Blog auf alten Geräten zum Laufen zu bringen.
Vielleicht bin ich wirklich dumm, und ich habe den Artikel nur überflogen, aber...
Ist es nicht das, was die Scrollleiste tut?
Okay, nach weiterem Nachdenken sehe ich, dass dies aufgrund von Blog-Kommentaren, die einen großen Teil der Bildschirmhöhe einnehmen, einen gewissen Nutzen hat, sodass die Scrollleiste den Artikel länger erscheinen lässt, als er tatsächlich ist.
Eine einfachere Lösung wäre, Kommentare auf Anfrage anzuzeigen, was es Ihnen auch ermöglichen würde, die Kommentare (einschließlich Avatare) per Lazy Loading zu laden und die Leistung zu verbessern.
Die Version "673 Wörter übrig" ist interessant.
Ja! Da haben Sie Recht. Es gibt viele Möglichkeiten, dieses Szenario zu handhaben, und das Laden der Kommentare per AJAX, sobald der Benutzer das Ende der Webseite erreicht, ist eine davon.
Deshalb haben wir erwähnt, dass der Entwickler eine bewusste Entscheidung treffen muss, ob er diese Funktion auf seiner Website verwenden möchte oder nicht.
Wenn Sie sich Sorgen machen, zu oft komplizierte Ereignisse auszulösen, würde dann nicht die Verwendung von etwas wie setInterval() den Zweck erfüllen? Zugegeben, Sie hätten nicht die *sofortige* Interaktion, die die Methode des Artikels bietet, aber bei normalen Lesegeschwindigkeiten, kombiniert mit einer sanften Animation, denken Sie nicht, dass das Aktualisieren der Fortschrittsleiste alle 500 ms oder so mehr als genug wäre?
Genau das wurde von John Resig in seinem Artikel über Lernen von Twitter vorgeschlagen, der am Ende dieses Artikels als Referenz für mögliche Wege zur Verbesserung der Scroll-Leistung aufgeführt ist.
underscope hat zwei Methoden, debounce und throttle, zur Verbesserung der Scroll-Leistung bereitgestellt.
Es wäre vielleicht interessanter, den Leseposition-Anzeiger als visualisierten Prozentsatz des Scroll-Offsets im Verhältnis zur tatsächlichen Artikel-Länge darzustellen, wobei Kommentare, Footer und andere Dinge vollständig ausgeschlossen sind. Andernfalls replizieren Sie nur die Browser-Scrollleiste ohne die tatsächliche Funktionalität, die eine Scrollleiste bietet. Leseposition impliziert Position relativ zum Inhalt, nicht zur Seitenlänge.
Sehr gut detaillierter Artikel. Ich sollte das ausprobieren. Danke fürs Teilen.
Ich liebe diese Idee. Persönlich mag ich keine Blogs, bei denen Kommentarbereiche einen großen Teil der Seitenhöhe einnehmen. (In vielen Fällen nehmen Kommentare ein Vielfaches der Seitenhöhe des Inhalts selbst ein.) Ich möchte wissen, worauf ich mich wirklich einlasse, und die relative Position der Scrollleiste hilft in dieser Situation nicht. (Auf Mobilgeräten gibt es nicht einmal eine sichtbare Scrollleiste.)
Ich persönlich hoffe, dass dieser "Mini-Trend" in irgendeiner Form aufkommt. Ich mag auch die Idee, Benchmarks auf der Fortschrittsleiste zu setzen (wie bei Hulu-Videos), die zu allen Überschriften im Beitrag verlinken (falls das Sinn macht). Mit etwas JS sollte das leicht zu realisieren sein.
Ich habe gesehen, dass diese in letzter Zeit immer häufiger vorkommen. Ich persönlich finde sie visuell ablenkend, besonders wenn sie in einer stark kontrastierenden Farbe gehalten sind, da sie meine Augen ständig nach oben auf den Bildschirm ziehen. Ich glaube, die Kosten überwiegen den Nutzen – zumindest für die meisten Websites – und dass sie eher zu einem überflüssigen Gimmick als zu einer nützlichen Funktion werden. Ich würde stattdessen die Wortanzahl oder die geschätzte Lesezeit direkt über den Artikeln bevorzugen – für Nicht-Techniker leichter zugänglich und weitaus weniger ablenkend.
Schöne Methode zur Berechnung der Seitenlänge. Aber sie funktioniert nicht gut, wenn viele Bilder in Ihrem Inhalt enthalten sind. Bilder können eine Weile zum Laden benötigen, und die Höhe und Breite der Bilder können die Gesamthöhe des Inhalts beeinflussen. Die Verwendung eines externen Plugins wie imagesLoaded könnte Ihnen dabei helfen, ansonsten könnten Sie allen Ihren Bildern eine Breite und Höhe zuweisen.
Ich habe tatsächlich schon einmal versucht, etwas Ähnliches zu schreiben, das alle Abschnitte einer Seite zusammenklappen würde, außer dem, der gerade gelesen wird, und sie automatisch erweitern würde, wenn die Überschriften in einen Triggerbereich des Browserfensters geraten. Es gab keinen visuellen Indikator, aber es ist schön zu wissen, dass es eine gute Idee war. Trotzdem danke für diesen Artikel, ich werde diese Tipps sicherlich in Zukunft nutzen!
hihihi :D
Wie man einen Seiten-Scroll-Fortschrittsanzeiger mit jQuery und SVG erstellt
Das allererste Bild links („roter Fortschrittsbalken“) – ich dachte wirklich, Sie würden darüber sprechen – http://github.hubspot.com/pace/docs/welcome/ das hat mich begeistert, aber dann habe ich gemerkt, dass es anders ist ;) Toller Artikel!
Der Artikel spricht tatsächlich über die Website-Ladeleiste, was pace.js im Abschnitt Ambiguität ist. Aber leider geht es in diesem Artikel nicht weiter.
Vielen Dank für diesen Artikel!
Noch etwas: Was ist mit dem Trend des Infinite-Scrollings?
Die Verwendung dieser Art von Anzeige wird in diesem Fall nutzlos. Nicht wahr?
Interessanter Gedanke! Aber Infinite Scroll wird selten im Kontext eines Blogbeitrags oder langer Artikel verwendet. Selbst wenn, wer möchte schon einen endlosen Artikel lesen? :-)
Kurz gesagt, dies wäre nutzlos, aber die Verwendung von Infinite Scroll für Artikel wird ebenfalls nicht empfohlen!
Ja, da haben Sie Recht. Vielen Dank für Ihre Antwort.
Was ist mit Disqus oder asynchron geladenen Kommentaren?
Ok ok, ich bin kleinlich :p
Schönen Sonntag noch.
Denk nicht nach.
Das ist so etwas wie ein Gebot im Webdesign. Ich muss zugeben, dass ich oft mit neuen Ideen experimentiere, nur um herauszufinden, wozu sie gut sind und wozu sie gemacht sind.
Wie auch immer, ich bleibe bei Scrollbalken und, nun ja, kurzen Inhalten. Das lässt sie nicht nachdenken. Benutzer sind der grausamste Teil unseres Lebens, aber schließlich sind es sie, die unser Einkommen bezahlen. Füttern Sie sie mit dem, was sie kennen. Sie können versuchen, es cool aussehen zu lassen, aber es muss sich wie derselbe alte langweilige Kram anfühlen, mit dem sie gefüttert wurden, als sie aufwuchsen.
Ziemlich cool! Und auch sehr einfach zu implementieren.
Ich glaube, Android-Browser implementieren dieses Verhalten, um den Downloadfortschritt einer Seite anzuzeigen.
Ich habe bemerkt, dass die Größenänderung des Browsers die Funktionalität beeinträchtigt.
Coole Idee. Ich habe eine Vanilla-JavaScript-Version davon erstellt: http://github.com/jeremenichelli/scrollProgress und sie ist IE9+.