From: Simon McVittie Date: Tue, 25 Nov 2014 23:42:16 +0000 (+0000) Subject: Make the layout adjust to narrow viewports better X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/5fe28eb4c29cb31bd6293beb67cccc9b01e967ec Make the layout adjust to narrow viewports better Below about 600px (phones and small windowed browsers) the sidebar starts breaking the layout. Moving it inline helps a lot; with modern CSS (flex layout) we can also shuffle it after the main content. Older browsers that don't do one of the 4 variants of flex layout will just display it above the main content, which is annoying but not too bad. blueview also has a minimum width set so that it won't become ridiculously small with small fonts, but that means it gets scrollbars below about 850px; stop enforcing the minimum width if necessary. Finally, blueview's relatively generous margins look good in a desktop browser, but are just too space-hungry on a phone. Turn them off below 600px. --- diff --git a/doc/style.css b/doc/style.css index 4c48e5c7b..18bf531a6 100644 --- a/doc/style.css +++ b/doc/style.css @@ -548,3 +548,34 @@ a.openid_large_btn:focus { .trailsep { display: none; } + +/* mobile/small-screen-friendly layout */ +@media (max-width: 600px) { + .sidebar { + width: auto; + float: none; + margin-top: 0; + } + + /* if the mobile browser is new enough, use flex layout to shuffle + * the sidebar to the end */ + .page { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + flex-direction: column; + } + #pageheader { + -webkit-box-ordinal-group: -1; + -ms-flex-order: -1; + -webkit-order: -1; + order: -1; + } + .sidebar, #footer { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 1; + -webkit-order: 1; + order: 1; + } +} diff --git a/themes/blueview/style.css b/themes/blueview/style.css index af1434574..7b3382c35 100644 --- a/themes/blueview/style.css +++ b/themes/blueview/style.css @@ -279,3 +279,26 @@ body { } +/* lose the border on mobile */ +@media (max-width: 600px) { + body { + padding: 0; + } + .page { + border: none; + margin: 0; + } + #pagebody { + margin: auto; + border: none; + } +} + +/* cancel the minimum width if it would mean scrollbars */ +@media (max-width: 850px) { + .page { + width: auto; + min-width: 0; + padding: 0; + } +}