pyc-website

main website for pyc inc.

git clone https://9o.is/git/pyc-website.git

forms.less

(9172B)


      1 //
      2 // Forms
      3 // --------------------------------------------------
      4 
      5 
      6 // Normalize non-controls
      7 //
      8 // Restyle and baseline non-control form elements.
      9 
     10 fieldset {
     11   padding: 0;
     12   margin: 0;
     13   border: 0;
     14 }
     15 
     16 legend {
     17   display: block;
     18   width: 100%;
     19   padding: 0;
     20   margin-bottom: @line-height-computed;
     21   font-size: (@font-size-base * 1.5);
     22   line-height: inherit;
     23   color: @legend-color;
     24   border: 0;
     25   border-bottom: 1px solid @legend-border-color;
     26 }
     27 
     28 label {
     29   display: inline-block;
     30   margin-bottom: 5px;
     31   font-weight: bold;
     32 }
     33 
     34 
     35 // Normalize form controls
     36 
     37 // Override content-box in Normalize (* isn't specific enough)
     38 input[type="search"] {
     39   .box-sizing(border-box);
     40 }
     41 
     42 // Position radios and checkboxes better
     43 input[type="radio"],
     44 input[type="checkbox"] {
     45   margin: 4px 0 0;
     46   margin-top: 1px \9; /* IE8-9 */
     47   line-height: normal;
     48 }
     49 
     50 // Set the height of select and file controls to match text inputs
     51 input[type="file"] {
     52   display: block;
     53 }
     54 
     55 // Make multiple select elements height not fixed
     56 select[multiple],
     57 select[size] {
     58   height: auto;
     59 }
     60 
     61 // Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611
     62 select optgroup {
     63   font-size: inherit;
     64   font-style: inherit;
     65   font-family: inherit;
     66 }
     67 
     68 // Focus for select, file, radio, and checkbox
     69 input[type="file"]:focus,
     70 input[type="radio"]:focus,
     71 input[type="checkbox"]:focus {
     72   .tab-focus();
     73 }
     74 
     75 // Fix for Chrome number input
     76 // Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.
     77 // See https://github.com/twbs/bootstrap/issues/8350 for more.
     78 input[type="number"] {
     79   &::-webkit-outer-spin-button,
     80   &::-webkit-inner-spin-button {
     81     height: auto;
     82   }
     83 }
     84 
     85 // Adjust output element
     86 output {
     87   display: block;
     88   padding-top: (@padding-base-vertical + 1);
     89   font-size: @font-size-base;
     90   line-height: @line-height-base;
     91   color: @input-color;
     92   vertical-align: middle;
     93 }
     94 
     95 
     96 // Common form controls
     97 //
     98 // Shared size and type resets for form controls. Apply `.form-control` to any
     99 // of the following form controls:
    100 //
    101 // select
    102 // textarea
    103 // input[type="text"]
    104 // input[type="password"]
    105 // input[type="datetime"]
    106 // input[type="datetime-local"]
    107 // input[type="date"]
    108 // input[type="month"]
    109 // input[type="time"]
    110 // input[type="week"]
    111 // input[type="number"]
    112 // input[type="email"]
    113 // input[type="url"]
    114 // input[type="search"]
    115 // input[type="tel"]
    116 // input[type="color"]
    117 
    118 .form-control {
    119   display: block;
    120   width: 100%;
    121   height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
    122   padding: @padding-base-vertical @padding-base-horizontal;
    123   font-size: @font-size-base;
    124   line-height: @line-height-base;
    125   color: @input-color;
    126   vertical-align: middle;
    127   background-color: @input-bg;
    128   background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
    129   border: 1px solid @input-border;
    130   border-radius: @input-border-radius;
    131   .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
    132   .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
    133 
    134   // Customize the `:focus` state to imitate native WebKit styles.
    135   .form-control-focus();
    136 
    137   // Placeholder
    138   //
    139   // Placeholder text gets special styles because when browsers invalidate entire
    140   // lines if it doesn't understand a selector/
    141   .placeholder();
    142 
    143   // Disabled and read-only inputs
    144   // Note: HTML5 says that controls under a fieldset > legend:first-child won't
    145   // be disabled if the fieldset is disabled. Due to implementation difficulty,
    146   // we don't honor that edge case; we style them as disabled anyway.
    147   &[disabled],
    148   &[readonly],
    149   fieldset[disabled] & {
    150     cursor: not-allowed;
    151     background-color: @input-bg-disabled;
    152   }
    153 
    154   // Reset height for `textarea`s
    155   textarea& {
    156     height: auto;
    157   }
    158 }
    159 
    160 
    161 // Form groups
    162 //
    163 // Designed to help with the organization and spacing of vertical forms. For
    164 // horizontal forms, use the predefined grid classes.
    165 
    166 .form-group {
    167   margin-bottom: 15px;
    168 }
    169 
    170 
    171 // Checkboxes and radios
    172 //
    173 // Indent the labels to position radios/checkboxes as hanging controls.
    174 
    175 .radio,
    176 .checkbox {
    177   display: block;
    178   min-height: @line-height-computed; // clear the floating input if there is no label text
    179   margin-top: 10px;
    180   margin-bottom: 10px;
    181   padding-left: 20px;
    182   vertical-align: middle;
    183   label {
    184     display: inline;
    185     margin-bottom: 0;
    186     font-weight: normal;
    187     cursor: pointer;
    188   }
    189 }
    190 .radio input[type="radio"],
    191 .radio-inline input[type="radio"],
    192 .checkbox input[type="checkbox"],
    193 .checkbox-inline input[type="checkbox"] {
    194   float: left;
    195   margin-left: -20px;
    196 }
    197 .radio + .radio,
    198 .checkbox + .checkbox {
    199   margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
    200 }
    201 
    202 // Radios and checkboxes on same line
    203 .radio-inline,
    204 .checkbox-inline {
    205   display: inline-block;
    206   padding-left: 20px;
    207   margin-bottom: 0;
    208   vertical-align: middle;
    209   font-weight: normal;
    210   cursor: pointer;
    211 }
    212 .radio-inline + .radio-inline,
    213 .checkbox-inline + .checkbox-inline {
    214   margin-top: 0;
    215   margin-left: 10px; // space out consecutive inline controls
    216 }
    217 
    218 // Apply same disabled cursor tweak as for inputs
    219 //
    220 // Note: Neither radios nor checkboxes can be readonly.
    221 input[type="radio"],
    222 input[type="checkbox"],
    223 .radio,
    224 .radio-inline,
    225 .checkbox,
    226 .checkbox-inline {
    227   &[disabled],
    228   fieldset[disabled] & {
    229     cursor: not-allowed;
    230   }
    231 }
    232 
    233 // Form control sizing
    234 .input-sm {
    235   .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
    236 }
    237 
    238 .input-lg {
    239   .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
    240 }
    241 
    242 
    243 // Form control feedback states
    244 //
    245 // Apply contextual and semantic states to individual form controls.
    246 
    247 // Warning
    248 .has-warning {
    249   .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
    250 }
    251 // Error
    252 .has-error {
    253   .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
    254 }
    255 // Success
    256 .has-success {
    257   .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
    258 }
    259 
    260 
    261 // Static form control text
    262 //
    263 // Apply class to a `p` element to make any string of text align with labels in
    264 // a horizontal form layout.
    265 
    266 .form-control-static {
    267   margin-bottom: 0; // Remove default margin from `p`
    268 }
    269 
    270 
    271 // Help text
    272 //
    273 // Apply to any element you wish to create light text for placement immediately
    274 // below a form control. Use for general help, formatting, or instructional text.
    275 
    276 .help-block {
    277   display: block; // account for any element using help-block
    278   margin-top: 5px;
    279   margin-bottom: 10px;
    280   color: lighten(@text-color, 25%); // lighten the text some for contrast
    281 }
    282 
    283 
    284 
    285 // Inline forms
    286 //
    287 // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
    288 // forms begin stacked on extra small (mobile) devices and then go inline when
    289 // viewports reach <768px.
    290 //
    291 // Requires wrapping inputs and labels with `.form-group` for proper display of
    292 // default HTML form controls and our custom form controls (e.g., input groups).
    293 //
    294 // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
    295 
    296 .form-inline {
    297 
    298   // Kick in the inline
    299   @media (min-width: @screen-sm) {
    300     // Inline-block all the things for "inline"
    301     .form-group  {
    302       display: inline-block;
    303       margin-bottom: 0;
    304       vertical-align: middle;
    305     }
    306 
    307     // In navbar-form, allow folks to *not* use `.form-group`
    308     .form-control {
    309       display: inline-block;
    310     }
    311 
    312     // Override `width: 100%;` when not within a `.form-group`
    313     select.form-control {
    314       width: auto;
    315     }
    316 
    317     // Remove default margin on radios/checkboxes that were used for stacking, and
    318     // then undo the floating of radios and checkboxes to match (which also avoids
    319     // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
    320     .radio,
    321     .checkbox {
    322       display: inline-block;
    323       margin-top: 0;
    324       margin-bottom: 0;
    325       padding-left: 0;
    326     }
    327     .radio input[type="radio"],
    328     .checkbox input[type="checkbox"] {
    329       float: none;
    330       margin-left: 0;
    331     }
    332   }
    333 }
    334 
    335 
    336 // Horizontal forms
    337 //
    338 // Horizontal forms are built on grid classes and allow you to create forms with
    339 // labels on the left and inputs on the right.
    340 
    341 .form-horizontal {
    342 
    343   // Consistent vertical alignment of labels, radios, and checkboxes
    344   .control-label,
    345   .radio,
    346   .checkbox,
    347   .radio-inline,
    348   .checkbox-inline {
    349     margin-top: 0;
    350     margin-bottom: 0;
    351     padding-top: (@padding-base-vertical + 1); // Default padding plus a border
    352   }
    353   // Account for padding we're adding to ensure the alignment and of help text
    354   // and other content below items
    355   .radio,
    356   .checkbox {
    357     min-height: @line-height-computed + (@padding-base-vertical + 1);
    358   }
    359 
    360   // Make form groups behave like rows
    361   .form-group {
    362     .make-row();
    363   }
    364 
    365   .form-control-static {
    366     padding-top: (@padding-base-vertical + 1);
    367   }
    368 
    369   // Only right align form labels here when the columns stop stacking
    370   @media (min-width: @screen-sm-min) {
    371     .control-label {
    372       text-align: right;
    373     }
    374   }
    375 }