Хорошо, очень простой чистый CSS-способ создания пользовательского входного файла.
Используйте ярлыки, но, как вы знаете из предыдущих ответов, ярлык не вызывает onclick
Функция в Firefox, может быть ошибкой, но не имеет значения при следующем.
<label for="file" class="custom-file-input"><input type="file" name="file" class="custom-file-input"></input></label>
То, что вы делаете, это стиль этикетки, чтобы выглядеть так, как вы хотите
.custom-file-input {
color: transparent;/* This is to take away the browser text for file uploading*/
/* Carry on with the style you want */
background: url(../img/doc-o.png);
background-size: 100%;
position: absolute;
width: 200px;
height: 200px;
cursor: pointer;
top: 10%;
right: 15%;
}
теперь просто скрыть фактическую кнопку ввода, но вы не можете установить ее на visability: hidden
Так что сделайте невидимым, установив opacity: 0;
input.custom-file-input {
opacity: 0;
position: absolute;/*set position to be exactly over your input*/
left: 0;
top: 0;
}
теперь, как вы могли заметить, у меня на ярлыке тот же класс, что и у поля ввода, потому что я хочу, чтобы оба элемента имели одинаковый стиль, поэтому, когда бы вы ни щелкали на ярлыке, вы на самом деле нажимаете в невидимом поле ввода.