Page MenuHomePhabricator

Tables do not render well under 320px
Open, MediumPublic

Description

Background

Many tables generated by wikitext are bigger than 320px. On a 320px screen, this causes the entire viewport to grow to the size of the table and can break the experience of the entire site. This stretches the search bar and makes the mobile site very unusable.

Current solution (hack)

Currently the mobile site deals with this situation by forcing the table to have width 100% and adding overflow scrolling (which is enabled by making the table a block element). This solution is not perfect as overflow-x is not fully supported across all mobile devices. To see an example of the sort of table this rule targets the table on the presidental election results page [2] provides a good example.

Side note: We may also want to make it possible for templates in the short term to opt out of the styling hack e.g. using a nohacks class

Long term solution

Ideally it should be possible for templates to define their own behaviour for tables on mobile devices.

There are various responsive tables [1] techniques but there is no one fit for all solution. Note some tables [2] do not even scale well on even desktop devices.

It should be possible for template editors to use media queries to style tables differently with the closure of the templating RFC [3] so that we can kill this table hack.

Other solutions are welcomed.

Further information/history

See T66516: table width is marked !important and T38936: Tables in mobile

[1] http://css-tricks.com/responsive-data-tables/
[2] https://en.m.wikipedia.org/wiki/List_of_United_States_presidential_election_results_by_state#section_1
[3] https://www.mediawiki.org/wiki/Requests_for_comment/Allow_styling_in_templates


Version: unspecified
Severity: normal

Details

Reference
bz64577

Related Objects

StatusAssignedTask
OpenJdlrobson
InvalidNone
ResolvedTgr
ResolvedAnomie
Resolvedtstarling
Resolvedcoren
ResolvedAnomie
StalledMhurd
ResolvedAnomie
ResolvedEsanders
ResolvedEsanders
Resolvedssastry
ResolvedAnomie
ResolvedCKoerner_WMF
Resolvedjhsoby
ResolvedTgr
DeclinedTgr
Resolvedcoren
ResolvedAnomie
ResolvedTgr
DeclinedNone
Resolvedssastry
ResolvedTgr
ResolvedTgr
ResolvedTgr
ResolvedDeskana
ResolvedCKoerner_WMF
ResolvedWhatamidoing-WMF
ResolvedTgr
ResolvedTgr
ResolvedTgr
ResolvedUrbanecm
ResolvedTgr
ResolvedTacsipacsi
ResolvedTgr
ResolvedCKoerner_WMF

Event Timeline

bzimport raised the priority of this task from to Needs Triage.Nov 22 2014, 3:14 AM
bzimport set Reference to bz64577.

Note: The existing hack makes use of !important as this is the only way to override an inline style. See also bug 64578

  • Bug 36936 has been marked as a duplicate of this bug. ***

giecrilj wrote:

