.#{$prefix}form-file-btn { overflow: hidden; } .#{$prefix}form-file-input { border: 0; // disables the focus border in old IE position: absolute; cursor: pointer; // some browsers (I'm looking at you Firefox) add extra space around the file button // that can't be removed using CSS. Others (webkit) add default margin. Rather than // try to handle each browser's unique case, we just negatively position the input to // ensure that there is no extra space between it and the Button's edge top: -2px; right: -2px; @include opacity(0); /* Yes, there's actually a good reason for this... * If the configured buttonText is set to something longer than the default, * then it will quickly exceed the width of the hidden file input's "Browse..." * button, so part of the custom button's clickable area will be covered by * the hidden file input's text box instead. This results in a text-selection * mouse cursor over that part of the button, at least in Firefox, which is * confusing to a user. Giving the hidden file input a huge font-size makes * the native button part very large so it will cover the whole clickable area. */ font-size: 1000px; } @if $include-rtl { .#{$prefix}rtl.#{$prefix}form-file-input { right: auto; left: -2px; } }