Стилизация поля выбора файла
Скопировано
<div class='file_drop_area'>
<span class='btn'>Выберите файл</span>
<span class='file_msg'>или перетащите сюда</span>
<input type='file' class='file_input'>
</div>
Показать код
Скопировано
body {
font: 16px/1 Arial,sans-serif;
padding: 50px 20px;
}
.file_drop_area {
position: relative;
display: flex;
align-items: center;
justify-content: center;
max-width: 900px;
height: 200px;
border: 1px solid #777;
}
.file_drop_area.active {
background: cornsilk;
}
.file_input {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
cursor: pointer;
opacity: 0;
}
.file_input:focus {
outline: none;
}
.btn {
display: inline-block;
padding: 5px 10px;
margin-right: 20px;
font-weight: bold;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.3);
-webkit-box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2), inset 0 0 6px 0 rgba(255, 255, 255, 0.3), 0 1px 2px rgba(0, 0, 0, 0.4);
-moz-box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2), inset 0 0 6px 0 rgba(255, 255, 255, 0.3), 0 1px 2px rgba(0, 0, 0, 0.4);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2), inset 0 0 6px 0 rgba(255, 255, 255, 0.3), 0 1px 2px rgba(0, 0, 0, 0.4);
background: #f6f6f6;
background: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#d4d4d4));
background: -webkit-linear-gradient(#f6f6f6, #d4d4d4);
background-image: -moz-linear-gradient(top, #f6f6f6, #d4d4d4);
background-image: -moz-gradient(top, #f6f6f6, #d4d4d4);
border: 1px solid #a1a1a1;
}
Показать код
Скопировано
jQuery(function($){
var $fileInput = $( '.file_input' );
var $droparea = $( '.file_drop_area' );
// выделяем область визуально при активации
$fileInput.on( 'dragenter click', function() {
$droparea.addClass('active');
});
// назад к нормальному состоянию
$fileInput.on( 'dragleave drop', function() {
$droparea.removeClass( 'active' );
});
// при выборе файла подставляем его имя
$fileInput.on( 'change', function() {
$droparea.removeClass( 'active' );
var fileName = $(this).val().split('\\').pop();
var text = fileName ? fileName : 'или перетащите сюда';
$(this).prev().text( text );
});
});
Показать код