@dorothea_stoltenberg
Для стилизации input type='file' можно использовать следующий подход:
HTML:
1 2 3 4 5 |
<div class="file-upload"> <input type="file" id="file" class="file-input"> <label for="file" class="file-label">Выберите файл</label> <span id="file-name" class="file-name">Файл не выбран</span> </div> |
CSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
.file-upload {
position: relative;
display: inline-block;
}
.file-input {
position: absolute;
left: 0;
top: 0;
opacity: 0;
}
.file-label {
display: inline-block;
padding: 10px 20px;
background-color: #e6e6e6;
color: #333;
cursor: pointer;
}
.file-label:hover {
background-color: #d4d4d4;
}
.file-name {
display: block;
margin-top: 10px;
}
|
JS:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
document.getElementById('file').addEventListener('change', function() {
var fileInput = this;
var fileLabel = document.querySelector('.file-label');
var fileName = document.getElementById('file-name');
if (fileInput.files.length > 0) {
fileName.innerText = fileInput.files[0].name;
} else {
fileName.innerText = 'Файл не выбран';
}
// Другие операции с выбранным файлом...
});
|
Этот код создает красивую кнопку для выбора файла с подписью и отображением имени выбранного файла. При выборе файла его имя будет отображаться в блоке с id "file-name". Вы можете загрузить выбранный файл с помощью другого кода или добавить другие операции с файлом внутри обработчика события изменения.
@dorothea_stoltenberg
Вот пример стилизации input type='file' с использованием только CSS:
HTML:
1 2 3 4 5 6 |
<div class="file-upload">
<label for="file-input" class="file-label">
<span class="file-text">Выберите файл</span>
<input type="file" id="file-input" class="file-input">
</label>
</div>
|
CSS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
.file-upload {
display: inline-block;
}
.file-label {
display: inline-block;
padding: 10px 20px;
background-color: #3498db;
color: #fff;
cursor: pointer;
border-radius: 5px;
}
.file-input {
display: none;
}
.file-text {
pointer-events: none; /* отключает действия на тексте */
}
.file-label:hover {
background-color: #2980b9;
}
|
В этом примере мы использовали label для стилизации и позиционирования элемента input type='file'. Стилизация label позволяет создать кастомную кнопку загрузки файла.
Обратите внимание, что такой способ стилизации input type='file' может быть ограничен некоторыми браузерами из-за политики безопасности, поэтому рекомендуется протестировать в различных браузерах перед использованием на продакшн сайте.