diff options
| author | Mark Otto <[email protected]> | 2014-12-24 04:13:23 -0800 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2014-12-24 04:13:23 -0800 |
| commit | 18e08e777b5dcdb445952a579c02a77f86f7e56b (patch) | |
| tree | 8ee9956cb2516d642825130d5606c613d6cdd89c /scss | |
| parent | e1bb907050bbf1598f58a53fc64e2432753d5b24 (diff) | |
| download | bootstrap-18e08e777b5dcdb445952a579c02a77f86f7e56b.tar.xz bootstrap-18e08e777b5dcdb445952a579c02a77f86f7e56b.zip | |
add custom forms, stub out examples for radios and checkboxes
Diffstat (limited to 'scss')
| -rw-r--r-- | scss/_custom-forms.scss | 291 | ||||
| -rw-r--r-- | scss/bootstrap.scss | 1 |
2 files changed, 292 insertions, 0 deletions
diff --git a/scss/_custom-forms.scss b/scss/_custom-forms.scss new file mode 100644 index 000000000..21ec20c76 --- /dev/null +++ b/scss/_custom-forms.scss @@ -0,0 +1,291 @@ +// Embedded icons from Open Iconic. +// Released under MIT and copyright 2014 Waybury. +// http://useiconic.com/open + +// Checkboxes and radios +.c-input { + position: relative; + display: inline-block; + padding-left: 1.5rem; + color: #555; + font-weight: normal; + cursor: pointer; + + > input { + position: absolute; + opacity: 0; + z-index: -1; /* Put the input behind the label so it doesn't overlay text */ + } +} + +.c-indicator { + position: absolute; + top: .25rem; + left: 0; + display: block; + width: 1rem; + height: 1rem; + line-height: 1rem; + font-size: 65%; + color: #eee; + text-align: center; + background-color: #eee; + background-size: 50% 50%; + background-position: center center; + background-repeat: no-repeat; + user-select: none; +} + +/* Hover state */ +/* Uncomment if you need it, but be aware of the sticky iOS states. +.control:hover .control-indicator { + color: #fff; + background-color: #ccc; +} +*/ + +/* Focus */ +.c-input input:focus ~ .c-indicator { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + +/* Checked state */ +.c-input input:checked ~ .c-indicator { + color: #fff; + background-color: #0074d9; +} + +/* Active */ +.c-input input:active ~ .c-indicator { + color: #fff; + background-color: #84c6ff; +} + +/* Checkbox modifiers */ +.c-checkbox .c-indicator { + border-radius: .25rem; +} +.c-checkbox input:checked ~ .c-indicator { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTYuNCwxTDUuNywxLjdMMi45LDQuNUwyLjEsMy43TDEuNCwzTDAsNC40bDAuNywwLjdsMS41LDEuNWwwLjcsMC43bDAuNy0wLjdsMy41LTMuNWwwLjctMC43TDYuNCwxTDYuNCwxeiINCgkvPg0KPC9zdmc+DQo=); +} + +/* Radio modifiers */ +.c-radio .c-indicator { + border-radius: 50%; +} +.c-radio input:checked ~ .c-indicator { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgOCA4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTQsMUMyLjMsMSwxLDIuMywxLDRzMS4zLDMsMywzczMtMS4zLDMtM1M1LjcsMSw0LDF6Ii8+DQo8L3N2Zz4NCg==); +} + +/* Alternately, use another character */ +.control-x input:checked ~ .control-indicator { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xLjQsMEwwLDEuNGwwLjcsMC43bDEuOCwxLjhMMC43LDUuN0wwLDYuNGwxLjQsMS40bDAuNy0wLjdsMS44LTEuOGwxLjgsMS44bDAuNywwLjdsMS40LTEuNEw3LjEsNS43DQoJTDUuMywzLjlsMS44LTEuOGwwLjctMC43TDYuNCwwTDUuNywwLjdMMy45LDIuNUwyLjEsMC43QzIuMSwwLjcsMS40LDAsMS40LDB6Ii8+DQo8L3N2Zz4NCg==); +} +.control-dash input:checked ~ .control-indicator { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDggOCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0wLDN2Mmg4VjNIMHoiLz4NCjwvc3ZnPg0K) +} + + + +/* +* Select +*/ + +.select { + position: relative; + display: inline-block; + color: #555; +} +.select select { + display: inline-block; + width: 100%; + margin: 0; + padding: .5rem 2.25rem .5rem 1rem; + line-height: 1.5; + color: #555; + background-color: #eee; + border: 0; + border-radius: .25rem; + cursor: pointer; + outline: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +/* Undo the Firefox inner focus ring */ +.select select:focus:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #000; +} +/* Dropdown arrow */ +.select:after { + position: absolute; + top: 50%; + right: 1.25rem; + display: inline-block; + content: ""; + width: 0; + height: 0; + margin-top: -.15rem; + pointer-events: none; + border-top: .35rem solid; + border-right: .35rem solid transparent; + border-bottom: .35rem solid transparent; + border-left: .35rem solid transparent; +} + +/* Hover state */ +/* Uncomment if you need it, but be aware of the sticky iOS states. +.select select:hover { + background-color: #ddd; +} +*/ + +/* Focus */ +.select select:focus { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + +/* Active/open */ +.select select:active { + color: #fff; + background-color: #0074d9; +} + +/* Hide the arrow in IE10 and up */ +.select select::-ms-expand { + display: none; +} + +/* Media query to target Firefox only */ +@-moz-document url-prefix() { + /* Firefox hack to hide the arrow */ + .select select { + text-indent: 0.01px; + text-overflow: ''; + padding-right: 1rem; + } + + /* <option> elements inherit styles from <select>, so reset them. */ + .select option { + background-color: #fff; + } +} + +/* IE9 hack to hide the arrow */ +@media screen and (min-width:0\0) { + .select select { + z-index: 1; + padding: .5rem 1.5rem .5rem 1rem; + } + .select:after { + z-index: 5; + } + .select:before { + position: absolute; + top: 0; + right: 1rem; + bottom: 0; + z-index: 2; + content: ""; + display: block; + width: 1.5rem; + background-color: #eee; + } + .select select:hover, + .select select:focus, + .select select:active { + color: #555; + background-color: #eee; + } +} + + + +/* +* File +*/ + +.file { + position: relative; + display: inline-block; + cursor: pointer; + height: 2.5rem; +} +.file input { + min-width: 14rem; + margin: 0; + filter: alpha(opacity=0); + opacity: 0; +} +.file-custom { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 5; + height: 2.5rem; + padding: .5rem 1rem; + line-height: 1.5; + color: #555; + background-color: #fff; + border: .075rem solid #ddd; + border-radius: .25rem; + box-shadow: inset 0 .2rem .4rem rgba(0,0,0,.05); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.file-custom:after { + content: "Choose file..."; +} +.file-custom:before { + position: absolute; + top: -.075rem; + right: -.075rem; + bottom: -.075rem; + z-index: 6; + display: block; + content: "Browse"; + height: 2.5rem; + padding: .5rem 1rem; + line-height: 1.5; + color: #555; + background-color: #eee; + border: .075rem solid #ddd; + border-radius: 0 .25rem .25rem 0; +} + +/* Focus */ +.file input:focus ~ .file-custom { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + + +/* +* Control layouts +*/ + +.controls-stacked { + margin: 1rem 0; +} +.controls-stacked .control, +.controls-stacked .progress { + display: block; +} +.controls-stacked .control + .control, +.controls-stacked .progress + .progress { + margin-top: .5rem; +} + +.controls-inline { + margin: 1rem 0; +} +.controls-inline .control { + display: inline-block; + height: 1rem; +} +.controls-inline .control + .control { + margin-left: 1rem; +} diff --git a/scss/bootstrap.scss b/scss/bootstrap.scss index 6c8445ee5..b19aa2dda 100644 --- a/scss/bootstrap.scss +++ b/scss/bootstrap.scss @@ -20,6 +20,7 @@ @import "dropdown"; @import "button-group"; @import "input-group"; +@import "custom-forms"; @import "nav"; @import "navbar"; @import "card"; |
