Я пытаюсь настроить кнопку загрузки файлов на свои личные предпочтения, но я не мог найти действительно надежных способов сделать это без JS. Я нашел два другие вопросы по этому вопросу, но ответы там либо включали JavaScript, либо предлагали Подход Quirksmode.
Моя основная проблема с этим подходом Quirksmode заключается в том, что кнопка файла по-прежнему будет иметь размеры, определенные браузером, поэтому она не будет автоматически настраиваться на все, что используется как кнопка, расположенная под ней. Я создал код на основе этого, но он просто займет пространство, в которое обычно будет зависеть файл, поэтому он вообще не будет заполнять родительский div, как я этого хочу.
HTML:
<div class="myLabel">
<input type="file"/>
<span>My Label</span>
</div>
CSS
.myLabel {
position: relative;
}
.myLabel input {
position: absolute;
z-index: 2;
opacity: 0;
width: 100%;
height: 100%;
}
Эта сценария демонстрирует, как этот подход является довольно ошибочным. В Chrome, нажав кнопку !!
ниже второй демонстрационной кнопки, все равно откроется диалоговое окно файла, но также и во всех других браузерах кнопка с файлом не займет правильные области кнопки.
Есть ли более надежный способ стилизации кнопки загрузки файла без какого-либо JavaScript, и желательно использовать как можно меньше "хакерского" кодирования (так как хакинг обычно приносит другие проблемы вместе с ним, например, те, что в скрипке)