(In reply to Jon from comment #1)

Note: The existing hack makes use of !important as this is the only way to
override an inline style. See also bug 64578

You start an arms race by making me declare my inline style !important too. And you have no chance of winning.

giecrilj wrote:

I can see from your description that the problem is that the flowing text on a page containing a table becomes too wide. Maybe it would be better to limit the text width and to leave the table alone?

TEXT
TEXT
TEXT

AVERYWIDETABLE

TEXT
TEXT

Created attachment 15261
When zoomed out

Attached:

Created attachment 15262
when zoomed in without the !important hack

Attached:

Which text would you limit?
I've added the above two attachments which demonstrate the effect of dropping these rules.

We could maybe considering use max-width instead.. ?

giecrilj wrote:

Yes, I thought about max-width, except that I do not want to get stung by folks who insist on supporting ancient browsers. I also understand that the scroll bars are not shown because they appear only while the page is beging scrolled. In your case I would limit the width of the header and of every single table cell (independently).

Luckily I don't care too much for ancient browsers - especially in this case as it doesn't effect readability. Luckily in mobile these are not such an issue - most mobile devices support max-width

I'm not quite sure how we'd limit each table cell independently - this would require JavaScript no? Keen to understand if I'm missing anything here...

giecrilj wrote:

I would limit the width of every leaf block. That is currently not expressible in CSS unless you classify each such block explicitly, which can be done by the HTML renderer. I was tempted to assume that a table cell width could be limited that way, except that it is theoretically possible to have a table within a table cell. (You cannot use 100% for that since it would refer to the row width, which would be self-contradictory; moreover, the row width should be allowed to be wider than the screen width, in which case the reader could use the scrolling facility provided by the document window to read the content; you should rather use the actual width of the display). The situation with tables in wikitext is alleviated by the fact that wikitext does not allow table cells to contain block elements, so ilimiting the width of a table cell would work for pages that do not use raw HTML to circumvent this limitation.

Note that all this stuff is best handled by the accasibility component of the browser, whether built-in or external intermediary; if the browser fails to implement such a rule and allows running text to be wider than the display, it is the browser's fault and not ours. But I understand that it is desirable to provide a workaround for browsers that are not so well-behaved.

I am sorry if my writing is unclear; this problem surely requires many aspects to be considered.

  • Bug 65856 has been marked as a duplicate of this bug. ***

bingle-admin wrote:

Prioritization and scheduling of this bug is tracked on Trello card https://trello.com/c/UDFKccPa

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptAug 14 2015, 11:15 PM
Jdlrobson renamed this task from Tables on mobile are a big fat mess to Tables do not render well under 320px.Sep 16 2015, 6:38 PM
Jdlrobson triaged this task as Medium priority.
He7d3r updated the task description. (Show Details)Sep 17 2015, 1:01 PM
Ltrlg added a subscriber: Ltrlg.Nov 6 2015, 5:03 PM
Jhernandez added a project: Design.
Jhernandez added subscribers: Nirzar, Jhernandez.

@Nirzar any thoughts? Is there any design input on this?

TheDJ added a subscriber: TheDJ.EditedJan 27 2017, 11:19 AM

I've been playing with a little idea for a while now.. and I now have some small JS to play this idea.

The problem with the current overflow, is that it is very hard for users to figure out that this is something that they can scroll, especially on iOS where you don't get to see scrollbars by default. Normally i'd say add inset borders/shadows, but due to the nature of display:table, this is actually quite hard to achieve.

So my idea was.. What if use a bit of JS, to show a <-> arrow on top, for a little while, when elements come into view that are scrollable. The following JS fragment allows you to experiment with this idea. It's not perfect, i just tossed the first image i could find in there. Ideally it would use a bit of a horizontal wobble to indicate the interactivity better.
Unfortunately, there are no user styles on mobile, so you will have to use your browsers capabilities to add this on the fly (using console, or browser scripts).

1$.getScript( 'https://cdnjs.cloudflare.com/ajax/libs/jquery.appear/0.3.3/jquery.appear.js' ).done( function() {
2 function isElementOverflowing( el ) {
3 var isOverflowing = el.clientWidth < el.scrollWidth - 2;
4 return isOverflowing;
5 }
6 $( function() {
7 $('table').appear()
8 .on( 'appear', function( e, $affected ) {
9 $affected.not('.overflow-indicator').each( function( index, element ) {
10 if ( isElementOverflowing( element ) ) {
11 $(element).addClass( 'overflow-indicator' );
12 }
13 } );
14 } ).on ('disappear', function( e, $affected ) {
15 $affected.removeClass( 'overflow-indicator' );
16 } );
17 } );
18} );
19mw.util.addCSS( '@keyframes fadeOut {from {opacity: 1;} to { opacity: 0; } } .overflow-indicator:before { content: ""; position:absolute; margin: 10px; width: 36px;height:36px; animation: fadeOut 3s ease-in forwards; background-size: cover; background-image:url("data:image/png;base64,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") } ' );