.input-append .uneditable-input,
.input-prepend .uneditable-input {
position: relative;
- margin-bottom: 0;
- *margin-left: 0;
+ float: none;
+ margin: 0;
+ font-size: 14px;
vertical-align: top;
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
}
.input-append input:focus,
<form class="bs-docs-example">
<div class="input-prepend">
<span class="add-on">@</span>
- <input id="prependedInput" size="16" type="text" placeholder="Username">
- <input class="span2" id="prependedInput" type="text" placeholder="Username">
++ <input id="prependedInput" type="text" placeholder="Username">
</div>
<br>
<div class="input-append">
- <input id="appendedInput" size="16" type="text">
- <input class="span2" id="appendedInput" type="text">
++ <input id="appendedInput" type="text">
<span class="add-on">.00</span>
</div>
</form>
<pre class="prettyprint linenums">
<div class="input-prepend">
<span class="add-on">@</span>
- <input id="prependedInput" size="16" type="text" placeholder="Username">
- <input class="span2" id="prependedInput" type="text" placeholder="Username">
++ <input id="prependedInput" type="text" placeholder="Username">
</div>
<div class="input-append">
- <input id="appendedInput" size="16" type="text">
- <input class="span2" id="appendedInput" type="text">
++ <input id="appendedInput" type="text">
<span class="add-on">.00</span>
</div>
</pre>
<form class="bs-docs-example form-inline">
<div class="input-prepend input-append">
<span class="add-on">$</span>
- <input id="appendedPrependedInput" size="16" type="text">
- <input class="span2" id="appendedPrependedInput" type="text">
++ <input id="appendedPrependedInput" type="text">
<span class="add-on">.00</span>
</div>
</form>
<pre class="prettyprint linenums">
<div class="input-prepend input-append">
<span class="add-on">$</span>
- <input id="appendedPrependedInput" size="16" type="text">
- <input class="span2" id="appendedPrependedInput" type="text">
++ <input id="appendedPrependedInput" type="text">
<span class="add-on">.00</span>
</div>
</pre>
<p>Instead of a <code><span></code> with text, use a <code>.btn</code> to attach a button (or two) to an input.</p>
<form class="bs-docs-example">
<div class="input-append">
- <input id="appendedInputButton" size="16" type="text">
- <input class="span2" id="appendedInputButton" type="text">
++ <input id="appendedInputButton" type="text">
<button class="btn" type="button">Go!</button>
</div>
- <br>
+ </form>
+ <pre class="prettyprint linenums">
+ <div class="input-append">
+ <input class="span2" id="appendedInputButton" type="text">
+ <button class="btn" type="button">Go!</button>
+ </div>
+ </pre>
+ <form class="bs-docs-example">
<div class="input-append">
- <input id="appendedInputButtons" size="16" type="text">
- <input class="span2" id="appendedInputButtons" type="text">
++ <input id="appendedInputButtons" type="text">
<button class="btn" type="button">Search</button>
<button class="btn" type="button">Options</button>
</div>
</form>
<pre class="prettyprint linenums">
<div class="input-append">
- <input id="appendedInputButton" size="16" type="text">
- <button class="btn" type="button">Go!</button>
- <input class="span2" id="appendedInputButtons" type="text">
++ <input id="appendedInputButton" type="text">
+ <button class="btn" type="button">Search</button>
+ <button class="btn" type="button">Options</button>
</div>
+ </pre>
+ <h4>Button dropdowns</h4>
+ <p></p>
+ <form class="bs-docs-example">
+ <div class="input-append">
+ <input class="span2" id="appendedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ </div><!-- /input-append -->
+ </form>
+ <pre class="prettyprint linenums">
<div class="input-append">
- <input id="appendedInputButtons" size="16" type="text">
- <button class="btn" type="button">Search</button>
- <button class="btn" type="button">Options</button>
++ <input id="appendedInputButtons" type="text">
+ <input class="span2" id="appendedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ Action
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
+ </div>
+ </pre>
+
+ <form class="bs-docs-example">
+ <div class="input-prepend">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <input class="span2" id="prependedDropdownButton" type="text">
+ </div><!-- /input-prepend -->
+ </form>
+ <pre class="prettyprint linenums">
+ <div class="input-prepend">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ Action
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
+ <input class="span2" id="prependedDropdownButton" type="text">
+ </div>
+ </pre>
+
+ <form class="bs-docs-example">
+ <div class="input-prepend input-append">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <input class="span2" id="appendedPrependedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">Action <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">Action</a></li>
+ <li><a href="#">Another action</a></li>
+ <li><a href="#">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="#">Separated link</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ </div><!-- /input-prepend input-append -->
+ </form>
+ <pre class="prettyprint linenums">
+ <div class="input-prepend input-append">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ Action
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
+ <input class="span2" id="appendedPrependedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ Action
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
</div>
</pre>
<form class="bs-docs-example">
<div class="input-prepend">
<span class="add-on">@</span>
- <input id="prependedInput" size="16" type="text" placeholder="{{_i}}Username{{/i}}">
- <input class="span2" id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
++ <input id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
</div>
<br>
<div class="input-append">
- <input id="appendedInput" size="16" type="text">
- <input class="span2" id="appendedInput" type="text">
++ <input id="appendedInput" type="text">
<span class="add-on">.00</span>
</div>
</form>
<pre class="prettyprint linenums">
<div class="input-prepend">
<span class="add-on">@</span>
- <input id="prependedInput" size="16" type="text" placeholder="{{_i}}Username{{/i}}">
- <input class="span2" id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
++ <input id="prependedInput" type="text" placeholder="{{_i}}Username{{/i}}">
</div>
<div class="input-append">
- <input id="appendedInput" size="16" type="text">
- <input class="span2" id="appendedInput" type="text">
++ <input id="appendedInput" type="text">
<span class="add-on">.00</span>
</div>
</pre>
<form class="bs-docs-example form-inline">
<div class="input-prepend input-append">
<span class="add-on">$</span>
- <input id="appendedPrependedInput" size="16" type="text">
- <input class="span2" id="appendedPrependedInput" type="text">
++ <input id="appendedPrependedInput" type="text">
<span class="add-on">.00</span>
</div>
</form>
<pre class="prettyprint linenums">
<div class="input-prepend input-append">
<span class="add-on">$</span>
- <input id="appendedPrependedInput" size="16" type="text">
- <input class="span2" id="appendedPrependedInput" type="text">
++ <input id="appendedPrependedInput" type="text">
<span class="add-on">.00</span>
</div>
</pre>
<p>{{_i}}Instead of a <code><span></code> with text, use a <code>.btn</code> to attach a button (or two) to an input.{{/i}}</p>
<form class="bs-docs-example">
<div class="input-append">
- <input id="appendedInputButton" size="16" type="text">
- <input class="span2" id="appendedInputButton" type="text">
++ <input id="appendedInputButton" type="text">
<button class="btn" type="button">Go!</button>
</div>
- <br>
+ </form>
+ <pre class="prettyprint linenums">
+ <div class="input-append">
+ <input class="span2" id="appendedInputButton" type="text">
+ <button class="btn" type="button">Go!</button>
+ </div>
+ </pre>
+ <form class="bs-docs-example">
<div class="input-append">
- <input id="appendedInputButtons" size="16" type="text">
- <input class="span2" id="appendedInputButtons" type="text">
++ <input id="appendedInputButtons" type="text">
<button class="btn" type="button">Search</button>
<button class="btn" type="button">Options</button>
</div>
</form>
<pre class="prettyprint linenums">
<div class="input-append">
- <input id="appendedInputButton" size="16" type="text">
- <button class="btn" type="button">Go!</button>
- <input class="span2" id="appendedInputButtons" type="text">
++ <input id="appendedInputButton" type="text">
+ <button class="btn" type="button">Search</button>
+ <button class="btn" type="button">Options</button>
</div>
+ </pre>
+ <h4>{{_i}}Button dropdowns{{/i}}</h4>
+ <p>{{_i}}{{/i}}</p>
+ <form class="bs-docs-example">
+ <div class="input-append">
+ <input class="span2" id="appendedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">{{_i}}Action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Another action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
+ <li class="divider"></li>
+ <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ </div><!-- /input-append -->
+ </form>
+ <pre class="prettyprint linenums">
<div class="input-append">
- <input id="appendedInputButtons" size="16" type="text">
- <button class="btn" type="button">Search</button>
- <button class="btn" type="button">Options</button>
++ <input id="appendedInputButtons" type="text">
+ <input class="span2" id="appendedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ {{_i}}Action{{/i}}
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
+ </div>
+ </pre>
+
+ <form class="bs-docs-example">
+ <div class="input-prepend">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">{{_i}}Action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Another action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
+ <li class="divider"></li>
+ <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <input class="span2" id="prependedDropdownButton" type="text">
+ </div><!-- /input-prepend -->
+ </form>
+ <pre class="prettyprint linenums">
+ <div class="input-prepend">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ {{_i}}Action{{/i}}
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
+ <input class="span2" id="prependedDropdownButton" type="text">
+ </div>
+ </pre>
+
+ <form class="bs-docs-example">
+ <div class="input-prepend input-append">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">{{_i}}Action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Another action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
+ <li class="divider"></li>
+ <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ <input class="span2" id="appendedPrependedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">{{_i}}Action{{/i}} <span class="caret"></span></button>
+ <ul class="dropdown-menu">
+ <li><a href="#">{{_i}}Action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Another action{{/i}}</a></li>
+ <li><a href="#">{{_i}}Something else here{{/i}}</a></li>
+ <li class="divider"></li>
+ <li><a href="#">{{_i}}Separated link{{/i}}</a></li>
+ </ul>
+ </div><!-- /btn-group -->
+ </div><!-- /input-prepend input-append -->
+ </form>
+ <pre class="prettyprint linenums">
+ <div class="input-prepend input-append">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ {{_i}}Action{{/i}}
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
+ <input class="span2" id="appendedPrependedDropdownButton" type="text">
+ <div class="btn-group">
+ <button class="btn dropdown-toggle" data-toggle="dropdown">
+ {{_i}}Action{{/i}}
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ ...
+ </ul>
+ </div>
</div>
</pre>
}
- .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
- .spanX (@index) when (@index > 0) {
- (~".span@{index}") { .span(@index); }
+ .input(@gridColumnWidth, @gridGutterWidth, @gridRowWidth) {
+
+ .spanX(@index) when (@index > 0) {
+ (~"input.span@{index}, textarea.span@{index}, select.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
.spanX(@index - 1);
}
- .spanX (0) {}
+ .spanX(0) {}
- .offsetX (@index) when (@index > 0) {
- (~'.offset@{index}') { .offset(@index); }
- (~'.offset@{index}:first-child') { .offsetFirstChild(@index); }
+ .offsetX(@index) when (@index > 0) {
+ (~"input.offset@{index}, textarea.offset@{index}, select.offset@{index}, uneditable-input.offset@{index}") { .offset(@index); }
.offsetX(@index - 1);
}
- .offsetX (0) {}
-
- .offset (@columns) {
- margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2);
- *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%);
- }
-
- .offsetFirstChild (@columns) {
- margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth);
- *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
- }
-
- .span (@columns) {
- width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1));
- *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%);
- }
-
- .row-fluid {
- width: 100%;
- .clearfix();
- [class*="span"] {
- .input-block-level();
- float: left;
- margin-left: @fluidGridGutterWidth;
- *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%);
- }
- [class*="span"]:first-child {
- margin-left: 0;
- }
-
- // Space grid-sized controls properly if multiple per line
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: @fluidGridGutterWidth;
- }
-
- // generate .spanX and .offsetX
- .spanX (@gridColumns);
- .offsetX (@gridColumns);
- }
-
- }
-
- .input(@gridColumnWidth, @gridGutterWidth) {
-
- .spanX (@index) when (@index > 0) {
- (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); }
- .spanX(@index - 1);
- }
- .spanX (0) {}
+ .offsetX(0) {}
-
.span(@columns) {
- width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14;
+ // Part 1: Since inputs require padding *and* margin, we subtract the grid gutter width, as a percent of the row, from the default column width.
+ width: percentage(@columns / @gridColumns) - percentage(@gridGutterWidth / @gridRowWidth);
+ // Part 2: That subtracted width then gets split in half and added to the left and right margins.
+ margin-left: percentage((@gridGutterWidth / 2) / @gridRowWidth);
+ margin-right: percentage((@gridGutterWidth / 2) / @gridRowWidth);
}
- input,
- textarea,
- .uneditable-input {
- margin-left: 0; // override margin-left from core grid system
+ .offset(@columns) {
+ // Take the normal offset margin and add an extra gutter's worth.
+ margin-left: percentage(@columns / @gridColumns) + percentage((@gridGutterWidth / 2) / @gridRowWidth);
}
- // Space grid-sized controls properly if multiple per line
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: @gridGutterWidth;
- }
-
- // generate .spanX
- .spanX (@gridColumns);
+ // Generate .spanX and .offsetX
+ .spanX(@gridColumns);
+ .offsetX(@gridColumns);
}