<!doctype html>
							 | 
						|
								<html>
							 | 
						|
								<head>
							 | 
						|
									<title>controlled inline: onyx toolbar design</title>
							 | 
						|
									<link href="../source/css/onyx.css" rel="stylesheet" type="text/css" />
							 | 
						|
									<style>
							 | 
						|
										/*
							 | 
						|
											the 'inline' class sets up a left-to-right container, with vertically centered children
							 | 
						|
										*/
							 | 
						|
										.inline {
							 | 
						|
											white-space: nowrap;
							 | 
						|
										}
							 | 
						|
										.inline > * { 
							 | 
						|
											display: inline-block;
							 | 
						|
											vertical-align: middle;
							 | 
						|
										}
							 | 
						|
										.icon {
							 | 
						|
											width: 32px;
							 | 
						|
											height: 32px;
							 | 
						|
											background-image: url(menu-icon-bookmark.png);
							 | 
						|
										}
							 | 
						|
										.bord {
							 | 
						|
											border: 1px solid lightblue;
							 | 
						|
										}
							 | 
						|
										.big {
							 | 
						|
											font-size: 48px;
							 | 
						|
										}
							 | 
						|
										.pad {
							 | 
						|
											padding: 8px;
							 | 
						|
										}
							 | 
						|
										.bg {
							 | 
						|
											background: orange;
							 | 
						|
										}
							 | 
						|
										/*
							 | 
						|
											We can control line-height so that vertical-align: middle 
							 | 
						|
											becomes true center. Otherwise, when line-height is in effect
							 | 
						|
											(i.e. if the actual height is less than line height), 
							 | 
						|
											user agents pad the line unevenly.
							 | 
						|
										*/
							 | 
						|
										.lhc {
							 | 
						|
											line-height: 0;
							 | 
						|
										}
							 | 
						|
										/*
							 | 
						|
											Defeat line-height control above for children
							 | 
						|
										*/
							 | 
						|
										.lhc > * {
							 | 
						|
											line-height: normal;
							 | 
						|
										}
							 | 
						|
										/*
							 | 
						|
											Enforce line-height 0 for an inline child of an inline (FIXME: fiddly)
							 | 
						|
										*/
							 | 
						|
										.lhc .lhc {
							 | 
						|
											line-height: 0px;
							 | 
						|
										}
							 | 
						|
										/**/
							 | 
						|
										.h {
							 | 
						|
											height: 64px;
							 | 
						|
										}
							 | 
						|
										/*
							 | 
						|
											It's useful to be able to abut toolbars in an inline context
							 | 
						|
											and not worry about varying heights.
							 | 
						|
											Generally icons are the largest elements in a toolbar, and will
							 | 
						|
											drive the height to this size.
							 | 
						|
											We can't set a min-size directly on the toolbar because it
							 | 
						|
											breaks centering (due to interation with line-height).
							 | 
						|
											For some scenarios a developer may want to override the height value.
							 | 
						|
										*/
							 | 
						|
										.stent {
							 | 
						|
											/*
							 | 
						|
												the point of the stent is to force the box height to some minimum, similar
							 | 
						|
												to line-height, but with proper vertical centering
							 | 
						|
											*/
							 | 
						|
											height: 72px;
							 | 
						|
											/* the width is 0, but it adds some size to the inline because of ? */
							 | 
						|
											width: 0px;
							 | 
						|
											visibility: hidden;
							 | 
						|
										}
							 | 
						|
										.stent-fix {
							 | 
						|
											/* stent imparts mystery width to it's parent */
							 | 
						|
											/* setting font-size doesn't affect the mystery width */
							 | 
						|
											/*font-size: 0px;*/
							 | 
						|
											/* floating the stent prevents it from stenting */
							 | 
						|
											/*float: left;*/
							 | 
						|
											/* on non-mozilla, mystery size can be removed this way, but the actual pixels needed depends on font size */
							 | 
						|
											/*margin-right: -6px;*/
							 | 
						|
											/* on non-mozilla, this gets us within a few pixels for tested fonts */
							 | 
						|
											margin-right: -0.25em;
							 | 
						|
										}
							 | 
						|
										/* */
							 | 
						|
										.stenty > * {
							 | 
						|
											min-height: 56px;
							 | 
						|
										}
							 | 
						|
									</style>
							 | 
						|
								</head>
							 | 
						|
								<body>
							 | 
						|
									<label>"inline" tests</label>
							 | 
						|
									<br /><br />
							 | 
						|
								
							 | 
						|
									<div>
							 | 
						|
										<label>combo content: when the text is larger than non-text objects, vertical centering goes wonky</label>
							 | 
						|
										<div class="inline bord big">
							 | 
						|
											<div>Text in Div</div>
							 | 
						|
											<input />
							 | 
						|
											<div class="icon"></div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<label>... it's possible to control line-height in such a way to repair centering</label>
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div>Text in Div</div>
							 | 
						|
											<input />
							 | 
						|
											<div class="icon"></div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<hr />
							 | 
						|
								
							 | 
						|
										<label>but now setting height or min-height on toolbar breaks centering</label>
							 | 
						|
										<div class="inline bord lhc bg big h">
							 | 
						|
											<div>Text in Div</div>
							 | 
						|
											<input />
							 | 
						|
											<div class="icon"></div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg h">
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg h">
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<hr />
							 | 
						|
								
							 | 
						|
										<label>control height on children instead of toolbar</label>
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg stenty">
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg stenty">
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<hr />
							 | 
						|
								
							 | 
						|
										<label>it's possible to use a stent to effect min-height, but for unknown reasons, even a 0-width stent affects parent width</label>
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<div class="stent"></div>
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<div class="stent"></div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<label>using img as stent node makes no difference</label>
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<img class="stent" />
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<img class="stent" />
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
								
							 | 
						|
										<label>using negative margin on stent can approximate 0 width</label>
							 | 
						|
										<div class="inline bord big lhc">
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<div class="stent stent-fix"></div>
							 | 
						|
												<div>Text in Div</div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
											<div class="inline bord lhc bg">
							 | 
						|
												<div class="stent stent-fix"></div>
							 | 
						|
												<input />
							 | 
						|
												<div class="icon"></div>
							 | 
						|
											</div>
							 | 
						|
										</div>
							 | 
						|
										<br />
							 | 
						|
									</div>
							 | 
						|
								</body>
							 | 
						|
								</html>
							 |