.#{$prefix}textfield { .#{$prefix}input-wrap-el { flex: 1 1 auto; display: flex; overflow: hidden; } .#{$prefix}underline-el { position: absolute; bottom: 0; left: 0; right: 0; &:before, &:after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 100%; } } &.#{$prefix}animate-underline { .#{$prefix}underline-el:before { transform: scaleX(0); } &.#{$prefix}focused .#{$prefix}underline-el:before { transform: scaleX(1); } } .#{$prefix}input-el { background-color: transparent; color: inherit; outline: none; border: 0; margin: 0; // Overrides the browsers default size for the input element, allowing it to // be shrunk by the owning layout. The default size of the field body is // determined by $textfield-body-width width: 0; flex: 1 1 auto; // IE11 does not respect line-height on input elements. To workaround the issue // we use content-box model and set min-height in addition to line-height box-sizing: content-box; &::-ms-clear { display: none; } } &.#{$prefix}text-align-left .#{$prefix}input-el { text-align: left; } &.#{$prefix}text-align-center .#{$prefix}input-el { text-align: center; } &.#{$prefix}text-align-right .#{$prefix}input-el { text-align: right; } .#{$prefix}before-input-el, .#{$prefix}after-input-el { display: flex; } // The default flex value in IE is not enforcing container to take width from children // Need to explicitly set flex value to none .#{$prefix}ie11 & { .#{$prefix}before-input-el, .#{$prefix}after-input-el { flex: none; } } .#{$prefix}chrome &, .#{$prefix}chromemobile & { .#{$prefix}input-el { &:-webkit-autofill { animation-name: onAutoFillStart; } } } &.#{$prefix}label-align-placeholder .#{$prefix}label-el { position: relative; z-index: 2; pointer-events: none; } &.#{$prefix}label-align-placeholder .#{$prefix}input-el { &::-webkit-input-placeholder { opacity: 1; transition: opacity .4s; } &::-moz-placeholder { opacity: 1; transition: opacity .4s; } &:-ms-input-placeholder { opacity: 1; transition: opacity .4s; } } &.#{$prefix}label-align-placeholder.#{$prefix}label-inside .#{$prefix}input-el { &::-webkit-input-placeholder { opacity: 0; } &::-moz-placeholder { opacity: 0; } &:-ms-input-placeholder { opacity: 0; } } } @keyframes onAutoFillStart { from {/**/} to {/**/} }