mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
Using the :active pseudo works fine for desktop, but mobile is a completely different beast, especially with the quirks of each platform. By intentionally not using any :active selectors and manually adding/removing a .active class, it gives us a precise control on how the active state works for ALL platforms. Additionally, this places less selectors in the css, and reduces the possibility of unnecessary repaints. Currently this method of using .active instead of :active is being applied to .button and .item elements.
279 lines
5.2 KiB
SCSS
279 lines
5.2 KiB
SCSS
/**
|
|
* Forms
|
|
* --------------------------------------------------
|
|
*/
|
|
|
|
// Make all forms have space below them
|
|
form {
|
|
margin: 0 0 $line-height-base;
|
|
}
|
|
|
|
// Groups of fields with labels on top (legends)
|
|
legend {
|
|
display: block;
|
|
margin-bottom: $line-height-base;
|
|
padding: 0;
|
|
width: 100%;
|
|
border: $input-border-width solid $input-border;
|
|
color: $dark;
|
|
font-size: $font-size-base * 1.5;
|
|
line-height: $line-height-base * 2;
|
|
|
|
small {
|
|
color: $stable;
|
|
font-size: $line-height-base * .75;
|
|
}
|
|
}
|
|
|
|
// Set font for forms
|
|
label,
|
|
input,
|
|
button,
|
|
select,
|
|
textarea {
|
|
@include font-shorthand($font-size-base, normal, $line-height-base); // Set size, weight, line-height here
|
|
}
|
|
input,
|
|
button,
|
|
select,
|
|
textarea {
|
|
font-family: $font-family-base; // And only set font-family here for those that need it (note the missing label element)
|
|
}
|
|
|
|
|
|
// Input List
|
|
// -------------------------------
|
|
|
|
.item-input {
|
|
@include display-flex();
|
|
@include align-items(center);
|
|
position: relative;
|
|
overflow: hidden;
|
|
padding: 6px 8px 5px;
|
|
|
|
input {
|
|
@include border-radius(0);
|
|
@include flex(1, 0, 220px);
|
|
@include appearance(none);
|
|
margin: 0;
|
|
background-color: transparent;
|
|
}
|
|
|
|
.button .icon {
|
|
@include flex(0, 0, 24px);
|
|
position: static;
|
|
display: inline-block;
|
|
height: auto;
|
|
text-align: center;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.button-bar {
|
|
@include border-radius(0);
|
|
@include flex(1, 0, 220px);
|
|
@include appearance(none);
|
|
}
|
|
|
|
.icon {
|
|
min-width: 14px;
|
|
}
|
|
}
|
|
|
|
.item-input-inset {
|
|
@include display-flex();
|
|
@include align-items(center);
|
|
position: relative;
|
|
overflow: hidden;
|
|
padding: ($item-padding / 3) * 2;
|
|
}
|
|
|
|
.item-input-wrapper {
|
|
@include display-flex();
|
|
@include flex(1, 0);
|
|
@include align-items(center);
|
|
@include border-radius(4px);
|
|
padding-right: 8px;
|
|
padding-left: 8px;
|
|
background: #eee;
|
|
}
|
|
|
|
.item-input-inset .item-input-wrapper input {
|
|
padding-left: 4px;
|
|
height: 29px;
|
|
background: inherit;
|
|
line-height: 18px;
|
|
}
|
|
|
|
.item-input-wrapper ~ .button {
|
|
margin-left: ($item-padding / 3) * 2;
|
|
}
|
|
|
|
.input-label {
|
|
@include flex(1, 0, 100px);
|
|
padding: 7px 10px 7px 3px;
|
|
max-width: 200px;
|
|
color: $input-label-color;
|
|
font-weight: bold;
|
|
font-size: $font-size-base;
|
|
}
|
|
|
|
.placeholder-icon {
|
|
color: #aaa;
|
|
&:first-child {
|
|
padding-right: 6px;
|
|
}
|
|
&:last-child {
|
|
padding-left: 6px;
|
|
}
|
|
}
|
|
|
|
.item-stacked-label {
|
|
display: block;
|
|
background-color: transparent;
|
|
box-shadow: none;
|
|
|
|
.input-label, .icon {
|
|
display: inline-block;
|
|
padding: 4px 0;
|
|
vertical-align: middle;
|
|
}
|
|
}
|
|
|
|
.item-stacked-label input,
|
|
.item-stacked-label textarea
|
|
{
|
|
@include border-radius(2px);
|
|
overflow: hidden;
|
|
padding: 4px 8px 3px;
|
|
border: none;
|
|
background-color: $input-bg;
|
|
}
|
|
.item-stacked-label input {
|
|
height: $line-height-computed + $font-size-base + 12px;
|
|
}
|
|
|
|
|
|
// Form Controls
|
|
// -------------------------------
|
|
|
|
// Shared size and type resets
|
|
select,
|
|
textarea,
|
|
input[type="text"],
|
|
input[type="password"],
|
|
input[type="datetime"],
|
|
input[type="datetime-local"],
|
|
input[type="date"],
|
|
input[type="month"],
|
|
input[type="time"],
|
|
input[type="week"],
|
|
input[type="number"],
|
|
input[type="email"],
|
|
input[type="url"],
|
|
input[type="search"],
|
|
input[type="tel"],
|
|
input[type="color"] {
|
|
display: block;
|
|
padding-top: 2px;
|
|
height: $line-height-computed + $font-size-base;
|
|
color: $input-color;
|
|
vertical-align: middle;
|
|
font-size: $font-size-base;
|
|
line-height: $font-size-base + 2;
|
|
}
|
|
|
|
input,
|
|
textarea {
|
|
width: 100%;
|
|
}
|
|
|
|
// Reset height since textareas have rows
|
|
textarea {
|
|
height: auto;
|
|
}
|
|
|
|
// Everything else
|
|
textarea,
|
|
input[type="text"],
|
|
input[type="password"],
|
|
input[type="datetime"],
|
|
input[type="datetime-local"],
|
|
input[type="date"],
|
|
input[type="month"],
|
|
input[type="time"],
|
|
input[type="week"],
|
|
input[type="number"],
|
|
input[type="email"],
|
|
input[type="url"],
|
|
input[type="search"],
|
|
input[type="tel"],
|
|
input[type="color"] {
|
|
border: 0;
|
|
}
|
|
|
|
// Position radios and checkboxes better
|
|
input[type="radio"],
|
|
input[type="checkbox"] {
|
|
margin: 0;
|
|
line-height: normal;
|
|
}
|
|
|
|
// Reset width of input images, buttons, radios, checkboxes
|
|
input[type="file"],
|
|
input[type="image"],
|
|
input[type="submit"],
|
|
input[type="reset"],
|
|
input[type="button"],
|
|
input[type="radio"],
|
|
input[type="checkbox"] {
|
|
width: auto; // Override of generic input selector
|
|
}
|
|
|
|
// Make multiple select elements height not fixed
|
|
select[multiple],
|
|
select[size] {
|
|
height: auto;
|
|
}
|
|
|
|
// Set the height of select and file controls to match text inputs
|
|
select,
|
|
input[type="file"] {
|
|
line-height: $input-height-base;
|
|
}
|
|
|
|
// Make select elements obey height by applying a border
|
|
select {
|
|
border: $input-border-width solid $input-border;
|
|
background-color: $input-bg; // Chrome on Linux and Mobile Safari need background-color
|
|
}
|
|
|
|
|
|
// Placeholder
|
|
// -------------------------------
|
|
input,
|
|
textarea {
|
|
@include placeholder();
|
|
}
|
|
|
|
|
|
// DISABLED STATE
|
|
// -------------------------------
|
|
|
|
// Disabled and read-only inputs
|
|
input[disabled],
|
|
select[disabled],
|
|
textarea[disabled],
|
|
input[readonly],
|
|
select[readonly],
|
|
textarea[readonly] {
|
|
background-color: $input-bg-disabled;
|
|
cursor: not-allowed;
|
|
}
|
|
// Explicitly reset the colors here
|
|
input[type="radio"][disabled],
|
|
input[type="checkbox"][disabled],
|
|
input[type="radio"][readonly],
|
|
input[type="checkbox"][readonly] {
|
|
background-color: transparent;
|
|
}
|