Reading/Web/Desktop Improvements/Features/Sticky Header

As a part of the Desktop Improvements project, we will change the commonly used tools which have previously been available only at the top of the page. The new functionality will allow access to these tools throughout the page via a “sticky” or “fixed” header. Our goal is to make it easier for readers and editors to access these tools. We realize that now, they frequently need to scroll all the way to the top of the page.

Background and GoalsEdit

Currently, many functionalities on wiki pages are only available to users at the top of the page, and/or on the left panel of the page. This becomes problematic on longer pages, when scrolling past the first few paragraphs means the user would need to scroll back up to access the tools and other resources again. Our proposed method of addressing this is to make the site header “sticky”. This means it stays fixed to the top of the screen (above the content) as you scroll up or down the page.

In addition, we currently offer very little in-page orientation to our readers and contributors. This makes it difficult to distinguish between one page and another.

Our goal is to:

  • Provide both functionality and context throughout the page.
  • Reduce the time readers and editors spend scrolling up and down the page for navigational purposes.

Use casesEdit

  • As a reader, I want to know what article I’m reading at all times, so that I can easily orient myself within the site.
  • As an editor, I want the ability to access important functionality (e.g. edit, go to the history page or the talk page of the article) from anywhere in the page, so that I do not waste time when scrolling up.
  • As a multilingual reader, I want the ability to switch languages at any point of my reading, so that I can switch directly after I find a confusing word or sentence.

Feature description and requirementsEdit

A sticky/fixed header will appear at the top of the page once a user scrolls past the current header on the page.

  • For anonymous users, the header will contain the following:
    • Wiki logo
    • Search
    • Page name
    • Section name
  • For logged-in users, the header will contain the following:
    • Wiki logo
    • User tools menu (see user tools page)
    • Search
    • Page name
    • Section name
    • Link to talk page
    • Link to history page
    • Link to source and/or edit (following the preferences of the wikis itself)
    • Language switching functionality

The scrolling behavior of the header must adapt to the needs of logged-in users

  • Note: we are currently testing a variety of scrolling and triggering behavior including allowing the header to appear upon scrolling up the page and when switching tabs. We will also be exploring displaying the header in a persistent manner

The header must be adaptable at lower screen resolutions (down to 500px)

Design requirements and guidelinesEdit

PrototypeEdit

https://people.wikimedia.org/~jdrewniak/dip/p4.html#/en/wiki/Moon

Anonymous usersEdit

Note: for the first iteration of the sticky header, the header will only be available for logged-in users

 
Prototype of proposed "sticky" header functionality on Wikimedia wikis for anonymous users

Logged-in usersEdit

 
Prototype of proposed "sticky" header functionality on Wikimedia wikis for logged-in users

Qualitative testingEdit

User testingEdit

We performed user testing of the sticky header with readers and editors in three locations and languages with the goal of determining which functionality was highest priority in order to include within a sticky header. For the first iteration of the sticky header, we will be removing triggering behavior and making the sticky header persistent as per request of a number of the editors involved in the user testing. We will then evaluate the change once live. We also tested the usability of our current prototype.

The results of the test were used to iterate on the links available within the header as well as the triggering and persistent behavior of the header. See the full results of this test.

Prototype testingEdit

In May 2021, we performed prototype testing with logged-in users across 30 wikis. The test was designed to gather feedback on the usability and functionality of the sticky header and user menu.

Our preliminary results show that an overwhelming majority of test participants reported positive experience with a sticky header. Participants mentioned they enjoyed the ability to access important functionality from any part of the page.

However, a large number of participants (~20%) indicated issues with the appearance of the sticky header itself. The majority of these participants indicated that they wished for the header to appear on the page permanently rather than by a variety of triggers. Some of the participants indicated that while they enjoyed the appearance of the header on trigger, they experienced issues with the header appearing/disappearing too quickly.

As next steps, we will be reviewing the triggers that allow the header to appear and disappear. We are also planning on further experimentation with the sticky header appearing persistently on the page. These changes will be expected to appear within the first iteration of the sticky header deployed to our pilot wikis.

Quantitative testingEdit

We will be monitoring the before and after usage of the links included in the sticky header on our pilot wikis following our initial deployments. We expect to see a small but significant rise in access to some of these links, in particular, to the talk page and history page.

Integration notes for developersEdit

My templates use sticky elements. How do I get them to work with the sticky header?Edit

Add the .mw-sticky-header-element class to any elements that you want to stick to the bottom of the sticky header.

How do I add links to the sticky headerEdit

mw.util.addPortletLink('p-personal-sticky-header', '#', 'test', 'myfeatureid')
mw.util.addCSS('.mw-ui-icon-vector-gadget-myfeatureid:before { background-image: url(/w/resources/lib/ooui/themes/wikimediaui/images/icons/code.svg); }' );

See alsoEdit