make rustdoc more responsive

* move some sidebar contents to a title bar when small
* inline description toggle when small
* make out-of-band and in-band content share space, rather than float and clash
* compress wording of out-of-band content to avoid line-wrap as much as possible
This commit is contained in:
Alexis Beingessner 2014-08-02 20:58:41 -04:00
parent e5df5f5606
commit dd437ee6ed
2 changed files with 79 additions and 28 deletions

View File

@ -1294,7 +1294,7 @@ impl<'a> Item<'a> {
impl<'a> fmt::Show for Item<'a> { impl<'a> fmt::Show for Item<'a> {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
// Write the breadcrumb trail header for the top // Write the breadcrumb trail header for the top
try!(write!(fmt, "\n<h1 class='fqn'>")); try!(write!(fmt, "\n<h1 class='fqn'><div class='in-band'>"));
match self.item.inner { match self.item.inner {
clean::ModuleItem(ref m) => if m.is_crate { clean::ModuleItem(ref m) => if m.is_crate {
try!(write!(fmt, "Crate ")); try!(write!(fmt, "Crate "));
@ -1316,7 +1316,7 @@ impl<'a> fmt::Show for Item<'a> {
let cur = self.cx.current.as_slice(); let cur = self.cx.current.as_slice();
let amt = if self.ismodule() { cur.len() - 1 } else { cur.len() }; let amt = if self.ismodule() { cur.len() - 1 } else { cur.len() };
for (i, component) in cur.iter().enumerate().take(amt) { for (i, component) in cur.iter().enumerate().take(amt) {
try!(write!(fmt, "<a href='{}index.html'>{}</a>::", try!(write!(fmt, "<a href='{}index.html'>{}</a>&#8203;::",
"../".repeat(cur.len() - i - 1), "../".repeat(cur.len() - i - 1),
component.as_slice())); component.as_slice()));
} }
@ -1325,10 +1325,10 @@ impl<'a> fmt::Show for Item<'a> {
shortty(self.item), self.item.name.get_ref().as_slice())); shortty(self.item), self.item.name.get_ref().as_slice()));
// Write stability level // Write stability level
try!(write!(fmt, "{}", Stability(&self.item.stability))); try!(write!(fmt, "&#8203;{}", Stability(&self.item.stability)));
// Links to out-of-band information, i.e. src and stability dashboard // Links to out-of-band information, i.e. src and stability dashboard
try!(write!(fmt, "<span class='out-of-band'>")); try!(write!(fmt, "</div><div class='out-of-band'>"));
// Write stability dashboard link // Write stability dashboard link
match self.item.inner { match self.item.inner {
@ -1340,8 +1340,8 @@ impl<'a> fmt::Show for Item<'a> {
try!(write!(fmt, try!(write!(fmt,
r##"<span id='render-detail'> r##"<span id='render-detail'>
<a id="collapse-all" href="#">[collapse all]</a> <a id="collapse-all" href="#">[-]
<a id="expand-all" href="#">[expand all]</a> </a>&nbsp;<a id="expand-all" href="#">[+]</a>
</span>"##)); </span>"##));
// Write `src` tag // Write `src` tag
@ -1360,7 +1360,7 @@ impl<'a> fmt::Show for Item<'a> {
} }
} }
try!(write!(fmt, "</span>")); try!(write!(fmt, "</div>"));
try!(write!(fmt, "</h1>\n")); try!(write!(fmt, "</h1>\n"));

View File

@ -247,8 +247,19 @@ nav.sub {
.docblock h3, .docblock h4, .docblock h5 { font-size: 1em; } .docblock h3, .docblock h4, .docblock h5 { font-size: 1em; }
.content .out-of-band { .content .out-of-band {
float: right;
font-size: 23px; font-size: 23px;
width: 40%;
margin: 0px;
padding: 0px;
text-align: right;
display: inline-block;
}
.content .in-band {
width: 60%;
margin: 0px;
padding: 0px;
display: inline-block;
} }
.content table { .content table {
@ -465,22 +476,6 @@ pre.rust { position: relative; }
content: '\2002\00a7\2002'; content: '\2002\00a7\2002';
} }
/* Media Queries */
@media (max-width: 700px) {
.sidebar {
display: none;
}
.content {
margin-left: 0px;
}
nav.sub {
margin: 0 auto;
}
}
.collapse-toggle { .collapse-toggle {
font-weight: 100; font-weight: 100;
position: absolute; position: absolute;
@ -513,3 +508,59 @@ pre.rust { position: relative; }
color: #999; color: #999;
font-style: italic; font-style: italic;
} }
/* Media Queries */
@media (max-width: 700px) {
body {
padding-top: 0px;
}
.sidebar {
height: 40px;
min-height: 40px;
width: 100%;
margin: 0px;
padding: 0px;
position: static;
}
.sidebar .location {
float: left;
margin: 0px;
padding: 5px;
width: 60%;
background: inherit;
text-align: left;
font-size: 24px;
}
.sidebar img {
width: 35px;
margin-top: 5px;
margin-bottom: 0px;
float: left;
}
nav.sub {
margin: 0 auto;
}
.sidebar .block {
display: none;
}
.content {
margin-left: 0px;
}
.toggle-wrapper > .collapse-toggle {
left: 0px;
}
.toggle-wrapper {
height: 1.5em;
}
}